同时,只有1访问令牌的1个用户帐户访问我的应用程序 - Web API(OAuth2)

问题描述:

我使用Oauth2来保护我的Web API。我的问题是:同时,只有1访问令牌的1个用户帐户访问我的应用程序 - Web API(OAuth2)

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

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

谢谢。

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

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

+0

谢谢,那么我如何配置OAuth 2.0服务器,如:“单个访问令牌每个主题”? –

+0

首先,您必须找到提供该功能的授权服务器实施。如何配置功能取决于实现。请注意,OAuth 2.0规范没有提及任何行为,所以没有标准化的方式。 –

这并不容易,除非您想更改您的Web API以回调授权服务器并检查令牌是否被吊销。您也必须更改auth服务器,根据您的特定规则撤消令牌。

这与Oauth2.0规范的不同之处在于资源服务器(您的web api)在拥有有效令牌时不应该将任何调用返回给auth服务器(即正确签名,而不是过期和正确的范围)。

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

+0

感谢您的帮助,@ iandayman。 –

+0

哦,RFC 7662(OAuth 2.0 Token Introspection)是一个规范,它定义了一个API,资源服务器通过该API从获得访问令牌的授权服务器获取有关访问令牌的信息。内省API应该从资源服务器的Web API实现中调用。 –