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

Swagger授权时提示“Auth ErrorTypeError: Failed to fetch”问题求助

排查Swagger OAuth2授权"Failed to fetch"及Token端点404问题

核心问题分析

从现象来看,Token请求URL与配置不符、返回404且触发CORS错误,核心原因集中在端点配置错误、OAuth流程参数冲突或Swagger前后端配置不匹配,以下是具体排查方向:

1. 修正Token端点URL格式

你的TokenUrl使用了/common/路径,但结合指定的tenantId,正确的Azure AD v2 Token端点需用租户ID替换common:

TokenUrl = new("https://login.microsoftonline.com/{tenantId}/oauth2/v2.0/token"),

common是多租户场景的占位符,指定具体tenantId后必须替换,否则会请求错误端点导致404。

2. 解决PKCE与Client Secret的冲突

你同时开启了OAuthUsePkce()和配置了OAuthClientSecret,这两者存在逻辑冲突:

  • PKCE属于公共客户端流程,不需要客户端密钥,若用PKCE,删除options.OAuthClientSecret("HakunaMatata");,并确保Azure AD应用注册配置为"公共客户端"
  • 若使用机密客户端流程,关闭OAuthUsePkce(),保留Client Secret配置

3. 确保Scope配置完全一致

检查AddSecurityDefinition中的Scopes与SwaggerUI的OAuthScopes格式、拼写完全匹配。使用Graph的.default scope时,必须在Azure AD应用注册中添加Graph API权限并完成管理员同意,否则会导致登录页无法加载。

4. 验证Authorization Code流程配置

确认Azure AD应用注册的以下设置:

  • 重定向URI类型为Web(而非SPA)
  • 已启用"授权代码流"(在"身份验证"→"高级设置"中确认)
  • OAuthClientId与应用注册的客户端ID完全一致

5. 排查CORS错误根源

Token端点的CORS错误大概率是请求地址错误导致的间接问题:

  • 若使用PKCE,确保Swagger UI的Token请求为POST方式(Azure AD默认允许跨域POST请求)
  • 可临时切换到HTTP的Swagger端点(http://localhost:7001/swagger)测试,排除HTTPS证书相关的跨域问题

6. 检查OpenAPI文档的配置生效情况

访问https://localhost:7001/swagger/v1/swagger.json,查看components/securitySchemes/oauth2/flows/authorizationCode下的tokenUrl是否与配置一致。若不一致,检查AddSwaggerGen的配置顺序,确保其在AddControllers之后执行。

7. 直接测试Token端点有效性

用Postman手动请求修正后的Token端点,传入参数:client_id、code、redirect_uri、grant_type=authorization_code(若用机密客户端需加client_secret),确认是否能获取Token。若Postman请求失败,重点排查应用注册的权限、密钥是否正确;若成功,则问题出在Swagger UI的配置逻辑上。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 10:55:56