User6300:
どのように私は、ユーザーIDに基づいてユーザkeycloak属性(ユーザ名、ファーストネーム、電子メールを...)で入手できますか?私はKeycloakセッションで使用しているユーザーが既に役割を持つビュー-ユーザー Iは、少なくとも、すべてのユーザーのリストにできるはずですので、割り当てを、私が使用できる任意のKeycloakクラスはありますか?
私はここで達成しようとしていると、別のローカルデータベースにkeycloakユーザーデータベースを複製することを避けるためにですが、現在のセッションで1以外に、他のユーザー情報にアクセスすることはできていないようです...
Lachezar Balev:
あなたは管理REST APIを使用することができます。関連するAPIの詳細な説明が利用可能ですここ。また、あなたはJavaラッパーAPIを使用することができます。以下の例のカップルを見つけてください。
例1、REST:
アクセストークンを取得します。
curl \
-d "client_id=admin-cli" \
-d "username=admin" \
-d "password=secret" \
-d "grant_type=password" \
"http://localhost:8080/auth/realms/master/protocol/openid-connect/token"
すべてのユーザーを取得します。
curl \
-H "Authorization: bearer eyJhbGciOiJSUzI...." \
"http://localhost:8080/auth/admin/realms/master/users"
出力例:
[
{
"id":"349f67de-36e6-4552-ac54-e52085109616",
"username":"admin",
"enabled":true,
...
},
{
"id":"08afb701-fae5-40b4-8895-e387ba1902fb",
"username":"lbalev",
"enabled":true,
....
}
]
ユーザIDで基づいてユーザーを取得します。
curl \
-H "Authorization: bearer eyJhbGciOiJSU...." \
"http://localhost:8080/auth/admin/realms/master/users/349f67de-36e6-4552-ac54-e52085109616"
例2、JAVAのAPI:
使用済みのIDをもとに慣れます:
public class TestUserAccess {
private static final String SERVER_URL = "http://localhost:8080/auth";
private static final String REALM = "master";
private static final String USERNAME = "admin";
private static final String PASSWORD = "secret";
private static final String CLIENT_ID = "admin-cli";
public static void main(String[] args) {
Keycloak keycloak = KeycloakBuilder
.builder()
.serverUrl(SERVER_URL)
.realm(REALM)
.username(USERNAME)
.password(PASSWORD)
.clientId(CLIENT_ID)
.resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).build())
.build();
UsersResource usersResource = keycloak.realm(REALM).users();
UserResource userResource = usersResource.get("08afb701-fae5-40b4-8895-e387ba1902fb");
System.out.println(userResource.toRepresentation().getEmail());
}
}
例えば、関連する依存関係は、上記の(バージョンが最新ではないかもしれないことをしてください注)以下のとおりです。
dependencies {
compile group: 'org.keycloak', name: 'keycloak-admin-client', version: '3.3.0.CR2'
compile group: 'org.jboss.resteasy', name: 'resteasy-jaxrs', version: '3.1.4.Final'
compile group: 'org.jboss.resteasy', name: 'resteasy-client', version: '3.1.4.Final'
compile group: 'org.jboss.resteasy', name: 'resteasy-jackson2-provider', version: '3.1.4.Final'
}