【发布时间】:2020-07-10 19:30:58
【问题描述】:
我正在尝试使用 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" 的令牌?
感谢您的帮助。
【问题讨论】:
-
aud表示访问令牌的受众字段,所以没有错。从master领域获取令牌并再次触发相同的查询,看看它是否工作。 -
我还以为我已经拿到了主域的令牌……为什么你认为它不是来自主域的令牌?在 keycloak 日志中,我可以在主域上看到相应的 LOGIN 事件。
-
正确领域的正确令牌,令牌的寿命是多少?
-
令牌长一分钟;当我调用 /users 端点时它没有过期..
-
所以你没有任何单一的 rest-api 使用这个令牌?如果不尝试使用 admin-cli 工具,是否可以创建新领域或用户?