Oauth 密钥斗篷令牌交换失败,返回“0”;无效的“U令牌”;错误

Oauth 密钥斗篷令牌交换失败,返回“0”;无效的“U令牌”;错误,oauth,keycloak,openid-connect,openid,Oauth,Keycloak,Openid Connect,Openid,我有两个keybeave实例在本地运行。它们通过OIDC连接。到目前为止,一切都正常-我可以通过任何KeyClope实例登录 现在我正在尝试设置,但设置失败,出现“invalid_token”错误。我想做“外部到内部”的令牌交换。以下keydepot日志显示,keydepot使用我提供给另一个keydeport实例的令牌发送HTTP GET请求以获取用户信息: 08:14:36,523 DEBUG http-outgoing-19 >> "GET /auth/realms/

我有两个keybeave实例在本地运行。它们通过OIDC连接。到目前为止,一切都正常-我可以通过任何KeyClope实例登录

现在我正在尝试设置,但设置失败,出现“invalid_token”错误。我想做“外部到内部”的令牌交换。以下keydepot日志显示,keydepot使用我提供给另一个keydeport实例的令牌发送HTTP GET请求以获取用户信息:

08:14:36,523 DEBUG http-outgoing-19 >> "GET /auth/realms/master/protocol/openid-connect/userinfo HTTP/1.1[\r][\n]"
08:14:36,523 DEBUG http-outgoing-19 >> "Authorization: Bearer eyJhbGciOiJSU...[\r][\n]"
答案是401:

08:14:36,530 DEBUG http-outgoing-19 << "HTTP/1.1 401 Unauthorized[\r][\n]"
08:14:36,530 DEBUG http-outgoing-19 << "X-XSS-Protection: 1; mode=block[\r][\n]"
08:14:36,530 DEBUG http-outgoing-19 << "X-Frame-Options: SAMEORIGIN[\r][\n]"
08:14:36,530 DEBUG http-outgoing-19 << "Referrer-Policy: no-referrer[\r][\n]"
08:14:36,530 DEBUG http-outgoing-19 << "Date: Tue, 24 Nov 2020 08:14:36 GMT[\r][\n]"
08:14:36,530 DEBUG http-outgoing-19 << "Connection: keep-alive[\r][\n]"
08:14:36,530 DEBUG http-outgoing-19 << "WWW-Authenticate: Bearer realm="master", error="invalid_token", error_description="Token verification failed"[\r][\n]"
已设置令牌交换的所有权限(否则,它根本不发送请求,并且失败并出现另一个错误)


我错过了什么?非常感谢您的帮助。

我找到了答案。它使用curl工作,因为我使用的是
localhost
,而它在keydove中不工作,因为
keydove
使用的是本地IP地址(
192.168.X
)。核心原因在于必须交换的令牌。字段
iss
必须与发送请求的IP/主机匹配。换句话说,在我用来测试令牌交换的令牌中,
iss
是相等的
http://localhost...
,我还在curl请求中使用了
localhost
。使用从
192.168.XX
发出的令牌后,令牌交换开始工作

事实上,从安全角度来看,这完全有道理。只有令牌的颁发者才能使用令牌获取用户信息

curl -X GET 'http://localhost:8050/auth/realms/master/protocol/openid-connect/userinfo' \
 -H 'Authorization: Bearer eyJhbGciOiJSUzI1N...'

{"name":"r o","sub":"fff41a6f-6910-4419-8d46-7630b57ed420","email_verified":true,"preferred_username":"ttt","given_name":"r","family_name":"o"}