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

如何获取用于AuthorizationCodeCredential的授权码(ASP.NET场景)

获取Authorization Code的ASP.NET实现方案

1. 确认重定向URI配置

先确保Azure AD应用注册中配置的重定向URI与ASP.NET项目的回调页面地址完全一致(例如https://yourdomain.com/Callback),这是授权码能正确返回的前提。

2. 在回调页面提取授权码

根据你使用的ASP.NET类型,对应实现获取逻辑:

针对ASP.NET Web Forms

在回调页面的Page_Load方法中,直接从请求查询参数中提取:

protected void Page_Load(object sender, EventArgs e)
{
    string authorizationCode = Request.QueryString["code"];
    
    if (!string.IsNullOrEmpty(authorizationCode))
    {
        // 替换为你的实际配置
        var tenantId = "YOUR_TENANT_ID";
        var clientId = "YOUR_CLIENT_ID";
        var clientSecret = "YOUR_CLIENT_SECRET";
        
        var options = new AuthorizationCodeCredentialOptions
        {
            AuthorityHost = AzureAuthorityHosts.AzurePublicCloud,
        };
        
        var authCodeCredential = new AuthorizationCodeCredential(
            tenantId, clientId, clientSecret, authorizationCode, options);
        
        // 初始化Graph客户端并执行后续API调用
        var graphClient = new GraphServiceClient(authCodeCredential);
        // 示例:获取用户信息
        var user = await graphClient.Me.GetAsync();
    }
}

针对ASP.NET MVC

在控制器的回调Action中,利用参数自动绑定获取授权码:

public async Task<ActionResult> Callback(string code)
{
    if (!string.IsNullOrEmpty(code))
    {
        // 替换为你的实际配置
        var tenantId = "YOUR_TENANT_ID";
        var clientId = "YOUR_CLIENT_ID";
        var clientSecret = "YOUR_CLIENT_SECRET";
        
        var options = new AuthorizationCodeCredentialOptions
        {
            AuthorityHost = AzureAuthorityHosts.AzurePublicCloud,
        };
        
        var authCodeCredential = new AuthorizationCodeCredential(
            tenantId, clientId, clientSecret, code, options);
        
        var graphClient = new GraphServiceClient(authCodeCredential);
        // 示例:获取用户信息
        var user = await graphClient.Me.GetAsync();
    }
    
    return View();
}

3. 关键注意事项

  • 授权码仅能使用一次,AuthorizationCodeCredential内部会自动用它换取访问令牌和刷新令牌,无需手动处理令牌交换逻辑。
  • 务必处理回调时的错误场景:若用户拒绝授权或流程出错,请求会携带error和error_description参数,需捕获并处理这些情况。
  • 生产环境必须使用HTTPS协议,防止授权码在传输过程中被窃取。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 04:22:19