5.4.4.3. Метаданные клиента

Клиент перед первым обращением к серверу авторизации должен безопасным образом предоставить серверу авторизации метаданные клиента, описывающие его параметры. Настоящий документ не определяет конкретный способ передачи метаданных клиента серверу авторизации.

В целях данного документа используются следующие метаданные клиента (подраздел 5.5 [5]):

- <redirect_uris>: (обязательный) перечень поддерживаемых адресов переадресации клиента; одно из зарегистрированных значений URI-переадресации должно точно соответствовать значению параметра <redirect_uri>, используемому в каждом запросе аутентификации;

- <response_types>: (опциональный) перечень поддерживаемых клиентом типов ответа; настоящие рекомендации поддерживают один тип: "code";

- <grant_types>: (опциональный) перечень поддерживаемых клиентом типов разрешений на доступ (grants) из перечня: "authorization_code", "refresh_token"; по умолчанию - "authorization_code";

- <application_type>: (опциональный) тип клиента; настоящие рекомендации поддерживают только значение "web";

- <contacts>: (опциональный) список адресов электронной почты лиц, ответственных за этого клиента;

- <client_name>: (опциональный) имя клиента; оно будет показано конечному пользователю при его аутентификации;

- <logo_uri>: (опциональный) URL-ссылка на логотип клиентского приложения;

- <client_uri>: (опциональный) URL-адрес домашней страницы клиента;

- <policy_uri>: (опциональный) URL-адрес информации о том, как будут использоваться данные профиля конечного пользователя;

- <tos_uri>: (опциональный) URL-адрес, который клиент предоставляет конечному пользователю для ознакомления с условиями обслуживания клиента; если значение <tos_uri> присутствует, сервер авторизации должен показать этот URL-адрес конечному пользователю;

- <default_max_age>: (опциональный) максимальная допустимая продолжительность периода до следующей аутентификации конечного пользователя (в секундах);

- <require_auth_time>: (опциональный) логическое значение, указывающее, требуется ли указывать параметр <auth_time> в ID токене; значением по умолчанию является "false";

- <token_endpoint_auth_method>: (обязательный) поддерживаемый метод аутентификации клиента на конечной точке токена; возможные варианты, поддерживаемые настоящими спецификациями: "client_secret_jwt", "private_key_jwt", "tls_client_auth" (подраздел 5.5);

- <jwks_uri>: (опциональный) URI документа JWK Set (подпункт 5.7.3.3), содержащего ключи клиента в формате JWK; публикуемые сертификаты должны передаваться доверенным образом;

- <jwks>: (опциональный) документ JWK Set, передаваемый по значению; параметры <jwks_ uri> и <jwks> не должны одновременно присутствовать в метаданных клиента; сертификаты открытых ключей должны передаваться доверенным образом;

- <id_token_signed_response_alg>: (опциональный) алгоритм JWS (параметр <alg>) для подписания ID токена, выданного данному клиенту;

- <id_token_encrypted_response_alg>: (опциональный) алгоритм JWE (параметр <alg>) для шифрования ID токена, выданного данному клиенту. Если это значение указано, ответ будет подписан, а затем зашифрован, и результатом будет вложенный JWT. По умолчанию, если это значение опущено, шифрование не выполняется;

- <id_token_encrypted_response_enc>: (опциональный) алгоритм шифрования JWE (параметр <enc>) для шифрования ID токена, выданного данному клиенту. Если этот параметр присутствует, также должен быть указан <id_token_encrypted_response_alg>;

- <request_object_encryption_alg>: (опциональный) алгоритм (параметр <alg>), который клиент предполагает использовать для шифрования объектов запроса, отправленных серверу авторизации. Этот параметр должен включаться, когда будет использоваться симметричное шифрование. Если указано и подписание, и шифрование, объект запроса будет подписан, затем зашифрован, и результатом будет вложенный JWT. По умолчанию, если этот параметр опущен, клиент не применяет шифрование объектов запроса;

- <request_object_encryption_enc>: (опциональный) алгоритм JWE (параметр <enc>), который клиент предполагает использовать для шифрования объектов запроса, отправленных на сервер авторизации. Если присутствует данный параметр, также должен быть указан <request_object_ encryption_alg>.

5.4.4.4. Если все значения метаданных клиента корректны, сервер авторизации должен безопасным образом (с обеспечением контроля целостности и аутентификации источника данных) предоставить клиенту следующую информацию:

- <client_id>: (обязательный) уникальный идентификатор клиента, который далее будет использоваться клиентом в протоколах аутентификации;

- <client_secret>: (опциональный) секретная информация, которая используется для аутентификации клиента сервером авторизации, а также для защиты взаимодействия клиента и сервера авторизации с использованием симметричных криптографических механизмов; значение этого параметра обязательно при использовании механизма аутентификации клиента <client_secret_jwt>;

- <client_id_issued_at>: (опциональный) время выдачи идентификатора клиента;

- <client_secret_expires_at>: (обязательный, если присутствует <client_secret>) срок действия; время окончания действия <client_secret> или 0, если он не устаревает никогда; значением является число, представляющее количество секунд от 1970-01-01T0:0:0Z UTC до момента окончания действия <client_secret>.

Кроме того, сервер авторизации возвращает клиенту метаданные клиента, принятые сервером и, возможно, скорректированные им.

Должна быть обеспечена конфиденциальность передачи значения параметра <client_secret>. Механизм защиты должен быть определен на этапе разработки сервера авторизации.

Также безопасным образом (с обеспечением контроля целостности и аутентификации источника данных) должен быть доставлен клиенту TLS-сертификат сервера авторизации.

Примечания:

1. Доставка метаданных от клиента серверу авторизации и обратно может быть выполнена с помощью процедуры динамической регистрации клиента ([42], [43]). В случае ее реализации требуется проведение исследований безопасности ее использования.

2. Передача информации между клиентом и конечной точкой регистрации сервера авторизации должна быть защищена с помощью протокола TLS с аутентификацией сервера авторизации.