簡體   English   中英

Keycloak 為現有領域創建用戶?

[英]Keycloak creating user for an existing realm?

我正在嘗試為現有領域和客戶端創建用戶。 下面,是我嘗試過的。 URL、領域、用戶名、密碼、clientId 和 clientSecret 是正確的。 但它在行var response = keycloak.realm( realm ).users().create( user );上拋出NotAuthorization異常var response = keycloak.realm( realm ).users().create( user ); 我也嘗試使用授權令牌獲取它,但它拋出了同樣的錯誤。 我究竟做錯了什么?

        Keycloak keycloak = Keycloak.getInstance( serverUrl, realm, username, password, clientId, clientSecret );

        var user = new UserRepresentation();
        user.setEnabled( true );
        user.setUsername( "test" );
        user.setAttributes(Collections.singletonMap("origin", Collections.singletonList( "demo" ) ));

        CredentialRepresentation credentialRepresentation = new CredentialRepresentation();
        credentialRepresentation.setTemporary( false );
        credentialRepresentation.setType( CredentialRepresentation.PASSWORD );
        credentialRepresentation.setValue( "1234" );
        user.setCredentials( Collections.singletonList( credentialRepresentation ) );

        try {
            var response = keycloak.realm( realm ).users().create( user );
            System.out.println( "Response: " + response.getStatus() );
            System.out.println( "Response: " + response.getMetadata() );

        } catch ( Exception e ) {
            e.printStackTrace();
        }

錯誤堆棧跟蹤:

javax.ws.rs.ProcessingException: javax.ws.rs.NotAuthorizedException: HTTP 401 Unauthorized
    at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.filterRequest(ClientInvocation.java:603)
    at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:440)
    at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invokeSync(ClientInvoker.java:149)
    at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:112)
    at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76)
    at com.sun.proxy.$Proxy26.create(Unknown Source)
    at io.heist.keycloak.user.generator.KeycloakGen.main(KeycloakGen.java:27)
Caused by: javax.ws.rs.NotAuthorizedException: HTTP 401 Unauthorized
    at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.handleErrorStatus(ClientInvocation.java:221)
    at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.extractResult(ClientInvocation.java:195)
    at org.jboss.resteasy.client.jaxrs.internal.proxy.extractors.BodyEntityExtractor.extractEntity(BodyEntityExtractor.java:62)
    at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invokeSync(ClientInvoker.java:151)
    at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:112)
    at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76)
    at com.sun.proxy.$Proxy16.grantToken(Unknown Source)
    at org.keycloak.admin.client.token.TokenManager.grantToken(TokenManager.java:90)
    at org.keycloak.admin.client.token.TokenManager.getAccessToken(TokenManager.java:70)
    at org.keycloak.admin.client.token.TokenManager.getAccessTokenString(TokenManager.java:65)
    at org.keycloak.admin.client.resource.BearerAuthFilter.filter(BearerAuthFilter.java:52)
    at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.filterRequest(ClientInvocation.java:590)
    ... 6 more

Process finished with exit code 0

相關依賴:

        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-core</artifactId>
            <version>10.0.2</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>org.keycloak</groupId>
            <artifactId>keycloak-admin-client</artifactId>
            <version>11.0.1</version>
        </dependency>

顯然,它似乎不接受我的登錄用戶admin作為經過身份驗證的用戶。 所以我添加了一個新用戶並賦予它正確的管理員角色,如下所示: 在此處輸入圖片說明

在此處輸入圖片說明

完成這些之后,我就可以添加用戶了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM