Azure AD B2C:更新电子邮件以重置密码

时间:2019-10-11 10:59:24

标签: azure-ad-b2c

我们为客户提供了AAD B2C解决方案,并且我们已经构建了导入工具,该工具可以从源中收集用户并在AD B2C中创建用户。

这是通过Active Directory图形Api完成的,但是在忘记密码的流程方面我们遇到了问题。

{
    "accountEnabled": true,
    "signInNames": [
        {
            "type": "userName",
            "value": "****"
        }
    ],
    "passwordPolicies" : "DisablePasswordExpiration, DisableStrongPassword",
    "passwordProfile": {
        "password": "SomePassword",
        "forceChangePasswordNextLogin": false
    },
    "otherMails": ["****@****.net"],
    "creationType": "LocalAccount",
    "displayName": "*****",
    "givenName": "*****",
    "surname": "***** *****",
    "userPrincipalName": "PLH@vandeputprd.onmicrosoft.com",
    "extension_extensionID_ClientId": "***",
    "extension_extensionID_Language": "N"
}

问题在于,当我们要求进行电子邮件验证时,由于未设置邮件字段,因此失败了。如果我们尝试设置此值,则API返回此字段为只读

{
"odata.error": {
        "code": "Request_BadRequest",
        "message": {
        "lang": "en",
        "value": "Property 'mail' is read-only and cannot be set."
        },
        "requestId": "97b360eb-052e-4c16-8706-468b72ae1ebe",
        "date": "2019-10-11T10:50:01"
    }
}

我们可以在AD B2C门户中手动设置它: enter image description here

我们尝试使用较新的Microsoft Graph Api并研究Powershell脚本。

使用powershell,我可以将其读取为 StrongAuthenticationUserDetails ,但无法进行设置。

我们正在考虑的一些选择是:

  • 寻找一种以编程方式填充此内容的方法
  • 寻找一种在首次登录时提出要求的方法
  • 正在寻找发送邀请,而不是预先填充用户库

最后一个选项需要大量的工作,从财务上来讲不是一个选择。

有人对我们如何做到/解决这个问题有一些想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用JWT token(而不是电子邮件)来验证用户身份。

请注意,不建议使用client_assertion方法,而推荐使用id_token_hint