如何获取用于AuthorizationCodeCredential的授权码(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
相关产品推荐
相关产品推荐

