相信我,我尝试了所有可能的选项,阅读了关于堆栈溢出的所有帖子,没有任何效果。
我正在使用带有 oauth2 的 swagger UI。当我点击执行时,总是得到相同的响应。
带有 401 的错误消息:www-authenticate: Bearer error="invalid_token"error_description="观众 '00000002-0000-0000-c000-000000000000' 无效"
public void ConfigureServices(IServiceCollection services)
{
services.AddAuthentication(BeararAuth)
.AddMicrosoftIdentityWebApi(Configuration)
.EnableTokenAcquisitionToCallDownstreamApi()
.AddInMemoryTokenCaches();
services.AddSwaggerGen(c =>
{
c.OperationFilter<AuthorizeCheckOperationFilter>(Configuration["AzureAd:ClientId"]);
c.SwaggerDoc("v1", new OpenApiInfo { Title = "WebApplication4", Version = "v1" });
c.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme
{
In = ParameterLocation.Header,
Type = SecuritySchemeType.OAuth2,
Flows = new OpenApiOAuthFlows
{
AuthorizationCode = new OpenApiOAuthFlow
{
AuthorizationUrl = new Uri("https://login.microsoftonline.com/common/oauth2/authorize"),
TokenUrl = new Uri("https://login.microsoftonline.com/common/oauth2/token"),
Scopes = new Dictionary<string, string>
{
{"User.Read", "User Read scope"},
{"access_as_user", "access APIs as user" },
{ $"api://{Configuration["AzureAd:ClientId"]}/access_as_user", "Application API Permissions" }
}
}
}
});
});
}
请帮助我。
我可以使用身份验证流程成功登录swagger;生成令牌。
当我将该令牌粘贴到https://jwt.io时,
它向我显示了值为“00000002-0000-0000-c000-000000000000”的 aud。
请帮我弄清楚这个问题。我在 azure ad 端做错了什么,或者后端 api 端缺少什么。