【问题标题】:How to know if the oauth access token is expired如何知道 oauth 访问令牌是否已过期
【发布时间】:2016-06-07 11:05:52
【问题描述】:

说明

在 Web Api 项目模板中,向 Token 端点:www.mycoolwebsite.com/Token 发送POST 请求后,我们得到一个类似这样的 Json:

{
   "access_token":"qkRwQD0A85...",
   "token_type":"bearer",
   "expires_in":14,
   "userName":"admin@mycoolwebsite.com",
   ".issued":"Wed, 24 Feb 2016 18:15:53 GMT",
   ".expires":"Wed, 24 Feb 2016 18:16:08 GMT"
}

在客户端,(假设是移动应用程序)我将此 json 保存在一个文件中,并查看令牌是否已过期,我将 DateTime.UtcNow 与令牌的 .expires 密钥进行比较。

问题

这是查看访问令牌是否过期的正确方法吗?

如果没有,最好的检查方法是什么?

【问题讨论】:

    标签: asp.net asp.net-web-api oauth oauth-2.0 asp.net-web-api2


    【解决方案1】:

    我不会检查访问令牌的到期时间。与其建立一个机制来检查过期时间并进行处理,不如直接将你拥有的访问令牌发送到 API,如果你得到一个 401,请求一个新的访问令牌。无论如何,您都必须构建逻辑来处理 401……为什么不依赖它呢?

    【讨论】:

    • 我同意@sdoxsee access_token 对客户端应该是不透明的。该字符串通常对客户端是不透明的。 (tools.ietf.org/html/rfc6749#section-1.4)
    • @sdoxsee 服务器也会为其他未经授权的资源访问返回 401,即使令牌有效也是如此。另外,我的移动应用程序将此令牌存储在一个变量中,只要此变量不是null,应用程序就会认为用户已登录,即使令牌已过期。所以我想知道从移动客户端登录/注销用户的最佳机制是什么?谢谢
    • @AliSharabiani 规范说 401 用于无效令牌,而 403 用于范围不足(即特权)tools.ietf.org/html/rfc6750#section-3.1。处理身份验证(登录/注销)是另一回事。 OAuth2 不打算直接用于身份验证。 OpenID Connect 在 OAuth2 之上添加了一个身份验证层。我不确定您是否可以更改您的授权服务器,但这里是 .NET OpenID Connect 的介绍:vimeo.com/113604459
    猜你喜欢
    • 2018-02-17
    • 1970-01-01
    • 2015-08-29
    • 2012-02-15
    • 1970-01-01
    • 2014-01-01
    • 1970-01-01
    • 2014-05-13
    • 1970-01-01
    相关资源
    最近更新 更多