我正在尝试使用Keycloak API(通过keycloak-admin库在节点中),但是我系统地收到错误403。
我通过图书馆成功获得了访问令牌;通过调用/auth/realms/master/protocol/openid-connect/token
(在主领域)。
当我查看令牌内部时,我似乎具有能够查询用户的正确角色:
{ "jti": "xx-..", "exp": 1585561478, "nbf": 0, "iat": 1585561418, "iss": "https://auth-mycompany.com/auth/realms/master", "aud": "mycompany-realm", "sub": "xx-..", "typ": "Bearer", "azp": "admin-cli", "auth_time": 0, "session_state": "xx-..", "acr": "1", "resource_access": { "mycompany-realm": { "roles": [ "view-users", "query-groups", "query-users" ] } }, "scope": "email profile", "email_verified": true, "name": "myname", "preferred_username": "myname", "given_name": "my name", "email": "myemail@mycompany.com" }
但是,当我在https://auth-mycompany.com/auth/admin/realms/master/users或https://auth-mycompany.com/auth/admin/realms/mycompany/users上进行GET
时;我收到403错误。
也许它与我的令牌的“ aud”相关联?查询主域时,为什么为什么获得带有“ aud”:“ mycompany-realm”的令牌?
感谢您的帮助。
答案 0 :(得分:-1)
我最终意识到这是由于我为管理端点实现了Port Restriction。如文档中所述,所有以/auth/admin
开头的端点都得到一个403
响应。而是可以通过Internet上不可访问的另一个端口(例如9991
)访问这些端点。
我为解决此问题所做的工作:由于我的 Nodejs 服务和密钥斗篷服务器都在同一 kubernetes 集群上运行,因此我更改了authUrl
服务名称为http://servicename.namespace.svc.cluster.local:9991/auth