【发布时间】:2019-03-23 04:52:24
【问题描述】:
我现在正在开发一个微服务 .NET Core 项目。我们有一个 Azure AD,我们想要验证所有 Web APIs 微服务的请求。
有很多应用会调用我们的 Web API 项目。这些应用程序中的每一个都有自己的应用程序(ClientId 和客户端密码)。他们使用他们的数据生成令牌,然后在每个请求的标头中发送它。 (到现在都没问题)
就我而言,我必须为每个请求验证令牌,但验证应该适用于来自不同应用程序的所有令牌。
所以,我正在尝试将 JWTBarear 设置为接受任何令牌,但我对配置有点迷茫:
services.AddAuthentication(o =>
{
o.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
o.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(jwt =>
{
jwt.Authority = "https://login.microsoftonline.com/[myTenant]";
});
services.AddAuthorization(auth =>
{
auth.AddPolicy("Bearer", new AuthorizationPolicyBuilder(JwtBearerDefaults.AuthenticationScheme)
.RequireAuthenticatedUser()
.Build());
});
并在配置中:
app.UseAuthentication();
app.UseMvc();
但是,我总是收到 401。我使用邮递员生成了令牌,它是有效的。
我对配置不是很好。我错过了什么吗? 我在互联网上看到的所有示例都使用 ClientId,我有很多,而不仅仅是一个。
附:我不需要登录什么的,我只需要验证令牌。
谢谢!
【问题讨论】:
-
您需要在 ValidAudiences 中指定他们的所有 ID。但为什么该 API 允许使用其他 API 的令牌?
-
@juunas 是的,我刚刚发现。我从昨天开始一直在搜索,我在 .NET Core 中找到了 Audience。它现在有效,请在那里查看我的答案。感谢您的回复
标签: .net-core jwt azure-active-directory token