Oauth 2.0 无状态SSO的OpenId连接注销

Oauth 2.0 无状态SSO的OpenId连接注销,oauth-2.0,single-sign-on,jwt,openid-connect,Oauth 2.0,Single Sign On,Jwt,Openid Connect,我正试图在我的一个项目中实现OpenId Connect for SSO。然而,我有点纠结于我想在资源服务器端验证OpenIDJWT令牌以使其无状态的情况。如果用户尝试注销,授权服务器将知道用户注销的情况(相应地,OpenId Connect会话管理规范)。但授权服务器应该如何告诉资源服务器用户的令牌不再有效?当用户注销后带着他的OpenId令牌进入资源服务器并获得访问权限时,就会出现这种情况。这很奇怪,我在互联网上找不到任何解决方案。请帮助我使用中心注销组织无状态安全。您可以使用endpoin

我正试图在我的一个项目中实现OpenId Connect for SSO。然而,我有点纠结于我想在资源服务器端验证OpenIDJWT令牌以使其无状态的情况。如果用户尝试注销,授权服务器将知道用户注销的情况(相应地,OpenId Connect会话管理规范)。但授权服务器应该如何告诉资源服务器用户的令牌不再有效?当用户注销后带着他的OpenId令牌进入资源服务器并获得访问权限时,就会出现这种情况。这很奇怪,我在互联网上找不到任何解决方案。请帮助我使用中心注销组织无状态安全。

您可以使用endpoint来确定传递的访问令牌是否有效。资源服务器可以在授予对资源的访问权之前,调用OP的内省端点来验证令牌。为了有效地验证令牌,资源服务器应该:

  • 成为OP的注册客户端,并与SPA应用程序(隐式流应用程序)具有相同/相似的作用域,以验证传递给它的作用域,并
  • 有权访问内省端点
以上链接的规范中有更多详细信息,以供进一步理解

另外,我前面写的还有一些其他相关参考。

您可以使用endpoint来确定传递的访问令牌是否有效。资源服务器可以在授予对资源的访问权之前,调用OP的内省端点来验证令牌。为了有效地验证令牌,资源服务器应该:

  • 成为OP的注册客户端,并与SPA应用程序(隐式流应用程序)具有相同/相似的作用域,以验证传递给它的作用域,并
  • 有权访问内省端点
以上链接的规范中有更多详细信息,以供进一步理解


另外,我前面写的还有一些其他相关参考。

您可以使用jwt承载流,您可以将ID令牌/断言令牌传递给OP以生成访问令牌。

您可以使用jwt承载流,您可以将ID令牌/断言令牌传递给OP,以生成访问令牌。

我发现了两个相关主题:但没有一个主题回答了我的问题。ID令牌或访问令牌应该是短期的,正如您已经找到的答案所说:使用短期访问令牌,您的项目必须使用刷新令牌进行调用才能续订,然后授权服务器可以拒绝为注销的用户提供新的访问令牌。谢谢您的回复。不幸的是,它是一个隐式流(依赖方是AngularJS应用程序)。根据OpenId Connect规范,对于这个流,根本不应该使用刷新令牌,因为它是不安全的。这就是为什么这个问题没有答案的原因。有什么想法吗?我发现了两个相关的主题:但没有一个主题回答了我的问题。id_令牌或访问令牌应该是短期的,正如您已经找到的答案所说:使用短期访问令牌,您的项目必须使用刷新令牌进行呼叫才能续订,然后授权服务器可以拒绝为注销的用户提供新的访问令牌。谢谢您的回复。不幸的是,它是一个隐式流(依赖方是AngularJS应用程序)。根据OpenId Connect规范,对于这个流,根本不应该使用刷新令牌,因为它是不安全的。这就是为什么这个问题没有答案的原因。有什么想法吗?谢谢,这是我目前的“B计划”。但如果我开始在令牌内省端点中检查我的令牌,这意味着我应该将关于已发行令牌的信息存储在一个中心位置。这意味着系统将变成有状态的,而不是无状态的。为了使这个系统具有可扩展性,我应该共享我想退出的用户会话。此外,对于从中继方(RP)到资源服务器(RS)的每个请求,RS应该向OP发送另一个请求,这将显著影响流量。您的想法是使系统有状态,但我想使用JWT验证或其他方法使其无状态。先生们,有什么想法吗?有可能使SSO成为无状态的吗?我可能误解了您的要求。但是,您不能在您的场景中将JWT访问令牌用作无状态令牌吗?此链接-包含有关无状态令牌交换的一些信息。希望这对你有帮助,伙计,但是在那篇文章中没有关于如何撤销无状态JWT以便注销的信息。真奇怪。几乎每一篇关于OpenIDConnect的文章都讲述了JWT对于无状态会话有多漂亮,但是没有人能解释关于单次注销的任何内容。刷新令牌不应用于JS应用程序。会话令牌的TTL短会导致糟糕的用户体验。真遗憾,不一定。。如果您正在通过前端检索访问令牌,则可以在当前令牌到期前一分钟通过iframe(幕后)请求新的访问令牌。有许多用于此的前端库实现请参见-(在静默续订下)。用户无需再次登录,只要他们有活动的身份提供者会话,这是我的“B计划”。但如果我开始在令牌内省端点中检查我的令牌,这意味着我应该将关于已发行令牌的信息存储在一个中心位置。这意味着系统将变成有状态的,而不是无状态的。为了使这个系统具有可扩展性,我应该共享我想退出的用户会话。此外,对于从中继方(RP)到资源服务器(RS)的每个请求,RS应该向OP发送另一个请求,这将显著影响流量。您的想法是使系统有状态,但我想使用JWT验证或其他方法使其无状态。先生们,有什么想法吗?有可能使SSO成为无状态的吗?我可能误解了您的要求。但是,您不能在您的场景中将JWT访问令牌用作无状态令牌吗?此链接-包含有关无状态令牌交换的一些信息。希望