2017-10-18 13 views
3

現在、私はKeycloak APIとJavaクライアントを試しています。現時点では、私はグループにロールをプログラムで割り当てることに苦労しています。残念ながら、現時点ではドキュメントはあまり精巧ではありません。Keycloak APIを使用してグループにプログラムでロールを割り当てる

ここに私のコード例:として指定する必要がどのような存在ではない場合

@Test 
public void testPushGroupWithRealmRoles() throws IOException { 

    GroupRepresentation group = new GroupRepresentation(); 
    group.setName("JUnit Test Group realm roles"); 

    String editRoleName = "junit_edit"; 
    String deleteRoleName = "junit_delete"; 

    RoleRepresentation editRole = getRealmRole(editRoleName); 
    if (editRole == null) { 
     editRole = new RoleRepresentation(editRoleName, "is allowed to edit", false); 
     getKeycloak().realm(clientConfig.getRealm()).roles().create(editRole); 
    } 

    RoleRepresentation deleteRole = getRealmRole(deleteRoleName); 
    if (deleteRole == null) { 
     deleteRole = new RoleRepresentation(deleteRoleName, "is allowed to delete", false); 
     getKeycloak().realm(clientConfig.getRealm()).roles().create(deleteRole); 
    } 

    group.setRealmRoles(Arrays.asList(editRole.getName(), deleteRole.getName())); 

    GroupResource existingGroup = getGroupRepresentation(group.getName()); 

    if(existingGroup != null){ 
     existingGroup.update(group); 
    } else{ 
     getKeycloak().realm(clientConfig.getRealm()).groups().add(group); 
    } 
} 

グループは、作成された彼らが存在しない場合には役割が作成されますが、割り当て

group.setRealmRoles(Arrays.asList(editRole.getName(), deleteRole.getName())); 

文字列のリストの引数?役割の名前?役割の技術的なIDですか? (両方私のために働いていない)。

ご協力いただきましてありがとうございます。

更新 ravthiruのおかげで、私は自分の問題を解決することができました。作業コードは以下です:あなたはすでに、あなたが次のコードを使用してグループと役割を関連付けることができる役割を作成した場合は

@Test 
public void testPushGroupWithRealmRoles() throws IOException { 

    /* 
    ensure the roles exist 
    */ 
    String editRoleName = "junit_edit"; 
    String deleteRoleName = "junit_delete"; 

    RoleRepresentation editRole = getRealmRole(editRoleName); 
    if (editRole == null) { 
     editRole = new RoleRepresentation(editRoleName, "is allowed to edit", false); 
     getKeycloak().realm(clientConfig.getRealm()).roles().create(editRole); 
    } 

    RoleRepresentation deleteRole = getRealmRole(deleteRoleName); 
    if (deleteRole == null) { 
     deleteRole = new RoleRepresentation(deleteRoleName, "is allowed to delete", false); 
     getKeycloak().realm(clientConfig.getRealm()).roles().create(deleteRole); 
    } 


    /* 
    ensure the group exists 
    */ 
    GroupRepresentation group = new GroupRepresentation(); 
    group.setName("JUnit Test Group realm roles"); 

    GroupResource existingGroup = getGroupResource(group.getName()); 

    if (existingGroup != null) { 
     existingGroup.update(group); 
    } else { 
     getKeycloak().realm(clientConfig.getRealm()).groups().add(group); 
    } 


    /* 
    assign roles to group 
    */ 
    existingGroup.roles().realmLevel().add(Arrays.asList(editRole, deleteRole)); 
} 

答えて

2

。ここ

RoleRepresentation grouprole = realm.roles().get("grouprole").toRepresentation(); 

List<RoleRepresentation> roles = new LinkedList<>(); 
roles.add(grouprole); 
realm.groups().group(myGroup.getId()).roles().realmLevel().add(roles); 

「grouprole」役割は「myGroupが」グループに多くのあなたの答えのための

+0

おかげ関連している、これは魔法のように動作します。私はRealm-とClient-rolesをあなたのアプローチでプログラム的に割り当てることができました。 – flexguse

+0

誰かがnodejsでグループ化する役割を割り当てる方法を知っていますか? – Mjafko

関連する問題