【问题标题】:At the same time , just 1 Access token of 1 user account is accessed my app - Web API (OAuth2)同时,只有 1 个用户帐户的 1 个访问令牌被访问我的应用程序 - Web API (OAuth2)
【发布时间】:2017-04-29 06:23:27
【问题描述】:

我使用 Oauth2 来保护我的 Web API。我的问题是:

用户“A”用帐户“A”登录,访问令牌“A”被授予。用户“B”使用帐户“A”登录,访问令牌“B”被授予。然后两个访问令牌“A”,“B”都可以访问我的资源(同一个帐户“A”)。

如何更改此行为,以便在用户“B”登录时,授予访问令牌 B 并且访问令牌“A”已过期。

谢谢。

【问题讨论】:

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


    【解决方案1】:

    除非您想更改 Web API 以回调授权服务器并检查令牌是否被撤销,否则这并不容易。此外,您还必须更改您的身份验证服务器以根据您的特定规则撤销令牌。

    这违背了 Oauth2.0 规范的原则,因为资源服务器(您的 Web api)在具有有效令牌(即签名正确,未过期)时不必对身份验证服务器进行任何回调并具有正确的范围)。

    我建议 Oauth2.0 在这种情况下可能不是最好的解决方案。

    【讨论】:

    • 哦,RFC 7662 (OAuth 2.0 Token Introspection) 是一个定义 API 的规范,资源服务器使用该 API 从已发布访问令牌的授权服务器获取有关访问令牌的信息。自省 API 应该从资源服务器的 Web API 实现中调用。
    【解决方案2】:

    行为 --- 发布新的访问令牌是否会使现有的访问令牌无效 --- 取决于 OAuth 2.0 服务器实现。 OAuth 2.0 规范 (RFC 6749) 没有对该行为施加任何限制。

    事实上,某个 OAuth 2.0 服务器实现提供了一项功能,使服务器管理员能够配置该行为。详情请见this answer

    【讨论】:

    • 谢谢,那么我该如何配置 OAuth 2.0 服务器,例如:“每个主题的单一访问令牌”?
    • 首先,您必须找到提供该功能的授权服务器实现。如何配置该功能因实现而异。请注意,OAuth 2.0 规范没有提及任何有关行为的内容,因此没有标准化的方式。
    猜你喜欢
    • 2013-04-11
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多