cannot create user in the keycloak. Getting 403 status

元气小坏坏 提交于 2020-08-22 05:19:42

问题


I am trying to access the create a user in the keycloak programmatically. But I am getting 403 as a status code. I am following the below link.

https://technology.first8.nl/programmatically-adding-users-in-keycloak/

Can anyone help me? Thanks In advance

I have using the following code to create user

Keycloak kc = Keycloak.getInstance(
                     "http://{server name}:8080/auth",
                     "{realm name}", // the realm to log in to
                     "{useraname}", 
                     "{password}",  // the user
                     "{client id}",
                     "{client secret key}");

            CredentialRepresentation credential = new CredentialRepresentation();
            credential.setType(CredentialRepresentation.PASSWORD);
            credential.setValue("test123");
            UserRepresentation user = new UserRepresentation();
            user.setUsername("codeuser");
            user.setFirstName("sampleuser1");
            user.setLastName("password");

            user.setCredentials(Arrays.asList(credential));
            user.setEnabled(true);
            Response result = kc.realm("{realm name}").users().create(user);

response.status is coming as 403


回答1:


I faced the same issue. This is how i fixed it.

  1. Create a role that has at least a realm-management role of manage-users

UI update for server 9.0.2

  1. Go to your client's Scope tab and add the role to your Realm Roles



回答2:


If you are not using admin user from master realm.

You need to assign proper roles like manage-users role from realm-management client for the user which you are using to get instance the instance of Keycloak.




回答3:


I faced the same issue with KeyCloak 9.0.3. What finally worked for me was:

  1. Use the admin-cli client with client credentials on the target realm (where I am trying to create the user)
curl \
  -d "client_id=admin-cli\
  -d "client_secret=<YOUR_CLIENT_SECRET>" \
  -d "grant_type=client_credentials" \
  "http://localhost:8080/auth/realms/myrealm/protocol/openid-connect/token"

I am not sure why, but using the admin client on the master realm simply did not work for me.

  1. Set up the admin-cli client in the target realm with the role as mentioned in the correct answer above.

  2. In addition to adding the new role to Scope, I also had to add the role to Service Account Roles.

BTW client credentials access token is not even mentioned as an option in the Admin Rest API docs for Keycloak 9.0.3, but it does work.



来源:https://stackoverflow.com/questions/49511606/cannot-create-user-in-the-keycloak-getting-403-status

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!