OIDC - 使用 IdentityServer3 和 Spring Boot 实现 OAuth2
Posted
技术标签:
【中文标题】OIDC - 使用 IdentityServer3 和 Spring Boot 实现 OAuth2【英文标题】:OIDC - Implementing OAuth2 with IdentityServer3 and Spring Boot 【发布时间】:2020-06-11 04:41:17 【问题描述】:我们的应用程序是一个 Spring Boot 应用程序,我们需要以 IdentityServer3 作为提供者来实现 OAuth2 授权。
但是,在一切设置正确后,当重定向到 SSO 系统的登录屏幕时,我们不断收到错误 The client application is not known or is not authorized.
。
使用postman
,我们可以在单击“获取新访问令牌”时访问登录屏幕
使用AdvanceRestClient
,我们得到与我们的 Spring Boot 应用程序相同的错误。
查看这两个工具的日志,我发现在 postman 上,请求会首先 POST 到 Access Token URL,而在 Spring Boot 安全性和 AdvanceRESTClient 上,它会生成一个指向 authorize
URL 的 GET URI .
邮递员示例:
POST https://login.xxx.com.my/LoginHost/core/connect/token
AdvanceRESTClient 首次请求示例:
GET https://login.xxxx.com.my/LoginHost/core/connect/authorize?response_type=code&client_id=xxx.web&redirect_uri=https%3A%2F%2Fauth.advancedrestclient.com%2Foauth-popup.html&scope=openid%20email%20profile&state=XXX
这令人困惑。哪种行为是正确的?为什么会有不同?
希望任何人都可以提供帮助。谢谢。
* 更新 1 *
邮递员设置:
AdvanceRESTClient:
【问题讨论】:
当您没有发布完整代码、显示您正在实施的流程以及您如何实施流程时,我们该如何回答。请通读***.com/help/how-to-ask 并使用相关信息更新您的问题。 这里的问题不是关于代码,而是关于流程的实现。我们发现AdvanceRESTClient
流程类似于 Spring Boot 安全使用的流程,因此提出了问题。将发布两个工具中使用的配置
【参考方案1】:
查看两个客户端的控制台日志后,问题似乎是由redirect-url
引起的。将 AdvancedRestClient 上的重定向 url 更改为与邮递员设置匹配后,它就可以工作了。
【讨论】:
以上是关于OIDC - 使用 IdentityServer3 和 Spring Boot 实现 OAuth2的主要内容,如果未能解决你的问题,请参考以下文章
IdentityServer3 和通过 OpenIDConnect 进行外部登录
流动客户端主题时如何在 C# HttpClient 中设置 OIDC/OAuth 不记名令牌