OAuth2.0与前端无感知token刷新实现

前言

OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛的应用。Facebook、Twitter和Google等各种在线服务都提供了基于OAuth规范的认证机制。

OAuth一般用于面向第三方大范围公开的API中的认证工作。换言之,假设带有用户注册功能的在线服务A(例如腾讯qq)对外公开了API,在线服务B(例如百度网盘)便可使用这些在线服务A的API提供的各种功能。这种情况下,当某个已在qq里注册的用户需要百度网盘的在线服务时,网盘的在线服务就会希望访问qq来使用该用户信息。这时,判断是否允许网盘使用该用户在qq里注册的信息的机制就是OAuth。

OAuth

OAuth的关键是,在使用百度网盘的在线服务时,用户无需再次输入qq的密码。为了实现这一机制,认证过程中会通过qq提供的Web页面,让用户确认是否允许访问向百度网盘的在线服务提供qq账户信息。如果尚未登录qq,则需要用户输入密码,这一过程也是只在qq里完成登录,并不会把密码发送给百度网盘的在线服务。


如果通过OAuth访问成功,网盘就可以从qq中获取一个名为access token的令牌。通过该token,便可访问qq中用户允许访问的信息。

OAuth最主要的优点在于它是一种被广泛认可的认证机制,并且已经实现了标准化。

OAuth2.0的认证流程


其中Resource Owner Password Credential模式就是不存在网站B,客户端直接从用户那里得到密码,并从服务器A那里获取access token。这一授权模式就能够应用在公司内部所开发的客户端应用中。

使用Resource Owner Password Credential模式进行认证时,在访问API时需要将参数以application/x-www-form-urlencoded的形式(也就是表单的形式),进行UTF-8字符编码后向服务器发送

最后的scope一栏用来指定允许访问的权限范围。权限范围的名称可以由在线服务独自定义,可以

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OAuth2.0中,验证JWT Token的方式可以通过配置RemoteTokenServices来实现。当资源服务与授权服务不在同一处时,资源服务可以通过远程请求授权服务来验证JWT Token的有效性。这种方式可以避免资源服务直接解析和验证Token带来的性能压力。 具体实现步骤如下: 1. 在资源服务的配置文件中,配置RemoteTokenServices,设置授权服务的URL、ClientId和ClientSecret等信息。 2. 当资源服务收到请求时,从请求Header中获取JWT Token。 3. 调用RemoteTokenServices的方法,将JWT Token传递给授权服务进行验证。 4. 授权服务验证JWT Token的有效性,并返回验证结果给资源服务。如果Token有效,则资源服务可以继续处理请求;如果Token无效,则资源服务可以拒绝请求或者重新进行身份认证。 通过以上步骤,资源服务可以通过远程请求授权服务来验证JWT Token的有效性,从而确保接收到的Token是合法的。这种方式可以提高系统的性能,尤其在访问量较大时能够减轻资源服务的负担。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [OAuth2.0实战 使用JWT令牌认证](https://blog.csdn.net/Pastxu/article/details/124538331)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [OAuth2.0 - 使用JWT替换Token 及 JWT内容增强](https://blog.csdn.net/qq_43692950/article/details/122525414)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值