Справочный материал

Настройка поддержки OpenID-аутентификации

Описана настройка OpenID-аутентификации в файле default.vrd для зависимой информационной базы и OpenID-провайдера. Приведены запросы внешнего интерфейса и требования к внешним провайдерам.. Настройка для использования OpenID. Настройка информационной базы, выступающей OpenID-провайдером. Дополнительный интерфейс для использования внешними ресурсами. Требования к внешним OpenID-провайдерам

Два защищённых портала, соединённые световым маршрутом: провайдер подтверждает доступ к зависимой базе через одноразовый ключ.

Настройка для использования OpenID

Настройка информационной базы, выступающей OpenID-провайдером

Дополнительный интерфейс для использования внешними ресурсами

Требования к внешним OpenID-провайдерам

 

Настройка для использования OpenID

Если информационная база использует OpenID-аутентификацию, в файле default.vrd, используемом для публикации информационной базы на веб-сервере, необходимо указать адрес OpenID-провайдера, с помощью которого выполняется аутентификация. Для этого предназначены элементы <openid> и <rely>.

Пример:

<?xml version="1.0" encoding="UTF-8"?>
<point xmlns="http://bas-soft.eu/virtual-resource-system"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                    base="/demo"
                    ib="Srvr=&quot;tcp://Server&quot;;Ref=&quot;demo&quot;;"
                    enable="false">
    <openid>
        <rely url="https://myserver.org/users-ib/e1cib/oid2op"/>
    </openid>
</point>

Эти элементы описывают URL OpenID-провайдера, который выполняет аутентификацию пользователя для информационной базы с OpenID-аутентификацией. В приведенном примере OpenID-провайдером является информационная база, опубликованная по адресу https://myserver.org/users-ib.

Настройку этого параметра можно выполнить с помощью диалога публикации на веб-сервере на вкладке OpenID.

Настройка информационной базы, выступающей OpenID-провайдером

Если информационная база выступает OpenID-провайдером, в файле default.vrd, используемом для публикации информационной базы на веб-сервере, необходимо указать, что эта информационная база является OpenID-провайдером. Для этого предназначены элементы <openid> и <provider>.

Пример:

<?xml version="1.0" encoding="UTF-8"?>
<point xmlns=http://bas-soft.eu/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=&quot;tcp://Server&quot;;Ref=&quot;oidusers&quot;;"
        enable="false">
    <openid>
        <provider>
            <lifetime>432000</lifetime>
        </provider>
    </openid>
</point>

Эти элементы указывают, что:

  • информационная база выступает OpenID-провайдером;
  • срок действия признака аутентифицированности составляет 432 000 секунд (или 5 суток);
  • URL, указанный в элементе <rely> файла default.vrd (адрес OpenID-провайдера), может выглядеть следующим образом: https://myserver.org/users-ib/e1cib/oid2op. URL будет иметь такой вид, если в качестве имени хоста, на котором опубликована информационная база, используется myserver.org.

Настройку этого параметра можно выполнить с помощью диалога публикации на веб-сервере на вкладке Прочее, в группе OpenID.

Дополнительный интерфейс для использования внешними ресурсами

К OpenID-провайдеру, которым является информационная база BAS, можно обращаться по стандартному протоколу 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 обязательный

Пароль пользователя.

openid.auth.2FCode необязательный

Код второго фактора аутентификации.

opeind.auth.short необязательный

Если параметру установлено значение true, аутентификация выполняется в пределах сеанса веб-браузера, но не дольше, чем значение параметра lifetime файла default.vrd, описывающего публикацию информационной базы OpenID-провайдера.

openid.auth.check необязательный

Необходимо выполнить проверку ответа на этот запрос (параметр равен true). Имеет смысл только при непустом параметре openid.return_to.

openid.return_to необязательный

Содержит URL, на который выполняется переход после обработки запроса.

Возвращаемое значение:

Если параметр openid.return_to не указан, возвращается пустой документ с кодом состояния HTTP:

  • 200 – аутентификация выполнена успешно;
  • 400 – аутентификация не выполнена;
  • 402 – аутентификация по логину и паролю выполнена успешно. Необходимо ввести код второго фактора. В ответе должен быть заголовок с именем 2FAType, который может содержать одно из значений:

    • secretCode – для аутентификации следует ввести секретный код;
    • external – второй фактор выполняется на стороне провайдера.
    • К моменту получения такого кода ответа запрос на выполнение второго фактора аутентификации уже отправлен OpenID-провайдером провайдеру второго фактора аутентификации.
    • Предполагается, что OpenID-провайдер проверит корректность логина и пароля, но не будет создавать сеанс пользователя при выявлении необходимости выполнить второй фактор аутентификации. Сеанс будет создан при следующем обращении, после повторной проверки логина, пароля и второго фактора.
    • После получения ответа 402 необходимо выполнить следующее:

      • При аутентификации с помощью кода (secretCode) – добавить секретный код как дополнительный параметр в запрос.
      • При аутентификации на стороне провайдера (external) – ничего не добавлять. Сервер отправит запрос на проверку аутентификации и проверит второй фактор.

Если параметр openid.return_to указан, выполняется перенаправление на адрес, указанный в параметре. При успешной аутентификации в URL добавляются следующие параметры:

  • openid.auth.user со значением, равным имени пользователя;
  • openid.auth.uid с одноразовым идентификатором значения для проверки этого ответа. Этот параметр указывается при указании параметра openid.auth.check в запросе на аутентификацию.

При неудачной аутентификации выполняется переход по указанному URL без добавления каких-либо параметров.

Запрос OpenID-провайдера на проверку аутентификации

Описание:

Выполняется проверка аутентификации.

Синтаксис:

https://hostname/ProviderIB/e1cib/oid2op/2FACheck?user=xxx

Параметры:

user обязательный

Имя пользователя (xxx), аутентификацию которого следует проверить.

Возвращаемое значение:

Возвращается пустой документ с кодом состояния HTTP:

  • 200 – аутентификация выполнена успешно, пользователь аутентифицирован с помощью второго фактора;
  • 400 – аутентификация не выполнена по одной из причин:

    • не указан параметр user;
    • перед этим запросом не было обычного запроса на аутентификацию;
    • аутентификация не выполнена;
    • время аутентификации истекло.

Запрос 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-провайдере, перезапускает веб-клиент. Веб-клиент выполнит запрос отмены аутентификации для 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.

Требования к внешним OpenID-провайдерам

При необходимости использования внешних по отношению к системе OpenID-провайдеров, которые планируется применять для аутентификации пользователей информационных баз, необходимо учитывать следующие особенности:

1. OpenID-провайдер должен поддерживать спецификации протокола OpenID Authentication 2.0 и расширение этого протокола, реализованное в системе.

2. Для работы с помощью тонкого клиента системы OpenID-провайдер должен использовать файл cookie с именем vrs_oid2op_auth.

3. При получении запроса с HTTP-заголовком Accept, запрещающим использование HTML-контента в ответе, OpenID-провайдер не должен использовать перенаправление с применением HTML-форм (раздел 5.2.2 спецификации протокола OpenID Authentication 2.0).

4. OpenID-провайдер при возврате информационным базам системы параметров openid.claimed_id и openid.identity должен устанавливать значения этих параметров в формате <адрес OpenID-провайдера>?lid=<логин-пользователя>, например https://myserver.org/users-ib/e1cib/oid2op?lid=user1.

Также может быть полезно учитывать следующие особенности:

  • При обращении информационной базы BAS к OpenID-провайдеру в параметрах запроса openid.claimed_id и openid.identity всегда передается значение https://specs.openid.net/auth/2.0/identifier_select.
  • Информационная база BAS не использует для проверки подлинности сообщений провайдера общий секретный ключ (по алгоритму Диффи — Хеллмана). Проверка подлинности выполняется посредством прямого запроса к OpenID-провайдеру в соответствии с требованиями раздела 11.4.2 спецификации протокола OpenID Authentication 2.0.
Записаться по телефону