【发布时间】:2019-04-20 03:54:56
【问题描述】:
我的 asp.net 核心 REST API 配置中有以下代码:
services
.AddAuthentication(options => { options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme; })
.AddJwtBearer(options =>
{
options.Authority = "https://login.microsoftonline.com/XXXTenantIDXXX";
options.Audience = "XXXX clientId XXXX";
});
services.AddMvc(o =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
o.Filters.Add(new AuthorizeFilter(policy));
它验证请求。它工作正常。
我担心 jwt 令牌伪造或来自租户中其他 AAD 应用程序的 jwt 令牌。
我希望上面的代码向 asp.net 核心身份验证提供所有信息,以验证 jwt 是否有效并且其受众是正确的 AAD 应用程序。
我想在这里确认一下我的期望,并询问我是否需要额外的逻辑(代码)来验证 JWT 令牌?
【问题讨论】:
-
总是要做检查,必须要做的事情之一是检查用户是否存在,即使 JWT 有效,该用户也可能被删除或禁止或其他任何事情。关于您检查令牌的问题,如果您的秘密被盗,您该怎么办?没有办法知道 VALID jwt 是否被伪造,最后,它是有效的......
-
@Melardev。最重要的是确保 JWT 签名是否有效。你知道 ASP.NET 中间件是否会那样做吗?
-
如下所述,是的,绝对,它验证令牌,并且中间件还可以解析通过 jwt 有效负载可用的一些声明,例如角色,阅读此角色相关功能jerriepelser.com/blog/using-roles-with-the-jwt-middleware
标签: asp.net-mvc asp.net-core-2.0 asp.net-core-webapi .net-security