Keycloak-使用Nginx代理时无效的令牌

时间:2020-08-10 08:27:36

标签: authentication nginx keycloak

我正在尝试使用nginx作为代理来设置Keycloak。

这个想法是使用javascript适配器登录到Web应用,然后对于每个API请求,nginx应该询问Keycloak令牌是否有效(会话可以被撤销,等等)。

我在本地没有设置nginx的情况下进行了设置-我的VM上有密钥斗篷,并且我使用了密钥斗篷Gatekeeper来代理API请求。它没有任何问题。

然后,我部署了在集群上和nginx中使用js适配器的Keycloak和Web应用程序,代理了登录所需的URL。接下来,我将auth模块配置为使用grant_type = urn:ietf:params:oauth:grant-type:uma-ticket调用/ auth / realms / cerulean-magnolia / protocol / openid-connect / token。可能会有更好的端点可以调用,但无论如何我总是得到invalid_grant无效的承载令牌。

登录有效,但是当我尝试使用生成的令牌时,该令牌将无效并且无法使用。

我将PROXY_ADDRESS_FORWARDING设置为true。

任何使用此令牌的尝试都会导致获得:

{
    "error": "invalid_grant",
    "error_description": "Invalid bearer token"
}

如果我要使用密码手动(通过转发端口)生成此令牌:

curl -L -X POST 'https://localhost:8141/auth/realms/cerulean-magnolia/protocol/openid-connect/token' \
-H 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'client_id=lei' \
--data-urlencode 'grant_type=password' \
--data-urlencode 'scope=openid' \
--data-urlencode 'username=...' \
--data-urlencode 'password=...' --insecure | jq

,然后使用此令牌执行操作:

http --verify=no -f https://localhost:8141/auth/realms/cerulean-magnolia/protocol/openid-connect/token grant_type=urn:ietf:params:oauth:grant-type:uma-ticket audience=lei-api response_mode=decision  authorization:"Bearer ..."

工作正常。但是,如果我使用通过Web应用程序生成的令牌,则总会得到401。

如果有任何帮助或提示,我将不胜感激。

预先感谢, 帕特里克

0 个答案:

没有答案