KeyClope-接收JWT令牌中的帐户服务角色,但需要自定义角色
我使用keydove对用户进行身份验证。我创建了新领域(Efairy领域)、客户端(Efairy后端)和新角色(用户、主持人、管理员)。看起来是这样的: 问题从access_令牌开始:KeyClope-接收JWT令牌中的帐户服务角色,但需要自定义角色,jwt,authorization,keycloak,Jwt,Authorization,Keycloak,我使用keydove对用户进行身份验证。我创建了新领域(Efairy领域)、客户端(Efairy后端)和新角色(用户、主持人、管理员)。看起来是这样的: 问题从access_令牌开始: { "exp": 1619466995, "iat": 1619466935, "jti": "fcd20273-fb45-408c-9e20-126653d69719", "iss": &qu
{
"exp": 1619466995,
"iat": 1619466935,
"jti": "fcd20273-fb45-408c-9e20-126653d69719",
"iss": "http://localhost:8082/auth/realms/efairy-realm",
"aud": "account",
"sub": "b1d89dc2-c12d-4c80-beed-c9a6065ec604",
"typ": "Bearer",
"azp": "efairy-backend",
"session_state": "d4a2b283-2f54-4a17-9a27-99db26278ba7",
"acr": "1",
"allowed-origins": [
"",
"http://localhost:8083"
],
"realm_access": {
"roles": [
"offline_access",
"uma_authorization"
]
},
"resource_access": {
"efairy-backend": {
"roles": [
"uma_protection",
"user"
]
},
"account": {
"roles": [
"manage-account",
"manage-account-links",
"view-profile"
]
}
},
"scope": "profile roles email",
"clientHost": "172.23.0.1",
"email_verified": false,
"clientId": "efairy-backend",
"groups": [
"offline_access",
"uma_authorization"
],
"preferred_username": "service-account-efairy-backend",
"clientAddress": "172.23.0.1"
}
我已经创建了一个名为“主持人”的新用户,其中包含角色主持人,当我登录到此用户时,我正在接收我在“服务帐户角色”选项卡中设置的角色(resource_access.efairy backend.roles),但我想获取我在“角色映射”选项卡中的“主持人”新用户中声明的角色
登录流如下所示:
授予类型:客户端凭据
客户端id:efairy后端
客户机密:
代码:
过期时间:60,
不在保单之前:1619128217,
刷新时间:1799,
刷新令牌:“eyJ…XQ\U R0”,
范围:“配置文件角色电子邮件”,
会话状态:“fcf1391d-…b11795c03f80”,
令牌类型:“持票人”,
/auth/realms/efairy realm/protocol/openid connect/token
授权类型:客户端凭据
客户端id:efairy后端
客户端密码:
代码: 执行此操作时,将代表用户
“服务帐户efairy后端”
忽略令牌,该用户是由KeyClope为客户端“efairy后端”创建的用户
我已经创建了一个名为“版主”的新用户,该用户具有版主角色,并且在即时消息发布时
登录到我正在接收的此用户
我在选项卡服务中设置的角色(resource_access.efairy backend.roles)
帐户角色,但我希望获得我在新文档中声明的角色
用户在“角色映射”选项卡中调用了主持人
您将获得在帐户角色中设置的角色,因为这些角色分配给客户端(即用户“服务帐户efairy后端”
)。由于用户主持人
不是该交互的一部分,因此角色主持人
不是令牌的一部分
此外,客户端凭据不是前端应用程序的合适流程。从中可以看出:
客户端凭据流机器对机器(M2M)应用, 例如在后端运行的CLI、守护进程或服务 系统验证和授权应用程序,而不是用户。对于 在这种情况下,典型的身份验证方案,如用户名+密码 或者社交登录没有意义。相反,M2M应用程序使用客户端 凭证流(在OAuth 2.0 RFC 6749第4.4节中定义),在 他们将客户ID和客户机密传递给 对自己进行身份验证并获取令牌 在我看来,你的第三步是可以取消的。在第二步之后: 然后输入正确的用户和密码,然后单击登录 您应该代表用户
版主省略一个令牌