You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure B2C ROPC流(Web API):未登录用户密码重置方法咨询

问题解答

一、无令牌(未登录用户)场景下发送邮件的实现方式

要在无用户令牌的情况下发送邮件,需使用Azure AD应用权限+客户端凭据流调用Graph API,具体步骤如下:

    1. 在Azure AD中注册应用,添加Mail.Send的应用权限(而非委派权限),并由租户管理员完成权限同意。
    1. 通过客户端凭据流获取应用级令牌:使用应用的客户端ID、客户端密钥(或证书),向https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token请求令牌,请求参数中grant_type设为client_credentials,scope设为https://graph.microsoft.com/.default。
    1. 调用Graph API的发送邮件接口:使用获取到的应用令牌,发送POST请求到https://graph.microsoft.com/v1.0/users/{target-user-id}/sendMail,请求体中指定收件人、主题、邮件内容等信息。

注意:应用权限下发送邮件时,发件人默认关联应用本身(或需额外配置代表特定用户发送的权限),需确保租户允许应用发起邮件发送操作。

二、ROPC流Web API中的找回密码方案

若上述邮件发送方案受限,ROPC流场景下的找回密码功能可通过以下两种方式实现:

方案1:依赖Azure AD自助密码重置(SSPR)

直接复用Azure AD内置的成熟能力,无需自行开发核心逻辑:

  • 由租户管理员预先开启SSPR功能,配置用户可使用的验证方式(邮箱、短信、安全问题等)。
  • 在应用登录页面提供“忘记密码”入口,引导用户跳转至Azure AD的SSPR页面完成身份验证与密码重置。

方案2:自定义密码重置流程

若需自主管控流程,需结合应用权限的Graph API操作:

    1. 身份验证环节:用户输入用户名/邮箱后,通过邮箱验证码、短信验证码等方式完成身份校验(验证码发送可使用第三方服务,或用上述应用权限的Graph API实现)。
    1. 生成并设置临时密码:验证通过后,使用应用权限令牌调用Graph API的用户更新接口,发送PATCH请求到https://graph.microsoft.com/v1.0/users/{user-id},请求体中设置passwordProfile(包含临时密码,同时将forceChangePasswordNextSignIn设为true,强制用户登录后修改密码)。
    1. 通知用户:将临时密码通过邮件/短信发送给用户,提示其登录后立即更新密码。

注意:自定义流程需严格遵循安全规范,比如设置验证码时效性、临时密码复杂度,避免身份冒用风险。

内容的提问来源于stack exchange,提问作者ManuBera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 20:55:19