【发布时间】:2020-08-31 02:22:02
【问题描述】:
春季 2.2.5.RELEASE 春天网关 - spring-cloud-starter-gateway - 春天云安全 - spring-boot-starter-oauth2-resource-server
SSO:keycloak 8.0.2(码头工人)
我对 spring 网关安全配置有疑问。在我的系统中,代理和防火墙后面有一个 Spring 网关和 Keycloak 实例,我希望它们在专用网络内进行通信。请参阅以下image 对于架构结构。
事实上,在我的私人网络中,由于防火墙规则,我无法访问互联网。
我尝试使用 keycloak 的公共地址作为授权 uri 和 keycloak 的私有地址来配置 spring 提供程序:此配置不起作用,因为似乎authorization-uri 和user-info-uri 必须具有相同的基本url。
security:
oauth2:
client:
...
provider:
myprovider:
authorization-uri: http://sso.domain.it/auth/realms/myrealm/protocol/openid-connect/auth
token-uri:http://sso.private.name/auth/realms/myrealm/protocol/openid-connect/token
jwk-set-uri: http://sso.private.name/auth/realms/myrealm/protocol/openid-connect/certs
user-info-uri: http://sso.private.name/auth/realms/myrealm/protocol/openid-connect/userinfo
user-name-attribute: preferred_username
我得到 401 并且 Keycloak 记录了这个错误:
21:33:20,636 WARN [org.keycloak.events] (default task-14) type=USER_INFO_REQUEST_ERROR, realmId=myrealm, clientId=null, userId=null, ipAddress=x.x.x.x, error=invalid_token, auth_method=validate_access_token
如果我尝试使用 keycloak 公共地址设置 user-info-uri,则身份验证流程可以正常工作(显然删除了防火墙规则)。
工作但不行
security:
oauth2:
client:
...
provider:
myprovider:
authorization-uri: http://sso.domain.it/auth/realms/myrealm/protocol/openid-connect/auth
token-uri: http://sso.private.name/auth/realms/myrealm/protocol/openid-connect/token
jwk-set-uri: http://sso.private.name/auth/realms/myrealm/protocol/openid-connect/certs
user-info-uri: http://sso.domain.it/auth/realms/myrealm/protocol/openid-connect/userinfo
user-name-attribute: preferred_username
【问题讨论】:
标签: java spring security oauth-2.0 gateway