Настройка поддержки OpenID-аутентификации
Настройки для использования OpenID
Если информационная база использует OpenID-аутентификацию, то в файле default.vrd (с помощью которого выполнена публикация информационной базы на web-сервере) необходимо указать адрес OpenID-провайдера, с помощью которого происходит аутентификация. Для этого предназначены элементы <openid> и <rely>.
Пример:
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/demo"
ib="Srvr="tcp://Server";Ref="demo";"
enable="false">
<openid>
<rely url="http://myserver.org/users-ib/e1cib/oida"/>
</openid>
</point>
Эти элементы описывают URL к провайдеру OpenID, который выполняет аутентификацию пользователя для информационной базы, использующей OpenID-аутентификацию. В данном примере в качестве провайдера OpenID выступает информационная база, опубликованная по адресу http://myserver.org/users-ib.
Настройки для провайдера OpenID
Если информационная база выступает в роли OpenID-провайдера, то в файл default.vrd (с помощью которого выполнена публикация информационной базы на web-сервере) необходимо указать, что данная информационная база выступает в роли OpenID-провайдера. Для этого предназначены элементы <openid> и <provider>.
Пример:
<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
base="/users-ib" ib="Srvr="tcp://Server";Ref="oidusers";"
enable="false">
<openid>
<provider>
<lifetime>1209600</lifetime>
</provider>
</openid>
</point>
Эти элементы указывают:
- что информационная база выступает в роли OpenID-провайдера;
- что время жизни признака аутенцифицированности составляет 1 209 600 секунд (или 2 недели);
- URL, который следует указать в элементе <rely> файла default.vrd (адрес OpenID-провайдера), может выглядеть следующим образом — http://myserver.org/users-ib/e1cib/oida. Такой вид URL будет иметь в том случае, если имя хоста, на котором опубликована информационная база, является myserver.org.
Дополнительный интерфейс для использования внешними ресурсами
К OpenID-провайдеру, реализованный «1С:Предприятием», можно обращаться по стандартному протоколу OpenID 2.0 с учетом некоторых особенностей:
- в запросах на интерактивную и неинтерактивную аутентификации (параметр openid.mode равен checkid_immediate или checkid_setup) параметрам openid.claimed_id и openid.identity должно быть установлено значение http://specs.openid.net/auth/2.0/identifier_select (установка этого значения означает, что идентификатор пользователя определяет провайдер);
- запросы на неинтерактивную аутентификацию с прочими значениями параметров openid.claimed_id и openid.identity приводят к запросу на интерактивную аутентификацию, во время которой значения openid.claimed_id и openid.identity определяет провайдер.
В OpenID-провайдере реализована форма для ввода имени пользователя и пароля при интерактивной аутентификации.
Также система предоставляет ряд команд, упрощающих использование OpenID-провайдера сторонними системами, описание которых приведено ниже. При описании команд используются следующие сокращения:
- ProviderIB – информационная база OpenID-провайдера;
- RPID – информационная база зависимой стороны OpenID.
Параметры запросов передаются в кодировке UTF-8.
Запрос XRDS-документа провайдера OpenID выполняет получение XRDS-документа, описывающего свойства OpenID-провайдера.
Синтаксис:
https://hostname/ProviderIB/e1cib/oid2op
Возвращаемое значение:
XRDS-документ, описывающий свойства OpenID-провайдера.
Запрос XRDS-документа зависимой стороны OpenID выполняет получение XRDS-документа, описывающего свойства зависимой стороны OpenID.
Синтаксис:
https://hostname/RPIB/e1cib/oid2rp
Возвращаемое значение:
XRDS-документ, описывающий свойства зависимой стороны OpenID.
Запрос аутентификации — выполняет запрос аутентификации.
Синтаксис:
https://hostname/ProviderIB/e1cib/oid2op?cmd=auth
Параметры:
- openid.auth.user (обязательный) — имя пользователя, как оно задано в базе OpenID-провайдера.
- openid.auth.pwd (обязательный) — пароль пользователя.
- opeind.auth.short (необязательный) — если параметр установлен в значение true, то аутентификация выполняется в рамках сессии web-браузера, но не больше, чем значение параметра lifetime файла default.vrd, описывающего публикацию информационной базы OpenID-провайдера.
- openid.auth.check (необязательный) — требуется выполнить проверку ответа на данный запрос (параметр установлен в значение true). Имеет смысл только в том случае, если указан параметр openid.return_to.
- openid.return_to (необязательный) — содержит URL, на который выполняется переход после обработки запроса.
Возвращаемое значение:
Если не указан параметр openid.return_to, то возвращается пустой документ с кодом состояния HTTP:
- 200 — аутентификация прошла успешно;
- 400 — аутентификация не выполнена.
Если параметр openid.return_to указан, то выполняется переадресация на адрес, указанный в параметре. В случае успешной аутентификации к URL добавляются следующие параметры:
- openid.auth.user с именем пользователя в качестве значения;
- openid.auth.uid с одноразовым идентификатором в качестве значения, для проверки данного ответа (данный параметр указывается в том случае, если в запросе на аутентификацию указан параметр openid.auth.check).
В случае неудачной аутентификации выполняется переход по указанному URL без добавления каких-либо параметров.
Запрос OpenID-провайдера для проверки активной аутентификации — выполняется проверка аутентификации.
Синтаксис:
https://hostname/ProviderIB/e1cib/oid2op?cmd=lookup
Параметры:
- openid.return_to (обязательный) — содержит URL, на который выполняется переход после обработки запроса;
- openid.auth.check (необязательный) — требуется выполнить проверку ответа на данный запрос (параметр установлен в значение true). Имеет смысл только в том случае, если указан параметр openid.return_to.
Возвращаемое значение:
Выполняется переадресация на URL, указанный в параметре openid.return_to. В случае успешной аутентификации к URL добавляются следующие параметры:
- openid.auth.user с именем пользователя в качестве значения;
- openid.auth.uid с одноразовым идентификатором в качестве значения, для проверки данного ответа (данный параметр указывается в том случае, если в запросе на аутентификацию указан параметр openid.auth.check).
В случае неудачной аутентификации выполняется переход по указанному URL без добавления каких-либо параметров.
Выполнить проверку ответа OpenID-провайдера — выполняет проверку ответа OpenID-провайдера для запросов cmd=auth и cmd=lookup в случае, если в запросе передан параметр openid.auth.check со значением true.
Синтаксис:
https://hostname/ProviderIB/e1cib/oid2op?cmd=check
Параметры:
- openid.auth.user (обязательный) — имя пользователя, которое получено из одноименного параметра запроса;
- openid.auth.uid (обязательный) — значение одноразового идентификатора ответа OpenID-провайдера, полученный из одноименного параметра запроса.
Возвращаемое значение:
Возвращается документ типа text/plain следующего содержимого:
- is_valid:true – ответ действительно сформирован используемым OpenID-провайдером (при этом код состояния HTTP будет равен 200);
- is_valid:false – используемый OpenID-провайдер не формировал проверяемый ответ (при этом код состояния HTTP будет равен 400).
Запрос отмены аутентификации для зависимой стороны — выполняет отмену аутентификации в том случае, если не известен URL OpenID-провайдера. Завершает текущий сеанс, отменяет аутентификацию на OpenID-провайдере, перезапускает web-клиент. web-клиент выполнит запрос отмены аутентификации для OpenID-провайдера.
Синтаксис:
https://hostname/RPIB/e1cib/oid2op?cmd=logout
Запрос отмены аутентификации для OpenID-провайдера — выполняет отмену аутентификации на указанном OpenID-провайдере.
Синтаксис:
https://hostname/ProviderIB/e1cib/oid2op?cmd=logout
Параметры:
openid.return_to (необязательный) — содержит URL, на который выполняется переход после обработки запроса.
Возвращаемое значение:
Если указан параметр openid.return_to, то выполняется переадресация на указанный URL, в противном случае возвращается пустой ответ с кодом состояния HTTP равным 200.