设置结束会话端点
Setting end session endpoint
在 DMZ 中配置了 Spring 引导客户端,并且 Spring 使用以下方式配置了安全 OAuth:
issuer-uri: https://authentication_server/auth/realms/my-realm
我从 Spring 安全部门得到这个错误:
The Issuer "https://external_url/auth/realms/my-realm" provided in the configuration metadata did not match the requested issuer "https://authentication_server/auth/realms/my-realm
从this post我了解到我需要指定authorization-uri
、token-uri
和jwk-set-uri
而不是issuer-uri
,然后它也有效。
authorization-uri: https://external_url/auth/realms/my-realm/protocol/openid-connect/auth
token-uri: https://authentication_server/auth/realms/my-realm/protocol/openid-connect/token
jwk-set-uri: https://authentication_server/auth/realms/my-realm/protocol/openid-connect/certs
(我不明白为什么 Spring 安全性在单独设置值时无法使用 issuer-uri
中的相同值自动配置)
现在的问题是注销停止工作。使用 issuer-uri
时,OAuth 是自动配置的,并且 end_session_endpoint
是从答案中获取的,但是在指定每个设置时,无法指定 end_session_endpoint
.
这是 Spring Security OAuth 中的一个突出问题,还是我需要进行不同的配置?
我不得不为此做一些变通。我很快就开始复制现有的 OidcClientInitiatedLogoutSuccessHandler,我已经在配置 LogoutRedirectUri 时使用了它。
我简单地复制了 class 并将方法 endSessionEndpoint()
的实现更改为 return 由我们的 OAuth 服务器 return 编辑的 URI 作为 end_session_endpoint
.
这个问题是tracked in spring-security GitHub。
可能的修复是 allowing to add "Additional attributes for ClientRegistration and ProviderDetails".
在 DMZ 中配置了 Spring 引导客户端,并且 Spring 使用以下方式配置了安全 OAuth:
issuer-uri: https://authentication_server/auth/realms/my-realm
我从 Spring 安全部门得到这个错误:
The Issuer "https://external_url/auth/realms/my-realm" provided in the configuration metadata did not match the requested issuer "https://authentication_server/auth/realms/my-realm
从this post我了解到我需要指定authorization-uri
、token-uri
和jwk-set-uri
而不是issuer-uri
,然后它也有效。
authorization-uri: https://external_url/auth/realms/my-realm/protocol/openid-connect/auth
token-uri: https://authentication_server/auth/realms/my-realm/protocol/openid-connect/token
jwk-set-uri: https://authentication_server/auth/realms/my-realm/protocol/openid-connect/certs
(我不明白为什么 Spring 安全性在单独设置值时无法使用 issuer-uri
中的相同值自动配置)
现在的问题是注销停止工作。使用 issuer-uri
时,OAuth 是自动配置的,并且 end_session_endpoint
是从答案中获取的,但是在指定每个设置时,无法指定 end_session_endpoint
.
这是 Spring Security OAuth 中的一个突出问题,还是我需要进行不同的配置?
我不得不为此做一些变通。我很快就开始复制现有的 OidcClientInitiatedLogoutSuccessHandler,我已经在配置 LogoutRedirectUri 时使用了它。
我简单地复制了 class 并将方法 endSessionEndpoint()
的实现更改为 return 由我们的 OAuth 服务器 return 编辑的 URI 作为 end_session_endpoint
.
这个问题是tracked in spring-security GitHub。 可能的修复是 allowing to add "Additional attributes for ClientRegistration and ProviderDetails".