【发布时间】:2021-02-17 00:15:18
【问题描述】:
我们有一个执行 JWT 令牌身份验证的 .NET Core 应用程序。此应用程序在 Azure AD 中注册,客户端 ID 为 abcde,API 范围为 api://abcde。我们的租户注册了其他应用程序,其中一个的客户端 ID 为fghij。我注意到的是,如果我将这个客户端 ID 与它的秘密和 API 范围 api://abcde 一起使用,我就能够生成一个访问令牌并访问这个范围下的 API。
services.AddAuthentication(options =>
{
options.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.Authority = $"{ Configuration.GetValue<string>("AzureAD:Instance") }/{ Configuration.GetValue<string>("AzureAD:TenantId") }/";
options.TokenValidationParameters = new Microsoft.IdentityModel.Tokens.TokenValidationParameters
{
ValidAudience = Configuration.GetValue<string>("AzureAD:Audience"),
ValidIssuer = $"https://sts.windows.net/{ Configuration.GetValue<string>("AzureAD:TenantId") }"
};
});
我想到的解决方案是验证访问令牌中的 appid 字段。我怎样才能做到这一点?基本上我想确保只有客户端 ID abcde 可以请求范围 api://abcde 的访问令牌。
"aio": "abcde=",
"appid": "abcde", //client id of the application in Azure AD
"appidacr": "1",
【问题讨论】:
-
我知道这个迟到的响应,您可以构建自定义身份验证处理程序并验证令牌,referbruv.com/blog/posts/…
标签: c# asp.net-core azure-active-directory jwt