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

如何在C#中实现Azure Easy Auth的.auth/refresh端点调用?

在C#中调用Azure Easy Auth的.auth/refresh端点刷新令牌的解决方案

核心原因

浏览器中用$.ajax调用/.auth/refresh时,会自动携带App Service身份验证生成的会话Cookie(如ARRAUTH开头的Cookie),Easy Auth通过这个Cookie识别有效会话并完成令牌刷新。但C# HttpClient默认不会自动处理这类Cookie,也不能直接提交刷新令牌请求,这是导致401的关键。

可行实现方式

方式一:复用会话Cookie容器

在HttpClient中维护同一个Cookie容器,确保登录后的会话Cookie被携带到refresh请求中:

// 初始化带Cookie容器的HttpClientHandler
var cookieContainer = new CookieContainer();
using var handler = new HttpClientHandler { UseCookies = true, CookieContainer = cookieContainer };
using var client = new HttpClient(handler);

// 先完成身份验证流程(比如通过OAuth2授权回调获取会话Cookie)
// 此处省略登录回调的处理逻辑,确保Cookie已存入cookieContainer

// 调用刷新端点(使用POST方法)
var refreshResponse = await client.PostAsync("https://your-app.azurewebsites.net/.auth/refresh", null);
refreshResponse.EnsureSuccessStatusCode(); // 验证请求是否成功

方式二:手动携带当前访问令牌

如果不想依赖Cookie,可以在请求头中携带当前有效的访问令牌(注意不是刷新令牌),使用X-ZUMO-AUTH头或Authorization: Bearer头:

using var client = new HttpClient();
// 替换为当前有效的访问令牌
client.DefaultRequestHeaders.Add("X-ZUMO-AUTH", "your-active-access-token");

// 发送POST请求到刷新端点
var refreshResponse = await client.PostAsync("https://your-app.azurewebsites.net/.auth/refresh", null);
refreshResponse.EnsureSuccessStatusCode();

关键注意事项

  • 确保App Service身份验证设置中已启用允许令牌刷新(在Azure门户的应用服务→身份验证→对应身份提供商的配置中开启)。
  • 必须使用POST方法调用/.auth/refresh,非浏览器客户端的GET请求可能被Easy Auth拦截返回401。
  • 携带的令牌必须是当前未过期的访问令牌,而非刷新令牌——Easy Auth会通过会话或有效令牌自动触发刷新逻辑,无需手动提交刷新令牌。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 23:52:40