OAuth2认证,拿到access_token之后怎么用

ldwqh0 2018-01-03 05:43:42
最近在研究oAuth2。
已经理清楚了 AuthorizationServer,ResourceServer , oAuthClient之间的关系。
也能够自己搭建 AuthorizationServer,ResourceServer,获取access_token等一切正常。

整个项目是用 sprong boot oauth2 搭建的。

但但但。现在问题来了。
我拿到access_token之后怎么用?我在网上找了一大堆资料,大多都只介绍到怎么用access_token获取用户信息,也就是拿用户信息资源,并且实现了单点登录。
但我的resource肯定不只用户信息,还有一些别的资源 。那我怎么在我的客户端中方便的使用获取到的access_token。

主要包括 客户端的access_token的存储,以及access_token的使用!
问题有:
一、如果是web应用,access_token放到前端好吗?个人感觉不太好。
二、如果是客户端服务器向资源服务器发送请求的话,如何优雅的携带access_token? 实际到代码层面 ,是使用 restTemplate ? feign ?或者其它什么技术比较优雅?
三、这个注解有什么用 @EnableOAuth2Client
...全文
2206 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dong_19890208 2018-01-04
  • 打赏
  • 举报
回复
普通客户端,访问普通服务访问如果用Ribbon通过下面定义的restTemplate Bean就可以访问,用feign的话通过定义的接口访问
@Bean
	@LoadBalanced
	public RestTemplate restTemplate() {
		return new RestTemplate();
	}
使用了Spring Cloud OAuth2的客户,Spring 提供了OAuth2RestTemplate,类似的Ribbon通过OAuth2RestTemplate访问资源服务资源的时候就会自动携带已经获取的access_token
@Bean
	@LoadBalanced
	protected OAuth2RestTemplate oAuth2RestTemplate(OAuth2ProtectedResourceDetails resource,
													 OAuth2ClientContext context) {
		return new OAuth2RestTemplate(resource, context);
	}
如果使用feign,需要定义OAuth2FeignRequestInterceptor,这样通过feign访问资源服务资源的时候就也会自动携带已经获取的access_token
@Bean
	public RequestInterceptor oauth2FeignRequestInterceptor(OAuth2ProtectedResourceDetails resource,OAuth2ClientContext context) {
		return new OAuth2FeignRequestInterceptor(context,new resource);
	}
托妞光环 2018-01-04
  • 打赏
  • 举报
回复
引用 3 楼 ldwqh0 的回复:
楼上说的请求头我了解。 但在项目里面,我应该怎么存储这个access_token ? 然后,怎么附加在请求头上? 我研究了一下 OAuthRestTemplate 好像有类似的作用,但还没有搞透彻,有更详细的资源吗? 有了解Spring oAuth2 的大神能不能进来指点一下?
如果用的是普通的access_token,也就是uuid可以选择保存在redis中 如果是jwt生成的不需要保存 因为那一串信息就已经包含到期时间了。 至于怎么传 这个不好意思不知道 这个是app端的事情
ldwqh0 2018-01-04
  • 打赏
  • 举报
回复
楼上说的请求头我了解。 但在项目里面,我应该怎么存储这个access_token ? 然后,怎么附加在请求头上? 我研究了一下 OAuthRestTemplate 好像有类似的作用,但还没有搞透彻,有更详细的资源吗? 有了解Spring oAuth2 的大神能不能进来指点一下?
ldwqh0 2018-01-04
  • 打赏
  • 举报
回复
5楼说的比较靠谱,我正在研究,已经走了一半了。
托妞光环 2018-01-03
  • 打赏
  • 举报
回复
引用 1 楼 qq_33206115 的回复:
每次请求时要在请求体里带过去才能访问
请求头
托妞光环 2018-01-03
  • 打赏
  • 举报
回复
每次请求时要在请求体里带过去才能访问

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧