Я разрабатываю мультитенантное SPA-приложение, которое вызывает внутренний интерфейс .Net Core Web API для данных.Интерфейс внешнего интерфейса будет использовать MSAL и общую конечную точку Microsoft v2 для аутентификации пользователя по AAD и получения идентификатора и токена доступа.
В моем веб-API я хочу проверить издателя, но, как было отмечено здесь , использование общей конечной точки предоставляет метаданные, которые делают обычную проверку издателя непригодной для использования.
Я видел ссылки на пару мест, где можно переопределить или настроить проверку токена, но яЯ не уверен, какой из них предпочтителен, или один из этих методов вызывает нежелательные побочные эффекты.
Один метод использует параметры событий JwtBearer: options.Events.TokenValidated
, а другой - делегат IssuerValidator
TokenValidationParameters.
Я не хочу писать какую-либо логику проверки токена, за исключением того, что в моей базе данных проверенных издателей есть эмитент.Должна ли эта логика входить в IssuerValidator
или TokenValidated
?
Мой текущий код выглядит следующим образом (в настоящее время настроен для одного арендатора)
services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.Authority = "https://myauthority.com";
options.Audience = "https://myaudience.com/api/v1";
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidIssuer = "myauthority.com",
ValidateAudience = true,
ValidAudience = "https://myaudience.com",
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
};
});
Одна из проблем, с которыми я сталкиваюсьиспользование IssuerValidator
заключается в том, что не существует способа внедрить или передать ссылку на dbContext, необходимый для возможности поиска идентификатора арендатора в базе данных.
Кто-нибудь занимался этим или сделал?что-то похожее?