Ключ подписи 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 и, следовательно, должен рассматриваться как непрозрачный приложение. Приложение не нужно проверять, так как это не следует использовать против других серверов ресурсов. Формат это и ключ, используемый для его подписания, может быть изменен без предварительного уведомление. источник

...так что я не удается использовать маркер доступа.