【发布时间】:2020-10-02 21:20:53
【问题描述】:
我想做什么:
我有一个接受登录凭据的应用程序:用户的用户名和密码。我有一个内部调用keycloak REST API的rest api:/auth/realms/realmname/protocol/openid-connect/token 并获取该用户的访问令牌。
-
现在我正在构建另一个 REST API 来访问我想要执行以下操作的资源: doSomething(访问令牌,数据)
{
a)
call keycloak API to validate access token and get roles.b) 如果角色 == 经理,流程(数据)
c) else: 返回错误信息。
}
现在,我该怎么做 (a):验证访问令牌并获取与其关联的角色。 我知道我们可以做到:auth/realms/realmname/protocol/openid-connect/userinfo 但这仅提供有关用户的详细信息,例如姓名、电子邮件等,但不显示任何角色。 这是我得到的一个例子:
{
"name": "test user",
"sub": "e2bad34d-a1a9-4d70-ac84-bd3a3246023e",
"email_verified": false,
"preferred_username": "user",
"given_name": "test",
"family_name": "user"
}
正如所见,它根本没有给出角色。然后,我如何判断此访问令牌具有哪些角色?有趣的是,当我搜索这个时,许多资源都在建议上面的 userinfo 端点。但这只是告诉我我提供的访问令牌是有效的。不为此提供角色。 换句话说 - 它验证但不授权。
请提出建议。
谢谢, 阿南德
【问题讨论】:
-
你克服了这个问题吗?
标签: oauth-2.0 keycloak openid-connect keycloak-gatekeeper