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

Azure AD B2C:如何从MFA对应的访问令牌中获取电话号码?

解决从C#中获取MFA关联电话号码的问题

首先明确:用于MFA的电话号码不会默认包含在access token的claims中,因为access token的核心作用是资源授权,不会携带这类敏感的用户MFA配置信息。你可以通过以下几种方式获取:

  • 调用身份提供商的用户信息/认证方法API
    主流身份服务(如Azure AD、Auth0)都提供专门的API来获取用户的详细资料,包括MFA绑定的手机号。比如针对Azure AD,你可以用有效的access token调用Microsoft Graph API的认证方法接口,获取用户的MFA手机号:

    using System.Net.Http.Headers;
    using System.Text.Json;
    
    var httpClient = new HttpClient();
    httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", "你的access token");
    
    // 请求用户的MFA认证方法
    var response = await httpClient.GetAsync("https://graph.microsoft.com/v1.0/me/authentication/methods");
    if (response.IsSuccessStatusCode)
    {
        var jsonContent = await response.Content.ReadAsStringAsync();
        var authMethods = JsonDocument.Parse(jsonContent).RootElement.GetProperty("value");
        
        // 筛选出手机号类型的MFA方法
        foreach (var method in authMethods.EnumerateArray())
        {
            if (method.GetProperty("@odata.type").GetString() == "#microsoft.graph.phoneAuthenticationMethod")
            {
                string phoneNumber = method.GetProperty("phoneNumber").GetString();
                // 拿到手机号
                break;
            }
        }
    }
    

    注意:调用这类API需要提前申请对应的权限(比如Azure AD的UserAuthenticationMethod.Read)。

  • 检查ID Token而非Access Token
    部分身份提供商会将用户手机号放在ID Token的phone_number claim中,而非access token。你可以尝试解码ID Token,查看是否包含该字段:

    using System.IdentityModel.Tokens.Jwt;
    
    var handler = new JwtSecurityTokenHandler();
    var idToken = handler.ReadJwtToken("你的ID Token字符串");
    var phoneClaim = idToken.Claims.FirstOrDefault(c => c.Type == "phone_number");
    if (phoneClaim != null)
    {
        string phoneNumber = phoneClaim.Value;
    }
    
  • 从自有用户数据库查询(自建身份系统场景)
    如果是你自己搭建的身份认证系统,MFA手机号通常会直接存储在用户数据库中。你可以通过当前用户的唯一标识(比如token中的sub claim),直接从数据库中查询对应的手机号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:52:15