有没有办法通过REST获取Keycloak领域的用户列表而不使用管理员帐户?管理控制台可能有某种可分配的角色?寻找任何想法.
现在我正在使用管理员凭据来获取访问令牌,然后使用该令牌从realm/users端点提取用户.
获取令牌(来自node.js应用程序request):
uri: `${keycloakUri}/realms/master/protocol/openid-connect/token`,
form: {
grant_type: 'password',
client_id: 'admin-cli',
username: adminUsername,
password: adminPassword,
}
Run Code Online (Sandbox Code Playgroud)
使用令牌:
uri: `${keycloakUri}/admin/realms/${keycloakRealm}/users`,
headers: {
'authorization': `bearer ${passwordGrantToken}`,
}
Run Code Online (Sandbox Code Playgroud)
我希望能够使用客户端应用程序中的通用用户信息(用户名,电子邮件,全名).
我正在使用Keycloak服务器来实现SSO.我能够使用client_credentials流获取特定客户端的访问令牌.
然而,我的观察是,访问令牌被授予内部服务帐户的的客户端.我想获得访问令牌的其他用户存在的领域通过提供一些额外的参数令牌端点.
以下是我使用Postman Chrome扩展程序对令牌端点发出的当前请求:
POST http://localhost:8080/auth/realms/<realm>/protocol/<protocol>/token
x-www-form-urlencoded
grant_type client_credentials
client_id <client_id>
client_secret <client_secret>
Run Code Online (Sandbox Code Playgroud)
如果可能,请告诉我.此外,我想传达一下,这对Keycloak和openid-connect协议来说是全新的.
我可以使用KecloakRestTemplate,其中一个keycloak客户端与另一个keycloak客户端进行通信。但是,仅当我已登录第一个密钥库客户端时,该方法才起作用,即它将客户端ID,客户端密钥,用户名,密码发送到密钥库服务器。如果未在第一个客户端上使用用户名和密码进行身份验证,则会收到“无法设置授权标头,因为没有身份验证原则”。但是我已配置密钥斗篷将服务帐户用于第一个客户端(客户端凭据授予),因此我不应该使用用户名/密码,而应该仅依赖客户端ID /秘密。这是OAuth 2规范的错误/偏差吗?