IdentityServer4 зачем нам конечная точка обнаружения

Отказ от ответственности: я новичок в IdentityServer. В настоящее время экспериментирую с IdentityServer4.

У нас есть веб-сервер с веб-сервисами C#, который должен быть доступен только авторизованным пользователям. Мы хотим использовать IdentityServer4 для выдачи токенов доступа JWT.

Партнеры получают доступ к конечной точке токена, чтобы получить токен JWT. Наши серверные веб-службы получают токен и затем вызывают конечную точку обнаружения на сервере идентификации для расшифровки токена.

Я не понимаю, как это обеспечивается.

  • Нужно ли публиковать конечную точку обнаружения?

Я только хочу, чтобы мои внутренние серверные приложения использовали его.

  • Интересно, действительно ли мне нужно опубликовать конечную точку обнаружения. Разве это не должно быть защищено?
  • Есть ли другой способ расшифровки токена?

Спасибо за помощь!

1 ответ

Решение

Конечная точка обнаружения (.well-known/openid-configuration) содержит так называемый документ обнаружения. В двух словах, для большинства практических целей клиенты OpenIDConnect могут использовать этот документ, чтобы настроить себя против поставщика OpenIDConnect.

В общих чертах, некоторые клиенты, независимо от платформы реализации, будь то.NET Java или Python, могут захотеть документ обнаружения для проверки токенов по токенам, которые предположительно были выданы сервером токенов безопасности.

Давайте посмотрим на документ открытия Googles, например, который можно найти здесь. Вы заметите, что это довольно стандартный документ обнаружения, однако у них есть некоторые пользовательские значения для каждого из ключей в этом документе. Они поддерживают RS256 только для подписи токена и поддерживают целый ряд потоков openid, определяемых response_types_supported ключ в этом документе. Этот документ может дать любому клиенту, который полагается на этого провайдера OpenIDConnect, много информации, не прибегая к каким-либо запутанным преамбулу протокола.

Наконец, в отношении ваших вопросов, касающихся безопасности. Вам нужно опубликовать конечную точку обнаружения. jwks_uri это URI вашего провайдера OpendIDConnect, который содержит ваш набор веб-ключей JSON, это набор материалов безопасности (обычно открытых или общих ключей), которые используются для проверки токенов в процессе проверки.

Вы также можете использовать конечную точку самоанализа (расположенную в документе обнаружения) для проверки токенов. Вы не расшифровываете токены, они просто проверяются. Токены зашифрованы с помощью SSL. Поэтому, если вы хотите, вы можете использовать конечную точку самоанализа для проверки токенов, но это означает, что вы добавляете этот двусторонний вызов для проверки токенов поверх каждого запроса, использующего токен канала-носителя JWT.

Короче говоря, документ об обнаружении очень важен, он содержит материалы по безопасности, которые могут позволить вам выполнить проверку JWT без выполнения внешнего вызова.

Другие вопросы по тегам