Приложение A. Механизм SASL EXTERNAL
Данное приложение является нормативным.
Механизм EXTERNAL позволяет клиенту запросить у сервера использования свидетельств (credentials), созданных с использованием внешних по отношению к механизму средств, для аутентификации клиента. Внешними средствами могут быть, например, службы IP Security [RFC4301] или TLS [RFC4346]. В отсутствие некой предварительной договоренности между клиентом и сервером клиент не может делать каких-либо предположений об использовании сервером внешних средств для получения клиентских свидетельств или о форме этих свидетельств. Например, клиент не может предполагать, что сервер будет использовать свидетельства, созданные клиентом с помощью TLS.
A.1. Техническая спецификация механизма EXTERNAL
Название механизма — "EXTERNAL".
Механизм не обеспечивает защитного уровня.
Механизм может передавать строки authorization identity. Пустая строка означает, что клиент запрашивает у сервера использование для него идентификации, которую сервер связывает с клиентскими свидетельствами. Непустая строка говорит о том, что клиент запрашивает идентификацию с использованием этой строки.
Предполагается, что клиент первым передает данные в процессе аутентификационного обмена. Когда клиент не включает начальный отклик в запрос на организацию аутентификационного обмена, сервер принимает на ответственность за передачу сообщения с пустым начальным запросом (challenge), на который клиент будет давать начальный отклик.
Клиент передает начальный отклик, содержащий строку идентификации для проверки полномочий в кодировке UTF-8 [RFC3629]. Этот отклик будет непустым, когда клиент запрашивает у сервера аутентификацию с использованием представленной (непустой) строки. Пустой отклик будет передаваться в тех случаях, когда клиент запрашивает у сервера аутентификацию с использованием аутентификационных свидетельств (authentication credentials).
Синтаксис начального отклика задается как значение <extern-initial-resp> описанное ниже в формате ABNF [RFC4234].
external-initial-resp = authz-id-string authz-id-string = *( UTF8-char-no-nul ) UTF8-char-no-nul = UTF8-1-no-nul / UTF8-2 / UTF8-3 / UTF8-4 UTF8-1-no-nul = %x01-7F
Механизм не использует дополнительных запросов (challenge) и откликов.
Следовательно, сервер возвращает результат аутентификационного обмена.
Обмен завершается отказом в следующих случаях:
- клиент не создал свидетельств с использованием внешних средств;
- клиент использует неподходящие свидетельства;
- клиент передал пустую строку authorization identity, а сервер не желает или не может связать аутентификационную идентификацию с клиентскими свидетельствами;
- клиент представил непустую строку authorization identity, которая некорректна с точки зрения синтаксических требований, предъявляемых спецификацией прикладного протокола;
- клиент представил непустую строку authorization identity, представляющую идентификацию, которая не разрешена для клиента;
- сервер не желает или не может обслужить клиента по той или иной причине.
В остальных случаях аутентификационный обмен завершается успешно. При индикации успешного завершения дополнительных данных не передается.