我的目标是获得两个资源服务器特定的访问令牌,其中只包含各自资源服务器特定的数据。
我有以下设置:一个公共客户端使用2个资源服务器。
在配置客户机、用户、领域角色、客户机作用域并使用scope参数之后,我能够创建2个不同的资源服务器特定的访问令牌:
{
"exp": 1603234566,
"iat": 1603216566,
"jti": "13ae00ac-ce57-43ce-8b47-39ad6d5445cd",
"iss": "http://localhost:8080/auth/realms/fitness-realm",
"aud": "fitness-resource-server-1",
"sub": "de1f0820-f4d9-49be-a6d1-c8faef083ffc",
"typ": "Bearer",
"azp": "fitness-client",
"session_state": "47ea42f9-42ac-452e-9e54-be6d705e9a61",
"acr": "1",
"realm_access": {
"roles": [
"fitness_user"
]
},
"scope": "openid email profile client_scope_fitness_resource_server_1_roles",
"email_verified": false,
"preferred_username": "bill"
}
{
"exp": 1603235280,
"iat": 1603217280,
"jti": "fb75a956-6ed4-4edd-8e20-2cd9678d4869",
"iss": "http://localhost:8080/auth/realms/fitness-realm",
"aud": "fitness-resource-server-2",
"sub": "de1f0820-f4d9-49be-a6d1-c8faef083ffc",
"typ": "Bearer",
"azp": "fitness-client",
"session_state": "966aa651-0534-43d4-9413-a8c141ee8549",
"acr": "1",
"realm_access": {
"roles": [
"fitness_user"
]
},
"scope": "openid email profile client_scope_fitness_resource_server_2_roles",
"email_verified": false,
"preferred_username": "bill"
}
curl -X POST http://localhost:8080/auth/realms/fitness-realm/protocol/openid-connect/token \
-d "client_id=fitness-resource-server-1” \
-d "client_secret=<my_secret>" \
-d "grant_type=urn:ietf:params:oauth:grant-type:token-exchange" \
-d "subject_token=$FIRST_ACCESS_TOKEN" \
-d "requested_token_type=urn:ietf:params:oauth:token-type:refresh_token" \
-d "audience=fitness-resource-server-2" |jq
{
"exp": 1603234572,
"iat": 1603216572,
"jti": "4f4b0fb6-d759-4c6a-b35d-7e2a998b5a20",
"iss": "http://localhost:8080/auth/realms/fitness-realm",
"aud": [
"other_resource_server",
"fitness-client",
"other_client",
"account",
"fitness-resource-server-2"
],
"sub": "de1f0820-f4d9-49be-a6d1-c8faef083ffc",
"typ": "Bearer",
"azp": "fitness-resource-server-1",
"session_state": "47ea42f9-42ac-452e-9e54-be6d705e9a61",
"acr": "1",
"realm_access": {
"roles": [
"fitness_user",
"offline_access",
"uma_authorization"
]
},
"scope": "email profile",
"email_verified": false,
"preferred_username": "bill"
}
我的问题是,如何将Keycloak配置为第二个访问令牌不包含角色“offline_access”和“uma_authorization”以及AUD:“other_resource_server”、“fitness-client”、“other_client”和“account”?
我找到了解决办法:-)
我必须将资源服务器2的设置-访问类型配置从只承载改为机密,禁用所有流/授权,通过这一更改,我也可以在资源服务器2中配置客户端范围和范围。
即使我不需要机密(流/授权、凭据等),我也必须从只承载更改为机密,这不是很好,但这使得更改访问令牌输出成为可能。
用户必须在浏览器和应用程序之间手动复制粘贴“授权码”,这在Android中不是一种实用的获取访问令牌的方法。 为了找到一种新的方法,我使用Android API中的来获取访问令牌,同时使用Java API中的和来获取文件列表,如下所示, 不幸的是,当调用中的时,应用程序总是由于NetworkOnMainThreadException而崩溃。 所以我的问题是,如何通过使用访问令牌而不是在中应用授权代
背景: 我正在开发一款原生Android应用程序,通过Google SignIn验证,它正在运行。 我还有一个与Google集成的Keycloak服务器作为身份提供商,它也可以工作。 我可以导入我的帐户从谷歌在我的第一次登录,使用网络浏览器访问http://localhost:8080/auth/realms/chapa/account/. 当我进入Keycloak控制台时,我发现我的帐户已创建并
我使用Keycloak来保护我的react前端和Node.js后端。这些客户端使用基于角色的授权进行保护。 我尝试这个endpoint来撤消用户访问令牌。但不起作用/auth/admin/realms//users/ 是否有方法在Keycloak中撤销特定用户的访问令牌?
我想避开keycloak登录页面。我将这个“避免keycloak默认登录页面和使用项目登录页面”链接引用到“http://localhost:5555/auth/realms/master/protocol/openid-connect/token”链接,并能够使用post方法获得访问令牌。 在此步骤中获得访问令牌后,提到要传递以下头部 标题:{ 但是不清楚将访问令牌传递到哪里,响应是什么,请求类
我使用postMan,输入请求地址http://localhost:8011/umrah/oauth/token?client_id=client_2&username=1234567&password=123456&grant_type=password&client_secret=123456,点击send按钮,出现错误,在内存中工作正常,当我想使用Jdbc令牌存储时,想法控制台错误:找不到令
在我最近的遭遇中,我试图实现在前端安全存储的JWT令牌。我以前的方法是在易受XSS攻击的sessionStorage中存储以及。现在,当过期时,我将调用endpoint来获取新的 之后,我们更改实现以防止XSS和CSRF。接下来,Local存储与Cookie 建议将访问令牌存储在内存中,并将刷新令牌存储在cookie中。所以从FE,我们无法访问cookie。(HTTPOnly cookie)和 现