目录

一 注解 @EnableResourceServer 的配置

1.1 配置资源服务

1.1.1 使用

1.1.2 属性介绍

1.1.3 配置操作

 1.2 验证令牌token

1.2.1 属性配置

1.2.2 代码操作

 1.3 配置安装策略

  1.4 编写资源

 1.5 启动服务测试

1.5 .1 启动服务

1.5 .2 使用授权码方式获取token

 1.5 .3 携带token访问资源

 1.5 .4  验证token

 1.5 .5  遇到坑


一 注解 @EnableResourceServer 的配置

1.1 配置资源服务

1.1.1 使用

使用注解@EnableResourceServer 注解到一个 @Configuration 配置类上,并且必须使用 ResourceServerConfigurer 这个 配置对象来进行配置(可以选择继承自 ResourceServerConfigurerAdapter 然后覆写其中的方法,参数就是这个 对象的实例)

1.1.2 属性介绍

下面是一些可以配置的属性:
ResourceServerSecurityConfigurer 中主要包括:
tokenServices ResourceServerTokenServices 类的实例,用来实现令牌服务。
tokenStore TokenStore 类的实例,指定令牌如何访问,与 tokenServices 配置可选
resourceId :这个资源服务的 ID ,这个属性是可选的,但是推荐设置并在授权服务中进行验证。
其他的拓展属性例如 tokenExtractor 令牌提取器用来提取请求中的令牌。
HttpSecurity 配置与 Spring Security 类似: 请求匹配器,用来设置需要进行保护的资源路径,默认的情况下是保护资源服务的全部路径。
通过 http.authorizeRequests() 来设置受保护资源的访问规则 ,其他的自定义权限保护规则通过 HttpSecurity 来进行配置。
@EnableResourceServer 注解自动增加了一个类型为 OAuth2AuthenticationProcessingFilter 的过滤器链

1.1.3 配置操作

新建一个ResouceServerConfig配置类,加上注解 @EnableResourceServer

 1.2 验证令牌token

1.2.1 属性配置

ResourceServerTokenServices 是组成授权服务的另一半。
1. 如果你的授权服务和资源服务在同一个应用程序上的 话,你可以使用 DefaultTokenServices ,这样的话,你就不用考虑关于实现所有必要的接口的一致性问题。
2. 如果你的授权服务和资源服务是分离开的,那么你就必须要确保能够 匹配授权服务提供的 ResourceServerTokenServices 它知道如何对令牌进行解码
3.令牌解析方法: 使用 DefaultTokenServices 在资源服务器本地配置令牌存储、解码、解析方式。
4. 使用 RemoteTokenServices 资源服务器通过 HTTP 请求来解码令牌, 每次都请求授权服务器端点 /oauth/check_token,使用授权服务的 /oauth/check_token 端点,你需要在授权服务将这个端点暴露出去,以便资源服务可以进行访问
我们在授权服务(spt-ds-uaa-server )中配置了 /oauth/check_token 和 /oauth/token_key 这两个端点

1.2.2 代码操作

在资源 服务配置 RemoteTokenServices ,在 ResouceServerConfifig 中配置:

 1.3 配置安装策略

  1.4 编写资源

 1.5 启动服务测试

1.5 .1 启动服务

1.5 .2 使用授权码方式获取token

1.访问:http://localhost:53020/uaa/oauth/authorize?client_id=c1&response_type=code&scope=all&redirect_uri=http://www.baidu.com

2.登录

 3.授权

4.授权码:fkg8a5

 5.获取token:67a44089-8343-48a5-ba6d-60df43d03cd7

 1.5 .3 携带token访问资源

按照 oauth2.0 协议要求,请求资源需要携带 token ,如下:
token 的参数名称为: Authorization ,值为: Bearer token
访问地址:
请求方式:GET
参数:Authorization       Bearer 67a44089-8343-48a5-ba6d-60df43d03cd7
Bearer+空格 +上面求得的token值

 1.5 .4  验证token

http://localhost:53020/uaa/oauth/check_token

方式:post

参数:  token=67a44089-8343-48a5-ba6d-60df43d03cd7

 1.5 .5  遇到坑

启动类放到了和controller平级的子目录里,造成访问资源不成功!

 后来发现此问题,将controller,config等目录均放到oauth目录下,将启动类OrderApp和这些目录作为平级,成功解决了问题:

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐