Глава 1.             Аутентификация OpenID

1.1.          Виды аутентификации

Аутентификация – проверка принадлежности предъявленного идентификатора (имени) конкретному пользователю системы, проверка подлинности. Система «1С:Предприятие» поддерживает несколько различных вариантов аутентификации, которые будут рассмотрены в следующих разделах.

1.1.1.   Аутентификация средствами системы «1С:Предприятие»

Пользователь может быть аутентифицирован системой «1С:Предприятие» с помощью ввода его имени и пароля (в диалоге аутентификации, в виде параметров командной строки или строки соединения с информационной базой для внешнего соединения или automation-сервера). В этом случае проверка наличия пользователя и корректности ввода его пароля выполняет система «1С:Предприятие».

1.1.2.   Аутентификация операционной системы

Пользователь может быть аутентифицирован неявно средствами операционной системы. Для этого пользователю должен быть поставлен в соответствие некоторый пользователь операционной системы. При старте системы, «1С:Предприятие» запрашивает у операционной системы пользователя, который аутентифицирован в системе в данный момент. Для этого в ОС Windows используется интерфейс SSPI, а в ОС Linux — GSS-API. Затем выполняется проверка, что данному пользователю операционной системы сопоставлен пользователь «1С:Предприятия». Если поиск заканчивается успешно – считается, что пользователь системы «1С:Предприятие» аутентифицирован успешно, и диалог аутентификации не отображается.

Примечание. Не поддерживается аутентификация пользователя средствами ОС в том случае, если клиентское приложение подключается к информационной базе через веб-сервер Apache, работающий под управлением ОС Windows.

Пользователь операционной системы указывается в формате: \\имя_домена\имя_пользователя.

Если необходимо принудительно выполнить аутентификацию средствами системы «1С:Предприятие», то в командной строке запуска клиентского приложения следует указать ключ командной строки -WA-. Соответственно, ключ командной строки –WA+ предназначен для принудительного применения аутентификации средствами операционной системы (действует по умолчанию).

1.1.3.   Аутентификация с помощью OpenID

OpenID (http://openid.net/) – это протокол, который позволяет пользователю использовать единую учетную запись для аутентификации на множестве не связанных друг с другом ресурсов, систем и т.д. Система «1С:Предприятие» использует протокол, созданный на основе протокола OpenID версии 2.0 по модели Direct Identity.

Примечание 1. Данный способ аутентификации не применим при обращении к веб-сервисам, опубликованным из «1С:Предприятия».

Примечание 2. В роли провайдера OpenID выступает информационная база «1С:Предприятия».

Общая схема работы выглядит следующим образом:

OpenID-аутентифкация работает только в тех случаях, когда доступ к информационной базе осуществляется по протоколу http и https. Это означает, что использовать OpenID-аутентификацию могут только веб-клиент и тонкий клиент, подключенный к информационной базе через веб-сервер. При OpenID-аутентификации возможны кросс-доменные запросы при работе с помощью тонкого клиента, а также с помощью веб-браузеров Mozilla Firefox, Google Chrome, Safari и Microsoft Internet Explorer версий 8 и 9. В веб-браузере Microsoft Internet Explorer версий 6.0 и 7, после ввода имени пользователя и пароля, открывается окно сообщения с запросом подтверждения на выполнение операции. Если пользователь подтверждает выполнение операции — процесс аутентификации продолжается. В противном случае вновь предлагается ввести имя пользователя и пароль.

В качестве OpenID-провайдера выступает информационная база системы «1С:Предприятие». В качестве OpenID-идентификатора используются имена пользователей информационной базы. Такая информационная база должна быть особым образом опубликована на веб-сервере (в файле публикации default.vrd расположен особый элемент) и доступна для информационной базы, которая желает выполнять аутентификацию с помощью OpenID.

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

Если необходимо принудительно выполнить аутентификацию с помощью OpenID, то в командной строке запуска клиентского приложения следует указать ключ командной строки -OIDA+ (действует по умолчанию). Соответственно, ключ командной строки –OIDA- предназначен для принудительного отключения аутентификации с помощью OpenID.

Подробнее о настройке веб-сервера для работы с OpenID-аутентификацией см. стр. 2.

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

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

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

Если информационная база использует OpenID-аутентификацию, то в файле default.vrd (с помощью которого выполнена публикация информационной базы на веб-сервере) необходимо указать адрес 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=&quot;tcp://Server&quot;;Ref=&quot;demo&quot;;"

       enable="false">

<openid>

   <rely url="http://myserver.org/users-ib/e1cib/oida"/>

</openid>

</point>

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

Подробное описание файла default.vrd см. стр. 4.

1.2.2.   Настройки для провайдера OpenID

Если информационная база выступает в роли OpenID-провайдера, то в в файл default.vrd (с помощью которого выполнена публикация информационной базы на веб-сервере) необходимо указать, что данная информационная база выступает в роли 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=&quot;tcp://Server&quot;;Ref=&quot;oidusers&quot;;" enable="false">

<openid>

   <provider>

    <lifetime>1209600</lifetime>

   </provider>

</openid>

</point>

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

Подробное описание файла default.vrd см. стр. 4.

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

Реализация OpenID-провайдера в системе «1С:Предприятие» выполняет аутентификацию только в режиме checkid_immediate и не предоставляет страницу для ввода имени пользователя и пароля. Однако, в системе реализован ряд команд, упрощающих использование OpenID-провайдера сторонними системами.

Выполнение аутентификации

Описание:

Выполняет аутентификацию. HTTP-метод — POST.

В теле запроса передаются две строки: имя и пароль пользователя.

Синтаксис:

/e1cib/oida?cmd=login

Параметры:

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

Адрес, на который будет выполнен переход в случае успешной аутентификации.

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

Проверка аутентификации

Описание:

Выполняется проверка аутентификации. HTTP-метод — GET.

Синтаксис:

/e1cib/oida?cmd=isloggedin

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

«Выход» из системы

Описание:

Выполняет «выход» из системы, при этом сбрасывается признак аутентифицированности. HTTP-метод — GET.

Синтаксис:

/e1cib/oida?cmd=logout

Параметры:

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

Адрес, на который будет выполнен переход в случае успешного «выхода» из системы.

1.3.          Элемент <openid> файла default.vrd

Данный элемент описывает настройки, связанные с OpenID-аутентификацией. Элемент <openid> подчинен элементу <point> и может быть один или ни одного. Элементу <openid> подчинены элементы <rely> и <provider>. Подчиненные элементы могут быть или в единственном числе или отсутствовать.

Данный элемент не содержит атрибутов.

1.3.1.   Элемент <rely>

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

Атрибут url

Указывает URL информационной базы «1С:Предприятия», выступающей в роли OpenID-провайдера. Информационная база должна быть опубликована особым образом.

Пример:

<rely url="http://myserver.org/users-ib/e1cib/oida"/>

1.3.2.   Элемент <provider>

Элемент указывает, что данная информационная база выступает в роли OpenID-провайдера. Данному элементу подчинен элемент <lifetime>, который может быть один или ни одного.

Пример:

<?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=&quot;tcp://Server&quot;;Ref=&quot;demo&quot;;" enable="false">

<openid>

   <provider/>

</openid>

</point>

1.3.2.1.    Элемент <lifetime>

Элемент указывает время жизни признака аутентифицированности идентификатора в секундах. Если не указан, то значением по умолчанию является 604 800 секунд (1 неделя).

Пример:

<?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=&quot;tcp://Server&quot;;Ref=&quot;demo&quot;;" enable="false">

<openid>

   <provider>

    <lifetime>1209600</lifetime>

   <provider>

</openid>

</point>