访问令牌实现的spring security openid连接请求不符合cas api要求

Posted

技术标签:

【中文标题】访问令牌实现的spring security openid连接请求不符合cas api要求【英文标题】:spring security openid connect request for access token implementation doesn't align cas api requirement 【发布时间】:2021-08-08 16:55:58 【问题描述】:

我正在通过授权代码流的 openid 连接将 Spring Security 与 CAS 集成。根据openid连接协议,有以下步骤:

    .... 浏览器从 OpenID Provider 获取身份验证和代码 浏览器将代码发送给客户端 客户端向 OpenID 提供者发出令牌请求以获取访问令牌。 ....

问题发生在第 4 步。Spring Security 发出请求并将 grant_type、代码信息放入正文而不是 url。但 CAS 要求将代码信息放入 url。 [CAS API for Authorization Code]

有没有人遇到过这种情况?任何建议表示赞赏

【问题讨论】:

【参考方案1】:

您可以在初始身份验证请求期间使用 response_mode 参数控制将代码传递给客户端的方式。

它指定了用于将生成的授权代码发送回您的应用程序的方法。可以是 form_postfragment。对于 Web 应用程序,我们建议使用 response_mode=form_post,以确保最安全地将令牌传输到您的应用程序。

【讨论】:

感谢您回答这个问题。我只是使用 response_mode=form_post 进行测试,并且在步骤 2 中通过 CAS 重定向后参数被放弃。因此以下步骤仍然以相同的方式出现错误。如果我犯了任何错误,请纠正我。 尝试将其设置为 form_post=fragment ,然后它将在 URL 中而不是请求正文中传递(如果支持)

以上是关于访问令牌实现的spring security openid连接请求不符合cas api要求的主要内容,如果未能解决你的问题,请参考以下文章

Spring Security OAuth2何时检查访问令牌到期?

使用 Spring Security 3 在我的 Grails OAuth 提供程序上存储访问令牌

使用 Spring Security OAuth2 进行访问令牌请求的 JWT 不记名交换

Spring Security OAuth 2:如何在 oauth/token 请求后获取访问令牌和附加数据

在 Spring Security 中获取访问令牌

如何使用 Spring boot keycloak 适配器 + spring security 强制更新 oAuth 令牌(访问令牌 + 刷新令牌)。?