-
Notifications
You must be signed in to change notification settings - Fork 0
Аутентификация в 1С через OpenAM по протоколу OAuth2 OIDC
1С поддерживает “из коробки” несколько способов аутентификации - например по логину и паролю и аутентификацию операционной системы. Но иногда этих способов недостаточно для удобства пользователей и удовлетворения требований безопасности. Например, 1С не поддерживает аутентификацию по коду из СМС или по биометрии.
Больше возможностей для управления аутентификацией реализуют специальные решения. Одним из таких решения является OpenAM.
В данной статье мы настроим аутентификацию в 1C через OpenAM используя OAuth2/OIDC протокол.
Пусть OpenAM располагается на хосте openam.example.org
. Если у вас уже установлен OpenAM, можете пропустить этот шаг. Самым простым способом развернуть OpenAM можно в Docker контейнере. Перед запуском, добавьте имя хоста и IP адрес в файл hosts
, например 127.0.0.1 openam.example.org
.
В Windows системах файл hosts
находится по адресу C:\Windows\System32\drivers\etc\hosts
, в Linux и Mac находится по адресу /etc/hosts
После этого запустите Docker контейнер OpenAM Выполните следующую команду:
docker run -h openam.example.org -p 8080:8080 --name openam openidentityplatform/openam
После того, как сервер запустится, запустите начальную конфигурацию OpenAM. Выполните следующую команду:
docker exec -w '/usr/openam/ssoconfiguratortools' openam bash -c \
'echo "ACCEPT_LICENSES=true
SERVER_URL=http://openam.example.org:8080
DEPLOYMENT_URI=/$OPENAM_PATH
BASE_DIR=$OPENAM_DATA_DIR
locale=en_US
PLATFORM_LOCALE=en_US
AM_ENC_KEY=
ADMIN_PWD=passw0rd
AMLDAPUSERPASSWD=p@passw0rd
COOKIE_DOMAIN=openam.example.org
ACCEPT_LICENSES=true
DATA_STORE=embedded
DIRECTORY_SSL=SIMPLE
DIRECTORY_SERVER=openam.example.org
DIRECTORY_PORT=50389
DIRECTORY_ADMIN_PORT=4444
DIRECTORY_JMX_PORT=1689
ROOT_SUFFIX=dc=openam,dc=example,dc=org
DS_DIRMGRDN=cn=Directory Manager
DS_DIRMGRPASSWD=passw0rd" > conf.file && java -jar openam-configurator-tool*.jar --file conf.file'
После успешной конфигурации можно приступить к дальнейшей настройке.
Зайдите в консоль администратора по ссылке
http://openam.example.org:8080/openam/XUI/#login/
В поле логин введите значение amadmin
, поле пароль введите значение из параметра ADMIN_PWD
команды установки, в данном случае passw0rd
Выберите требуемый realm. В разделе Dashboard кликните на элементе Configure OAuth Provider
Затем Configure OpenID Connect
В открывшейся форме оставьте все настройки без изменений и нажмите кнопку “Create”
Откройте консоль администратора, перейдите в нужный realm, в меню слева выберите пункт Services
и выберите в списке OAuth2 Provider
Найдите настройку OAuth2 Token Signing Algorithm
и установите значение RS256
. Для пропуска диалога на согласие доступа к данным можете включить настройку Allow clients to skip consent
Теперь создадим OAuth2/OIDC клиент, который будет использовать SPA приложение для аутентификации.
Зайдите в консоль администратора, выберите требуемый realm, в меню слева выберите пункт Applications и далее OAuth 2.0
В таблице Agents нажмите кнопку New
- Введите Name (client_id) и Password (client_secret) нового приложения. Пусть client_id будет
1c_enterprise
- Откройте настройки приложения
- Установите Client type в Public
- Добавьте в список Redirection URIs URI вашего приложения 1С. В нашем случае это будет
http://localhost/infobase/authform.html
- В список scope добавьте значение
openid
, это нужно, чтобы сразу получить идентификатор пользователя из возвращаемого объектаid_token
. - Установите настройку
ID Token Signing Algorithm:
вRS256
- Установите настройку
Public key selector
вJWKs_URI
- Если хотите, чтобы пользователи пропускали окно согласия на доступ к данным, включите чекбокс
Implied consent
1С для получения id_token
выполняет кросс-доменные запросы, то есть запросы на домен, на котором развернут OpenAM. Для того, чтобы такие запросы не блокировал браузер, нужно включить поддержку CORS в OpenAM.
Откройте консоль администратора. В верхнем меню выберите пункт Configure → Global Services.
Далее перейдите в CORS Settings и включите поддержку CORS
Убедитесь, что в Accepted Methods присутствуют методы GET и POST. Сохраните изменения.
Откройте консоль администратора OpenAM, перейдите в нужный realm, в меню слева выберите пункт Subjects. Задайте пароль для пользователя demo
. Для этого выберите его в списке пользователей, и нажмите ссылку Edit в пункте Password, введите и сохраните новый пароль. После настройки выйдите из консоли администратора.
Откройте конфигуратор базы 1С, создайте пользователя 1С c логином demo
и назначьте ему необходимые права.
Пусть база 1С развернута на локальном веб сервере по URL http://localhost/infobase
.
Добавьте в файл описания публикации базыdefault.vrd
настройки аутентификации по протоколу OpenID Connect:
<openidconnect>
<providers>
<![CDATA[[
{
"clientconfig": {
"loadUserInfo": false,
"filterProtocolClaims": false,
"response_type": "id_token token",
"scope": "openid",
"redirect_uri": "http://localhost/infobase/authform.html",
"client_id": "1c_enterprise",
"authority": "http://openam.example.org:8080/openam/oauth2/"
},
"authenticationUserPropertyName": "name",
"authenticationClaimName": "sub",
"discovery": "http://openam.example.org:8080/openam/oauth2/.well-known/openid-configuration",
"title": "OIDC (OpenAM)",
"name": "openam_oidc"
}
]]]>
</providers>
<allowStandardAuthentication>true</allowStandardAuthentication>
</openidconnect>
Откройте браузер и откройте базу 1С по URL http://localhost/infobase
. Вас перенаправит на аутентификацию OpenAM. Введите логин и пароль пользователя, созданного ранее.
Подтвердите согласие на доступ к данным, если ранее не отключали.
Если все настроено корректно, аутентификация в 1С завершится успешно с пользователем demo
.
Контроль доступа: аутентификация, авторизация, single-sign-on, федерация.
Предоставляет возможность подключения Web сайтов и мобильных приложений к единой точке аутентификации, авторизации и SSO (цифровой паспорт - единая точка входа в сервисы компании). Федерация путем безопасного входа через сайт Госуслуг РФ, облачных провайдеров, а также с помощью аккаунтов социальных сетей и партнеров b2b.
Поддерживает открытые стандарты аутентификации, федерации и защиты веб сервисов: CDSSO, SAML,OpenID Connect, Web Services Security.
Интегрируется с внутренними каталогами компании Active Directory, LDAP, поддерживает NTLMv2, Kerberos, x509 аутентификацию.
Эволюция: Sun Access Manager, Oracle OpenSSO, Forgerock/Open Identity Platform OpenAM