REST [〜#〜] without [〜#〜]経由で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,
}
トークンの使用:
uri: `${keycloakUri}/admin/realms/${keycloakRealm}/users`,
headers: {
'authorization': `bearer ${passwordGrantToken}`,
}
クライアントアプリケーションから汎用ユーザー情報(ユーザー名、メール、フルネーム)を使用できるようにしたい。
目的のユーザーに対して、view-users
クライアントからrealm-management
ロールを割り当てる必要があります。これがユーザーの構成になります。
その後、${keycloakUri}/admin/realms/${keycloakRealm}/users
エンドポイントからすべてのユーザーを取得できます。これは、Postman経由でアクセスした、エンドポイントから取得した情報です。
また、質問とは無関係に、絶対に必要でない限り、grant_type=password
を使用しないことを強くお勧めします。 keycloak blog から:
RESULT=`curl --data "grant_type=password&client_id=curl&username=user&password=password" http://localhost:8180/auth/realms/master/protocol/openid-connect/token`
これは少し不可解であり、幸い、これは実際にトークンを取得する方法ではありません。トークンは、WebアプリケーションがKeycloakログインページにリダイレクトして取得する必要があります。これを行っているのは、まだサービスを呼び出すことができるアプリケーションがないため、サービスをテストできるためです。基本的に、ここで行っているのは、トークンのユーザー名とパスワードの交換を許可するリソース所有者認証フローであるパスワードに設定された付与タイプで、Keycloaks OpenID Connectトークンエンドポイントを呼び出すことです。
Oauth2 spec も参照してください。