从 Java [graphClient.users(user-id).buildRequest().delete()] 中活跃的 Azure B2C 中删除用户

Deleting USERS from Azure B2C Active in Java [graphClient.users(user-id).buildRequest().delete()]

我正在尝试将用户迁移到 Azure B2C Active Directory。

早些时候我创建了从 JSON 文件中读取的“用户”并创建了它们,但是如果 JSON 中的任何“用户”已经存在于 Azure B2C AD 中,我出现异常...

SEVERE: Throwable detail: com.microsoft.graph.http.GraphServiceException: Error code: Request_BadRequest
Error message: Another object with the same value for property userPrincipalName already exists.

我用一个简单的 try/catch 处理所有这些“用户”并跳过它们并将它们移动到 JSON 中的下一个用户。

现在我需要删除进程中的现有用户(一旦出现上述异常,我将删除用户)

我试过了...

private void deleteExistingUser(String issuerAssignedId, IGraphServiceClient graphClient) {
    graphClient.users(issuerAssignedId).buildRequest().delete();
    LOG.info("User deleted.");
}

但是当上面的代码被击中时,我得到了下面的异常...

Error message: Resource 'shumi' does not exist or one of its queried reference-property objects are not present.

你能告诉我怎么才能进入这里吗graphClient.users(what_value_will_go_here).buildRequest().delete();

我相信这是因为我正在使用 userPrincipalName (issuerAssignedId) 来删除用户,相反我应该使用 "azure retured user id"(它被称为 Object-id OR user-id 我认为) 删除用户。

有什么方法可以让我获得 azure 返回的用户 ID 或其他删除用户的方法吗?

您应该在此处输入用户对象 ID 或 userPrincipalName。

您在这里使用“shumi”是因为它的 signInType 是 userName。

由于您收到错误 Error message: Another object with the same value for property userPrincipalName already exists.,我认为您已经有了 userPrincipalName。

您不需要获取用户标识。只需像这样删除用户:

await graphClient.Users["{userPrincipalName}"]
    .Request()
    .DeleteAsync();

使用 IUserCollectionPage 和 QueryOption 获取列表。

        LinkedList<QueryOption> requestOptions = new LinkedList<>();
        
        String query = "identities/any(c:c/issuerAssignedId eq ' issuerAssignedId ' 
        and c/issuer eq ' b2cTenant ')";
        
        requestOptions.add(new QueryOption("$filter", query));
        
        IUserCollectionPage userColl = graphClient.users()
                .buildRequest(requestOptions)
                .get();
        
        List<User> userInfo = userColl.getCurrentPage();
        
        String uId = null;
        
        for (User user : userInfo) {
            userId = user.id;
        }
        
        graphClient.users(uId).buildRequest().delete();

这是从 Azure b2c AD 中删除用户的方法

注意:b2Tenant 是“demo.micorsoft.com”(使用您的)