【发布时间】:2016-04-18 19:08:39
【问题描述】:
我已遵循本指南http://spring.io/guides/tutorials/spring-boot-oauth2 并可以使其与 Facebook 和 Github 一起使用,但我想使用 GLuu 作为我的内部身份验证提供程序,以使用我的 Spring Boot Web 应用程序执行 OpenID Connect。我已将 Gluu 配置为返回两种响应类型 授权码授予类型和 ID Token 和我将身份验证方法设置为 client_secret_basic。我不确定我必须在 spring 客户端 web 应用程序端做哪些额外的配置,但我认为根据指南我可以做一个最小的配置,只需设置
security.oauth2.client.client-id=
security.oauth2.client.client-secret=
security.oauth2.client.access-token-uri=https://mygluuServer/oxauth/seam/resource/restv1/oxauth/token
security.oauth2.client.user-authorization-uri=https://mygluuServer/oxauth/seam/resource/restv1/oxauth/authorize
security.oauth2.resource.user-info-uri=https://mygluuServer/oxauth/seam/resource/restv1/oxauth/userinfo
security.oauth2.client.scope=openid
当我导航到我的 Spring Boot Web 应用程序时,我被重定向到 gluu 进行身份验证,但在我进行身份验证后它不会提示我批准共享我的 openid 信息它只是将我重定向回 Spring Boot 应用程序并给我错误..身份验证失败:无法获取访问令牌
有没有人成功使用 Gluu 来保护使用 OpenID Connect 的 Spring Boot Web 应用程序?
【问题讨论】:
-
在 Spring Boot 端将日志记录调高到跟踪级别后,我开始了解问题所在,但不知道如何解决。 /oxauth/authorize 端点被正确调用,Gluu 发回授权码和 session_ID。问题是当 Spring 回调 oxauth/token 端点时......这是错误
-
2016-01-14 12:20:31.339 DEBUG 6987 --- [nio-8443-exec-6] gcAuthorizationCodeAccessTokenProvider :编码和发送形式:{grant_type=[authorization_code],code=[ 09140630-c1d1-42c4-a5fa-354609cad5ab], redirect_uri=[magellan:8443/login], client_id=[@!1565.489B.E582.E70F!0001!156A.784D!0008!922A.2F73], client_secret=[superSecret]} 2016 -01-14 12:20:31.351 调试 6987 --- [nio-8443-exec-6] uth2ClientAuthenticationProcessingFilter:身份验证请求失败:org.springframework.security.authentication.BadCredentialsException:无法获取访问令牌 201
-
因此,如果我在第一次重定向浏览器后通过 Gluu 进行身份验证后理解正确,则浏览器将获得 Cookie,因此浏览器已通过 Gluu 身份验证,但 Spring Boot Client 不是。在对 Gluu 进行身份验证后,Gluu 使用 auth_code 和 session_id 重定向回 spring boot /login url,然后 spring boot 向 /oxauth/token 端点发布一个帖子,但我认为它被阻止了,因为 spring boot 客户端尚未对 Gluu 进行身份验证。 /oxauth/token 端点不应该对所有请求开放并且不需要身份验证吗?
标签: spring-security oauth-2.0 spring-boot openid-connect