哪个层检查隐式授权OAuth 2.0流中的访问令牌?

时间:2018-02-12 11:35:19

标签: oauth oauth-2.0

上下文 : 用户试图在浏览器中访问网站“A”,但“A”依赖于另一个Web应用程序“B”(身份验证服务器)进行身份验证。使用“隐式授权”OAuth 2.0流程授权用户。

问题: 当用户第一次访问网站“A”中的网页时,网站“A”如何知道此第一次请求没有有效的访问令牌,然后将此请求重定向到网站“B”?

  

网站“A”的“网络服务器”是否对访问令牌进行了此检查?

2 个答案:

答案 0 :(得分:1)

JavaScript应用程序"网站A"可能会将访问令牌及其到期时间保留在某处 - 例如session storage。因此,在加载时,应用程序可以检查访问令牌的存在及其到期时间。到期时间与来自身份验证提供程序的重定向URL(expires_in参数)中的令牌一起提供。

答案 1 :(得分:1)

隐含流量解决方案

此解决方案由Web应用程序使用,其中Web服务器上没有代码执行 - 您的Web UI是单页应用程序 - 这与您的解决方案完全相同吗?

  • '网站A'将是您的客户端Javascript UI - 用户登录然后获取访问令牌
  • '网络应用程序B' - 身份验证服务器 - 将是向您的Javascript UI发出访问令牌的第三方系统
  • API将是您的服务器端代码 - 它从客户端UI接收访问令牌,验证令牌,然后将数据返回到UI

服务器端WEB应用程序解决方案

如果您的解决方案与上述解决方案不同,那么听起来您有一个服务器端Web应用程序 - 在这种情况下,Implicit Flow不是正确的解决方案。

如果您确定拥有单页应用

使用OAuth 2.0和Open Id Connect与单页应用程序有一点学习曲线。我会推荐优秀的OIDC Client Library,它会为你做很多工作。

出于兴趣,我已经围绕OAuth 2.0解决方案编写了详细的博客+代码示例,包括SPA。我希望您可以浏览它以提高您的理解 - 可以从This Overview开始。