首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >密钥披风-要求用户在电子邮件验证后设置密码。

密钥披风-要求用户在电子邮件验证后设置密码。
EN

Stack Overflow用户
提问于 2020-08-13 15:59:11
回答 2查看 5.5K关注 0票数 5

我们正在评估KeyCloak,以取代用户注册和身份验证的自定义实现。

我们目前的工作流程提供了一个注册屏幕,用户可以在其中自我注册.在提交注册表格时,会触发一个自定义验证流程,然后向用户发送电子邮件,以验证他们的电子邮件并激活他们的帐户。电子邮件中的链接允许他们设置密码,然后向他们发送一封欢迎邮件。

我正在使用Admin客户端API来实现这个工作流。我已经得到了电子邮件验证部分。

我的问题:

  1. After用户已经验证了他们的电子邮件,我是否可以指示KeyCloak向他们显示一个设置的密码screen?
  2. Authentication流如果我正在编写这个自定义工作流,通过管理控制台设置的注册身份验证流程是否仍然适用?
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-14 09:25:31

在调用用户创建API时,在凭据对象(auth/admin/realms/API/对象)中设置。下面提到的示例JSON主体。然后,用户将在初始登录时被重定向到Keycloak,以更改密码。

代码语言:javascript
运行
复制
  {
    "createdTimestamp": 1587754061774,
    "username": "John",
    "enabled": true,
    "firstName": "John",
    "totp": false,
    "emailVerified": true,
    "disableableCredentialTypes": [],
    "requiredActions": [],
    "notBefore": 0,
    "groups": [],
    "credentials": [{
        "type":"password",
        "value":"1qaz@WSX",
        "temporary":true
    }],
    "access": {
        "manageGroupMembership": true,
        "view": true,
        "mapRoles": true,
        "impersonate": true,
        "manage": true
    }
}
票数 5
EN

Stack Overflow用户

发布于 2020-08-14 13:40:38

谢谢CodeWalter..。对于其他可能需要它的人,我就是这样使用Java客户机的。

代码语言:javascript
运行
复制
        Keycloak keycloak = KeycloakBuilder.builder() 
                .serverUrl(SERVER_URL) 
                .realm(MASTER_REALM) 
                .grantType(OAuth2Constants.CLIENT_CREDENTIALS)
                .clientId(CLIENT_ID) 
                .clientSecret(CLIENT_SECRET) 
                .build();       
        
        // Define user
        UserRepresentation user = new UserRepresentation();
        user.setEnabled(true);
        user.setUsername("first.last@gmail.com");
        user.setFirstName("First");
        user.setLastName("Last");
        user.setEmail("first.last@gmail.com");
        user.setAttributes(Collections.singletonMap("MRN", Arrays.asList("11111")));
        
        // Define password credential
        CredentialRepresentation passwordCred = new CredentialRepresentation();
        passwordCred.setTemporary(true);
        passwordCred.setType(CredentialRepresentation.PASSWORD);
        passwordCred.setValue("Password@1");
        
        user.setCredentials(Arrays.asList(passwordCred));
        
        // Get realm
        RealmResource realmResource = keycloak.realm(PHUB_REALM);
        UsersResource usersRessource = realmResource.users();

        // Create user (requires manage-users role)
        Response response = usersRessource.create(user);
        String userId = CreatedResponseUtil.getCreatedId(response);
        System.out.println("Response: " + response.getStatusInfo());
        System.out.println(userId);
        
        UserResource u = realmResource.users().get(userId);
        u.sendVerifyEmail();
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63398916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档