Ключ подписи UseJwtBearerAuthentication
Я пытаюсь реализовать аутентификацию носителя JWT в моем приложении AspNetCore MVC (только веб-API) с помощью JwtBearerMiddleware, но получаю 401
ответ с заголовка:
WWW-Authenticate: Bearer error="invalid_token", error_description="The signature key was not found"
соответствующий код при запуске.cs выглядит так:
app.UseJwtBearerAuthentication(new JwtBearerOptions
{
Authority = "https://example.okta.com",
Audience = "myClientId"
});
URL-адрес власти я ожидал middleware на запрос моего провайдера идентификации метаданных из https://example.okta.com/.well-known/openid-configuration
для получения jwks_uri
чтобы затем получить ключи подписи от https://example.okta.com/oauth2/v1/keys
. Я не думаю, что это происходит. Что я нужно сделать, чтобы заставить его найти и использовать ключи подписи? Спасибо
1 ответов
после следующих ссылок и копания в aspnet Security repo (в частности JwtBearerHandler
и JwtBearerMiddleware
классы), что привело меня к Microsoft.IdentityModel пространство имен, которое находится в Azure Extensions repo (сначала ConfigurationManager<T>
класс, затем в OpenIdConnectConfigurationRetriever
класса (GetAsync
способ), затем к JsonWebKeySet.GetSigningKeys()
метод), я, наконец, обнаружил, что JwtBearerMiddleware действительно получает ключи от jwks_uri в метаданных. Фу.
так почему же это не работает? Что я должен был проверить раньше, что ребенок в заголовке предъявителя JWT фактически не соответствовал ни одному из ребенокС jwks_uri, следовательно, он не был найден. Это был код доступа, который я отправлял в качестве токена носителя. Маркер с другой стороны есть ребенок это соответствует, поэтому используйте это вместо него сработало!
С тех пор я прочел:
маркер доступа OIDC применим только для Okta /OAuth2 / v1 / userInfo endpoint и, следовательно, должен рассматриваться как непрозрачный приложение. Приложение не нужно проверять, так как это не следует использовать против других серверов ресурсов. Формат это и ключ, используемый для его подписания, может быть изменен без предварительного уведомление. источник
...так что я не удается использовать маркер доступа.