【发布时间】:2020-08-10 23:29:52
【问题描述】:
我有一个带有 JWT 的 .NET Core 2(即将升级到 3)API。此 API 为母公司旗下的几家特定公司提供服务。母公司生成 JWT,并为请求公司设置特定的受众(多公司 API 是新事物)。因此,我的 API 需要支持多种不同的受众。
目前,我们根据请求的 URL 动态切换(公司 ID 在 URL 中)。此动态设置发生在 OnMessageReceived 中:
OnMessageReceived = msgRcvdContext =>
{
companyId = GetCompanyId(msgRcvdContext.Request);
options.TokenValidationParameters.ValidAudience = GetAudienceByCompanyId(companyId);
}
这是否更改了“全局”选项,而不是此特定请求的选项?如果这不是服务多个受众的正确方式,我应该怎么做?我是否应该将所有有效受众放入TokenValidationPrameters 的列表属性中?或者我应该有其他方法吗?
谢谢。
【问题讨论】:
-
这可能是自定义受众验证器的工作。可以通过
TokenValidationParameters.AudienceValidator设置,签名如下:bool AudienceValidator(IEnumerable<string> audiences, SecurityToken securityToken, TokenValidationParameters validationParameters)。似乎它支持具有多个受众的单个令牌,这就是 IEnumerable :) -
哦,我什至没看到。我会试一试。谢谢!
标签: asp.net-core jwt audience