Проект: API-интерфейсы .net core 2.1
В моем проекте необходимо включить 2 аутентификации на носителе jwt.
a) Мы создаем токен jwt внутри и используем его для аутентификации
b) Мы получаем токен jwt от сторонней организации, и нам также необходимо проверить его подлинность.
При запуске я попытался выполнить следующий код:
services.AddAuthentication( )
.AddJwtBearer("InteralBearer", options =>
{
SymmetricSecurityKey key = TokenGenerator.GenerateKey();
options.Audience = "***************";
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidIssuer = "***************",
ValidateAudience = true,
ValidAudience = "***************",
ValidateIssuerSigningKey = true,
IssuerSigningKey = key,
ValidateLifetime = true
};
})
.AddJwtBearer("ExternalBearer", options =>
{
options.Audience = "***************";
options.Authority = "***************";
});
services.AddAuthorization(options =>
{
options.DefaultPolicy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.AddAuthenticationSchemes("ExternalBearer", "InteralBearer")
.Build();
options.AddPolicy("Applicant", new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.AddAuthenticationSchemes("ExternalBearer", "InteralBearer")
.RequireClaim("role", "Applicant")
.Build());
});
В моем контроллере Ihave:
[ApiController]
[Authorize(Policy = "Applicant")]
public class ApplicantController : ApplicantAbstract
{
}
У меня также есть пользовательский фильтр авторизации:
public class SelfAuthorizationFilter : IAuthorizationFilter
{
public void OnAuthorization(AuthorizationFilterContext context)
{
ClaimsPrincipal principal = context.HttpContext.User;
........
}
}
, когда я настроил выше, проблема в context.HttpContext.User не возвращает никаких утверждений как часть "Идентичность »объекта в запросе.Я ожидаю, что объект "Заявки" будет иметь разные утверждения, которые уже настроены.
Все работает нормально, если у меня есть либо "InternalBearer" или "ExternalBearer", но не оба.
Что такоея здесь не так делаю?Любая помощь приветствуется.
С уважением, Мадху