如何通过Graph API在Azure B2C创建用户时添加认证邮箱?
在Azure B2C中通过Graph API配置用户的密码重置认证邮箱
我来帮你搞定这个问题!在Azure AD B2C里,要给用户添加用于密码重置的认证邮箱,主要有两种场景:创建用户时直接配置,或者给已存在的用户补加认证邮箱。下面一步步给你讲清楚:
场景1:创建用户时同步设置认证邮箱
当你调用Graph API的POST /users接口创建用户时,可以在请求体里同时指定登录身份和认证邮箱,这样用户创建完成后就能直接用这个邮箱做密码重置。
请求JSON示例
{ "accountEnabled": true, "displayName": "Dinusha Test", "mailNickname": "dinushatest", "userPrincipalName": "dinusha.test@yourb2ctenant.onmicrosoft.com", "passwordProfile": { "forceChangePasswordNextSignIn": true, "password": "YourStrongPass123!" }, "identities": [ { "signInType": "emailAddress", "issuer": "yourb2ctenant.onmicrosoft.com", "issuerAssignedId": "dinusha.test@example.com" } ], "authenticationMethods": [ { "@odata.type": "#microsoft.graph.emailAuthenticationMethod", "emailAddress": "dinusha.test@example.com" } ] }
关键参数解释
- identities:这里把
signInType设为emailAddress,既指定了用户的登录邮箱,同时这个邮箱也会默认成为密码重置的首选邮箱。 - authenticationMethods:显式添加电子邮件认证方法,确保这个邮箱被系统标记为可用于密码重置的认证渠道。
划重点:调用这个接口需要
User.ReadWrite.All权限,而且要确保你的Graph API应用在B2C租户里已经配置好对应权限哦。
场景2:给已创建的用户添加认证邮箱
如果用户已经创建好了,你可以单独调用专门的接口来添加密码重置用的邮箱:
请求JSON示例
{ "@odata.type": "#microsoft.graph.emailAuthenticationMethod", "emailAddress": "dinusha.backup@example.com" }
调用说明
- 接口地址是
POST /users/{userId}/authentication/emailMethods,把{userId}换成目标用户的对象ID或者用户主体名称(UPN)就行。 - 调用成功后,这个邮箱就会被添加为用户的认证方法之一,用户后续就能用它来重置密码了。
一些需要注意的点
- 建议使用Microsoft Graph API的v1.0版本来做生产环境的操作,beta版本虽然功能多,但稳定性不如v1.0。
- 权限方面,除了
User.ReadWrite.All,如果是单独添加认证方法,还需要UserAuthenticationMethod.ReadWrite.All权限,记得在Azure门户里给你的应用授权。 - 配置完后可以验证一下:要么在B2C门户的用户详情页看“认证方法”,要么调用
GET /users/{userId}/authentication/emailMethods接口返回的结果,确认邮箱已经被添加进去。
内容的提问来源于stack exchange,提问作者Dinusha
相关产品推荐
相关产品推荐

