www-authenticate: Bearer error="invalid_token",error_description="Ключ подписи не найден"
Я настроил Keycloak и свой API со следующей конфигурацией:
- Keycloak работает в контейнере Docker. (настроено с помощью start-dev)
- Я настроил клиент для своего API в Keycloak и установил соответствующие учетные данные.
- The AuthorizationUrl и TokenUrl установлены на конечные точки Keycloak
В Program.cs я настроил аутентификацию носителя JWT как следует:
Код: Выделить всё
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.RequireHttpsMetadata = false;
options.Audience = Environment.GetEnvironmentVariable("AuthticationAudience");
options.MetadataAddress = Environment.GetEnvironmentVariable("AuthticationMetadataAddress")!;
options.TokenValidationParameters = new TokenValidationParameters
{
ValidIssuer = Environment.GetEnvironmentVariable("AuthenticationValidIssuer")
};
});
Код: Выделить всё
options.AddSecurityDefinition("Keycloak", new OpenApiSecurityScheme
{
Type = SecuritySchemeType.OAuth2,
Flows = new OpenApiOAuthFlows
{
Implicit = new OpenApiOAuthFlow
{
AuthorizationUrl = new Uri("http://localhost:8090/realms/primas/protocol/openid-connect/auth"),
Scopes = new Dictionary
{
{ "openid", "openid" },
{ "profile", "profile" }
}
}
}
});
Мой файл Docker Compose включает следующие службы:
- служба keycloak (работает Keycloak)
- служба primasapi (работает мой ASP.NET Core API)
- mariadb, mysql , службы Redis для зависимостей баз данных
Несмотря на конфигурацию, когда я пытаюсь пройти аутентификацию с использованием токена JWT, я получаю это сообщение об ошибке в ответе:
www-authenticate: Bearer error="invalid_token", error_description="Ключ подписи не найден"
Я проверил что сервер Keycloak работает и токен генерируется правильно. Однако, похоже, API не может проверить токен, поскольку не может найти ключ подписи.
Что я пробовал
- Я убедился, что URL-адрес токена и эмитент в TokenValidationParameters верны.
- Я проверил открытые ключи из Keycloak, но API все еще не может проверить жетон. Кто-нибудь знает, что может быть причиной ошибки «ключ подписи не найден» и как ее устранить?
Заранее благодарим за любую помощь!
п>
Подробнее здесь: https://stackoverflow.com/questions/793 ... authentica
Мобильная версия