Плагин аутентификации пользователей «OAuth 3КL». Настройка авторизации через социальные сети
1. Общая информация
2. Процедура авторизации через социальные сети
3. Основные настройки плагина требуются права администратора
3.1. Секция «Общие настройки»
3.2. Секция «Настройки подтверждения аккаунтов администратором»
3.3. Секция «Блокировка полей пользователя»
3.4. Интерфейс управления настраиваемыми провайдерами требуются права администратора
4. Особенности настройки интегрированных источников авторизации
4.1. ВКонтакте
4.2. Одноклассники.ру
4.3. LinkedIn
4.4. Яндекс
4.5. Mail.ru
4.6. GitHUB
4.7. MSN
4.8. ЕСИА (портал Госуслуг)
4.9. Google
4.10. Корпоративный Google
4.11. Битрикс24
4.12. УНТИ 20.35
5. Примеры и решения
1. Общая информация
Плагин «Аутентификация пользователей OAuth 3KL» позволяет пользователям регистрироваться и входить в СЭО 3KL, используя аккаунт в какой-либо социальной сети, корпоративном портале или личном кабинете (facebook, vk, Битрикс24, Яндекс и т.д.) без необходимости ввода логина и пароля.
В плагине реализована интеграция с более чем десятью популярными российскими и международными социальными сетями и сервисами, чей перечень постоянно расширяется и дополняется. Перечень всех интегрированных социальных сетей и сервисов с подробным описанием настройки авторизации содержится в Разделе 4 «Особенности настройки интегрированных источников авторизации». Также есть возможность по собственному усмотрению добавлять и настраивать дополнительных провайдеров. Плагин использует защищенный и надежный протокол авторизации OAuth 2.0, по которому данные пользователей считываются и передаются автоматически из их профилей в социальных сетях.
В отличие от модуля авторизации OAuth 2, который доступен в Community-версии Moodle и в СЭО 3KL, плагин OTOAuth присутствует исключительно в СЭО 3KL и обладает рядом уникальных преимуществ:
- Гибкая привязка аккаунтов. Плагин позволяет присоединить к существующей учетной записи пользователя в СЭО 3KL одну или несколько учетных записей в социальных сетях/корпоративных порталах/личных кабинетах, входить в систему через любую из них, либо отсоединить их в любой момент. Привязка аккаунтов осуществляется через блок «Привязка к социальной сети», который добавляется администратором в Личный кабинет для всех пользователей.
- Более интуитивно понятные настройки плагина.
- Возможность включать/отключать режим подтверждения (активации) учетных записей зарегистрировавшихся через социальные сети пользователей.
- Наличие документации на русском языке.
- Поддержка «из коробки» и более удобная настройка интеграции российских социальных сетей, таких как ВКонтакте, Яндекс, Одноклассники.
Использование плагина «Аутентификация пользователей OAuth 3KL» упрощает работу для слушателей и администраторов СЭО 3KL:
- Не требуется придумывать, запоминать и повторно вводить логин и пароль (сквозная авторизация), используется меньше учетных данных, можно использовать единый логин и пароль, например, от аккаунта в наиболее часто используемой социальной сети.
- Повышается достоверность информации о пользователях, особенно при авторизации через ЕСИА (Госуслуги). При авторизации через ЕСИА обеспечивается максимально точное и надежное удостоверение личности слушателей аналогом цифрового паспорта, вероятность сообщения недостоверных данных практически отсутствует.
- Укорачивается путь к оплате курса и повышается конверсия для сторонних пользователей .
- При авторизации через корпоративные порталы импортируется официальная, полная и достоверная информация учетных записей
- З заметно снижается риск повторного использования профиля пользователя третьими лицами.
- При авторизации через собственно социальные сети выполняется привязка данных разных аккаунтов к одному профилю в СЭО 3KL, достигается консолидация разных пользовательских данных, обеспечивается их хранение в едином месте в системе.
2. Процедура авторизации через социальные сети
Пользователь, авторизовавшись в социальной сети, входит в СЭО 3KL автоматически без повторного ввода своих учетных данных, сам процесс авторизации проходит незаметно для пользователя.
Общая схема процедуры авторизации выглядит следующим образом:
(a) Администратор СЭО 3KL переходит в меню Настройки-►Администрирование-►Плагины-►Аутентификация-►OAuth 3KL-►Провайдеры, выбирает социальную сеть, авторизацию через которую он хочет включить, отмечает галочкой опцию «Включить авторизацию» (по умолчанию настройка отключена - дефолтное значение поля «Нет») и вводит ключ на странице настроек данной социальной сети плагина OTOAuth.
(b) Кнопка с иконкой данной социльной сети появляется на форме входа в СЭО 3KL. Пользователь нажимает на нее и переходит на страницу авторизации социальной сети.
(c) Если пользователь уже авторизован под
Привязка аккаунтов от социальных сетей осуществляется в следующем порядке:
(e) Пользователь заходит в Личный кабинет СЭО 3KL, в котором администратором установлен блок «Привязка к социальной сети» для всех пользователей. В блоке доступны те социальные сети, которые были настроены для авторизации администратором, но на данном этапе СЭО 3KL «ничего не знает» об учетных записях пользователя в каких-либо социальных сетях.
(f) Чтобы система «узнала» об учетных записях из других соцсетей, ей необходимо это сообщить. Пользователь нажимает на блок «Привязка к социальной сети», выбирает из списка социальные сети и добавляет свои аккаунты в них к учетной записи в СЭО 3KL. При попытке входа через эти соцсети система будет его авторизовать, не выдавая предупреждений об ошибке.
Для подключения авторизации через каждую социальную сеть вам потребуется:
- Войти в конкретную социальную сеть под своим аккаунтом.
- Создать и настроить специальное приложение для интеграции СЭО 3KL и конкретной социальной сети.
- Выполнить настройку способа авторизации самостоятельно или через службу технической поддержки компании «Открытые Технологии», используя уникальные данные, полученные в процессе настройки приложения - идентификатор и секретный код. Для самостоятельной настройки вам потребуются права администратора.
Чтобы настроить возможность авторизации силами технической поддержки, следует зайти в личный кабинет на клиентском портале по адресу https://clients.opentechnology.ru/cp/и создать заявку-обращение, нажав на «Открыть новую заявку». Далее следует выбрать категорию заявки «Гарантийная техподдержка / настройки прочие», подробно описать задачу и сообщить данные, полученные в процессе настройки приложения.
- Начать пользоваться сервисом или дождаться оповещения от службы поддержки о том, что настройка авторизации прошла успешно.
Чтобы включить плагин OAuth 3KL, перейдите в меню Настройки-►Администрирование-►Плагины-►Аутентификация-►Настройки аутентификации. Здесь отображаются все доступные для использования плагины аутентификации, которые есть в системе. Нажмите на пиктограмму «перечеркнутого глаза» (Рис. 2.2).
Рис. 2.2. Плагин OTOAuth в разделе «Доступные плагины аутентификации»
3. Основные настройки плагина требуются права администратора
Перейти к настройкам плагина OTOAuth можно через
блок «Настройки» -►«Администрирование» -►«Плагины» -►«Аутентификация» -►«OAuth 3KL»
Страница общих настроек плагина состоит из секции общих настроек, секции «Настройки подтверждения аккаунтов администратором» - режим подтверждения учетных записей и секции «Блокировка полей пользователя», позволяющей управлять блокировкой полей профиля пользователей.
Страница настраиваемых провайдеров состоит из списка зарегистрированных настраиваемых провайдеров и секции добавления настраиваемого провайдера.
Страницы провайдеров содержат минимальные настройки под каждый сервис интеграции - социальную сеть/корпоративный портал/личный кабинет.
3.1. Секция «Общие настройки»
Рис. 3.1.1. Общие настройки плагина OTOAuth
Начиная с версии СЭО 3KL 3.5.9a в модуль «Аутентификации пользователей OAuth 3KL» добавлена возможность указать, когда требуется обновлять данные в профиле пользователя при использовании авторизации через социальные сети.
Настройка «Обновление полей учетной записи Moodle» поддерживает следующие опции обновления:
- При создании учетной записи
- При каждом входе
- Во время привязки
Можно включить одну, две, три опции обновления полей учетной записи, либо отключить все опции обновления, нажимая на них левой клавишей мыши при зажатой клавише Ctrl.
Пример 1.
Новые пользователи поступают из доверенного источника (например, внешняя БД или Active Directory), но имеют возможность привязывать дополнительные способы авторизации для своего удобства. Например, привязывать авторизацию через Яндекс или Gmail, социальные сети, ЕСИА или сквозную авторизацию через внутренний портал. Обновление полей учетной записи при этом полностью отключено, т.к. данные в профиль пользователя попадают из доверенного источника, повторного создания и обновления учетной записи не происходит, а данные из дополнительных привязок передавать в профиль не нужно.
Пример 2.
Пользователи регистрируются через социальные сети. После создания учетной записи пользователи имеют возможность ее редактировать, например, скорректировать ФИО или изменить адрес электронной почты. Привязка к социальной сети при этом сохраняется, но данные в профиле остаются те, которые внес пользователь или администратор. Выбрана опция обновления при создании учетной записи, а опции при каждом входе и во время привязки отключены.
3.2. Секция «Настройки подтверждения аккаунтов администратором»
Данные настройки позволяют осуществить включение режима подтверждения (активации) учетной записи зарегистрировавшихся через социальные сети пользователей (Рис. 3.2.1).
1. Администратор запрещает активацию аккаунта, созданного через соцсети, включает отправку уведомлений о создании заблокированной учетной записи, настраивает тексты уведомлений.
2. Пользователь регистрируется через соцсеть.
3. Система выдает сообщение пользователю о том, что учетная запись создана и ожидает активации администратором, отправляет уведомление о новой регистрации администратору.
4. Администратор получает уведомление, переходит по ссылке из письма к редактированию учетной записи и активирует аккаунт.
5. Пользователь может авторизоваться в СЭО 3KL.
Рис. 3.2.1. Секция настроек подтверждения аккаунтов администратором плагина
- Создавать аккаунты не активированными - Значение по умолчанию: «Нет» - Если выбрано «Да», все созданные через Oauth2 аккаунты должны быть активированы администратором. Это - главная опция для включения модерации аккаунтов.
- Отправлять администратору уведомления - Значение по умолчанию: «Нет» - Если выбрано «Да», информация обо всех созданных через Oauth2 аккаунтах будет отправлена администратору. Включает отправку уведомлений администратору.
- Заголовок, полный и краткий текст уведомления для администратора можно отредактировать в соответствующих полях формы настроек.
3.3. Секция «Блокировка полей пользователя»
Рис. 3.3.1. Секция блокировки полей пользователя плагина
Секция содержит перечень полей профиля пользователя (на скриншоте приведена только их часть), для каждого из которых администратор может установить одно из трех значений блокировки:
- Разблокировано - поле доступно для редактирования.
- Разблокировано, если пусто - поле доступно для редактирования, если оно не заполнено.
- Заблокировано - поле будет недоступно для непосредственного редактирования пользователями и администраторами СЭО 3KL. Использование этой опции полезно, если производится управление этими данными во внешней системе аутентификации.
Эти установки позволяют запретить пользователям редактировать некоторые поля профиля. Это полезно для сайтов СЭО 3KL, где данные пользователей редактируются администратором вручную или загружаются с помощью команды «Загрузить пользователей».
Если в данных настройках блокировать поля, необходимые для работы СЭО 3KL, предварительно нужно убедиться, что предоставляется вся информация, необходимая для создания учетной записи, иначе учетная запись не будет работать. Чтобы избежать подобных проблем, можно попробовать установить блокировку в режим «Разблокировано, если пусто».
3.4. Интерфейс управления настраиваемыми провайдерами требуются права администратора
Данный интерфейс позволяет создать в СЭО 3KL клиента для кастомной oauth-авторизации.
Путь к настройкам:
Администрирование -► Плагины -► Аутентификация -► OAuth 3KL -► Настраиваемые провайдеры -► Управление провайдерами -► Просмотр списка провайдеров
С помощью кнопки «Добавление настраиваемого провайдера» осуществляется переход к форме добавления нового провайдера (Рис. 3.4.1).
Рис. 3.4.1. Форма добавления нового провайдера плагина
Конфигурация настраиваемого провайдера производится в формате yaml и должна быть представлена в виде ассоциативного массива. Пункт «Конфигурация» в справочном комментарии содержит описание параметров и примеры (см.ниже).
После занесения администратором данных в форму, система производит ее валидацию (если форма не валидна, необходимо внести исправления). При успешной валидации происходит перенаправление в исходный интерфейс управления настраиваемыми провайдерами, и отображается список провайдеров, включающий добавленный.
Конфигурация
- clientid - идентификатор клиента (id приложения), предоставляется сервером авторизации после регистрации приложения, используется далее для автоматической подстановки в требуемых запросах;
- clientsecret - секретный ключ (пароль приложения), предоставляется сервером авторизации после регистрации приложения, используется далее для автоматической подстановки в требуемых запросах;
- icon - путь до изображения на сервере или закодированное в base64 изображение, используется в качестве иконки вашего способа авторизации;
- allowregister - разрешена ли регистрация пользователей при помощи настраиваемого провайдера
- если нет (любое пустое значение или отсутствие параметра) - пользователь сможет авторизоваться только при наличии в СЭО 3KL аккаунта, связанного с аккаунтом настраиваемого провайдера;
- если да (любое непустое значение, например, '1') - пользователю будет создана учетная запись при успешной авторизации;
- authorize - конфигурация процесса вызова авторизации и получения авторизационного кода от сервера авторизации. Должна быть представлена в виде массива. В качестве ключей этого массива могут служить:
- url - адрес, входная точка API авторизации (authorization endpoint)
- parameters - массив параметров, требуемых сервером авторизации для данного запроса. Для автоматической замены, в значениях массива возможно использовать следующие подстановки:
- {clientid} - подставляет идентификатор клиента (id приложения)
- {redirect_uri} - подставляет ссылку переадресации, на которую будет осуществлено перенаправление после выдачи авторизационного кода
- {state} - подставит автоматически сгенерированную строку, используемую для защиты от подделки запросов (cross-site request forgery)
Пример:authorize: url: 'https://oauth.yandex.ru/authorize' parameters: client_id: '{clientid}' redirect_uri: '{redirect_uri}' state: '{state}' response_type: 'code'
- accesstoken - конфигурация процесса получения ключа доступа (токена) от сервера авторизации. Должна быть представлена в виде массива. В качестве ключей этого массива могут служить:
- url - адрес, предназначенный для получения ключа доступа, токена (token endpoint)
- parameters - массив параметров, требуемых сервером авторизации для данного запроса. Для автоматической замены, в значениях массива возможно использовать следующие подстановки:
- {clientid} - подставляет идентификатор клиента (id приложения)
- {clientsecret} - подставляет секретный ключ (пароль приложения)
- {redirect_uri} - подставляет ссылку переадресации, на которую будет осуществлено перенаправление после выдачи ключа доступа
- {authorization_code} - подставляет авторизационный код полученный в результате авторизации на предыдущем шаге
- requesttype - метод осуществления запроса ('get' или 'post')
- curloptions - для случаев, когда требуется указать особенные параметры запроса, возможно передать массив с опциями, поддерживаемыми библиотекой curl
- responsetype - ожидаемый формат ответа ('plain' или 'json')
- responsefields - сопоставление требуемых для авторизации полей с полями, пришедими в результатах запроса к авторизационному серверу
- token - для данного поля требуется указать название поля из ответа сервера, в котором содержится ключ доступа
Пример:accesstoken: url: 'https://oauth.yandex.ru/token' parameters: client_id: '{clientid}' client_secret: '{clientsecret}' redirect_uri: '{redirect_uri}' code: '{authorization_code}' grant_type: 'authorization_code' requesttype: 'post' curloptions: [] responsetype: 'json' responsefields: token: 'access_token'
- userinfo - конфигурация процесса получения сведений об авторизованном пользователе от сервера авторизации. Получение информации о пользователе в некоторых системах разделено на области, и для получения всех необходимых данных может потребоваться несколько запросов. В связи с этим, значением данного параметра должен являться массив запросов (обратите внимание на дефис в примере). Каждый запрос должен быть представлен также, в виде массива. В качестве ключей запроса могут служить:
- url - адрес для получения необходимой области информации о пользователе
- parameters - массив параметров, требуемых сервером авторизации для данного запроса. Для автоматической замены, в значениях массива возможно использовать следующие подстановки:
- {access_token} - подставляет ключ доступа, полученный в результате исполнения предыдущих операций
- requesttype - метод осуществления запроса ('get' или 'post')
- curloptions - для случаев, когда требуется указать особенные параметры запроса, возможно передать массив с опциями, поддерживаемыми библиотекой curl
- responsetype - ожидаемый формат ответа ('plain' или 'json')
- responsefields - сопоставление полей пользователя СДО с полями, пришедшими в результатах запроса к авторизационному серверу. Наиболее распространенные поля пользователя СДО:
- username - логин пользователя в СДО
- firstname - имя пользователя
- lastname - фамилия пользователя
- email - email-адрес пользователя
- verified - подтверждена ли учетная запись, другими словами точно ли email принадлежит пользователю, который авторизовался; если провайдер предоставляет такие данные или вы уверены, что зарегистрироваться в провайдере можно только подтвердив аккаунт через mail или вы полностью доверяете провайдеру (например, это ваша система и вы точно знаете, что среди ваших пользователей не может быть злоумышленников), то можно использовать поле, предоставленное провайдером или подстановку '{1}' подтверждающую учетную запись без использования поля предоставленного провайдером
- remoteuserid - идентификатор пользователя на стороне провайдера
- lang - язык, предпочитаемый пользователем. Можно использовать, если значения соответствуют кодам языковых пакетов, например,
- picture - адрес с изображением пользователя
Пример:userinfo: - url: 'https://login.yandex.ru/info' parameters: oauth_token: '{access_token}' format: 'json' requesttype: 'get' curloptions: [] responsetype: 'json' responsefields: username: 'login' email: 'default_email' verified: '{1}' firstname: 'first_name' lastname: 'last_name' remoteuserid: 'email'
- refreshtoken - конфигурация процесса обновления ключа доступа (токена) от сервера авторизации.
- revoke - конфигурация процесса аннулирования ключа доступа (токена) от сервера авторизации.
Пример кода конфигурации
Ниже в качестве примера приведен код конфигурации для Яндекс. Вы можете указать свои значения clientid и clientsecret для проверки работоспособности конфигурации.
clientid: 'здесь указывается ваш индивидуальный ID'
clientsecret: 'здесь указывается ваш индивидуальный секретный код'
icon: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACwAAAAsCAYAAAAehFoBAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAXZJREFUeNrsl9ENgjAQhsEwgCPgBoxQJ0A3wCcelQmME/jMk7qBTmA3kBEYgRG8Jn1ozlYTe8XD9JILAYl8/D3+3iVJjBgx/ivati1UUv1fSgxXwaGEFJBz1311XX/93IxKRTicIIvQKzYjgr2/gZWUwJknbK5hzeXvIA+w7FfjvgeV+r4lsbfALgF2YFcSWt0KXW4csAWHGt6i8w5gJeePDqt2GcPXfYAFVpg7MN4M5KSAxwoyYHANMTWFc+7AuGZL7sA3dL7Smwlb4DMk3tVOjnv7nwPrLbjB3gwq3y0fIFlvkRK4Q+VQtjeUFVQNvLdLwMNVaawtKuYaVHCpYRNa9b4LXdeT2ZoHS0OkXmDJZuKw1LIJLOElNvo3XgoDkJo6jujygXNJ7NCoJEN1bxRTc65nu+DqUimMS0GG7I1nnuoqj13hQZSzrWF1z6BuxxLYYmNBa9cL2GFjSt2eJbDFxkZR1wf4xcY+qNsnMWLEiDFKPAUYANutbimoTIIxAAAAAElFTkSuQmCC'
allowregister: 1
authorize:
url: 'https://oauth.yandex.ru/authorize'
parameters:
client_id: '{clientid}'
redirect_uri: '{redirect_uri}'
state: '{state}'
response_type: 'code'
accesstoken:
url: 'https://oauth.yandex.ru/token'
parameters:
client_id: '{clientid}'
client_secret: '{clientsecret}'
redirect_uri: '{redirect_uri}'
code: '{authorization_code}'
grant_type: 'authorization_code'
requesttype: 'post'
curloptions: []
responsetype: 'json'
responsefields:
token: 'access_token'
userinfo:
- url: 'https://login.yandex.ru/info'
parameters:
oauth_token: '{access_token}'
format: 'json'
requesttype: 'get'
curloptions: []
responsetype: 'json'
responsefields:
username: 'login'
email: 'default_email'
verified: '{1}'
firstname: 'first_name'
lastname: 'last_name'
remoteuserid: 'email'
4. Особенности настройки интегрированных источников авторизации
4.1. Вконтакте
«Вконтакте» - крупнейшая российская социальная сеть, объединяющая множество сервисов и проектов, с ежемесячной российской аудиторией более 73 млн. пользователей. Для настройки возможности авторизации в СЭО 3KL с использованием аккаунта во Вконтакте следует:
a. Войти во Вконктакте.
b. Перейти по ссылке https://vk.com/editapp?act=create (Рис. 4.1.1)
Рис. 4.1.1. Создание приложения во Вконтакте.
c. На отобразившейся форме «Создание приложения» в поле «Название» ввести название приложения (произвольное, буквами латинского алфавита), указать платформу - «Сайт», заполнить поля с адресом сайта и базовым доменом и нажать кнопку «Подключить сайт».
d. При необходимости подтвердить создание приложения, получив в SMS специальный код подтверждения и затем отправив его Вконтакте. Для подтверждения компания ВКонтакте может позвонить на мобильный телефон, который связан с вашим личным аккаунтом - трубку брать не надо, а в то время, пока идет вызов, нужно последние четыре цифры номера входящего звонка внести в поле для подтверждения.
e. На отобразившейся странице в левом меню выбрать пункт «Настройки».
Рис. 4.1.2. Настройки приложения в режиме «разработчика»
f. На странице «Настройки»:
- убедиться, что в выпадающем списке «Состояние» установлено значение «Приложение включено и видно всем».
- убедиться, что в выпадающем списке «Open API» установлено значение «Включён».
- в отобразившемся блоке «Open API» в соответствующих полях указать адрес сайта СЭО 3KL и базовый домен.
- в поле «Доверенный редирект URL» нужно указать адрес http:///auth/otoauth/redirect.php и нажать кнопку «Сохранить изменения».
На странице «Настройки» также будут отображены значения полей ID приложения и Защищенный ключ, которые следует скопировать и вставить на странице настроек Вконтакте плагина OAuth 3KL в поле «ID приложения» и «Секретный ключ приложения» (Рис. 4.1.1) или отослать в службу поддержки СЭО 3KL .
Рис. 4.1.3. Страница настроек провайдера Вконтакте
4.2. Одноклассники.ру
«Одноклассники» (ok.ru) — вторая крупнейшая российская социальная сеть. Общее количество зарегистрированных пользователей превышает 330 млн. Ежемесячная посещаемость составляет 45,9 млн. человек только из России, а 19 % российских интернет-пользователей пользуются социальной сетью на ежедневной основе.
Для настройки возможности авторизации в СЭО 3KL с использованием аккаунта в социальной сети Одноклассники следует:
a. Авторизоваться в социальной сети.
b. Перейти по ссылке https://ok.ru/devaccess.
c. На отобразившейся странице установить флажок «Мной прочитаны и принимаются условия соглашения» и нажать кнопку «Получить права разработчика».
d. На отобразившейся странице перейти по ссылке «Перейдите по ссылке».
e. На отобразившейся странице перейти по ссылке «Добавить приложение».
f. На странице Настройки приложения в соответствующие поля ввести название, короткое имя (имя в ссылке) и описание приложения.
Рис. 4.2.1. Основные настройки приложения: название, описание
g. После этого нажать «Добавить платформу». В открывшемся окне нужно выбрать «OAuth».
Рис. 4.2.2. Основные настройки приложения: OAuth-авторизация, добавление платформы
h. На странице Настройки приложения:
- в блоке «Ссылки на аватарки и иконки» можно указать ссылки на соответствующие файлы иконок;
- в поле «Ссылка на приложение» указать ссылку на главную страницу СЭО 3KL;
- в поле «Список разрешенных redirect_uri» указать URL-адрес http://ваш_сайт/auth/otoauth/redirect.php;
- установить флажок «Разрешить клиентскую OAuth авторизацию»;
Нажать кнопку «Сохранить».
Рис. 4.2.3. Основные настройки приложения: иконки, ссылки, редиректы
i. После сохранения введенных данных отобразится окно с уведомлением о том, что на почту, которая привязана к аккаунту Одноклассников, выслано письмо, содержащее информацию о приложении. Пример письма:
Рис. 4.2.4. Пример письма с информацией о приложении
Сведения о приложении (Application ID, Публичный ключ приложения, Секретный ключ приложения) следует вставить на странице настроек Odnoklassniki плагина OAuth 3KL в полях «ID приложения», «Секретный ключ приложения» (Рис. 4.2.5) или отослать в службу поддержки СЭО 3KL.
Рис. 4.2.5. Страница настроек провайдера Odnoklassniki
4.3. LinkedIn
LinkedIn — социальная сеть для поиска и установления деловых контактов, насчитывающая более 500 млн. пользователей в мире и более 1,5 млн. в России. С 4 августа 2016 года социальная сеть заблокирована на территории РФ за нарушение правил хранения персональных данных российских пользователей. LinkedIn предоставляет возможность зарегистрированным пользователям создавать и поддерживать список деловых контактов.
Для настройки возможности авторизации в СЭО 3KL с использованием аккаунта в Linkedin следует:
a. Войти в Linkedin.
b. Перейти по ссылке https://www.linkedin.com/secure/developer.
c. На отобразившейся странице нажать кнопку «Создать приложение».
Рис. 4.3.1. Создание приложения в LinkedIn
d. На отобразившейся странице ввести необходимые данные и нажать кнопку «Отправить».
Рис. 4.3.2. Основные настройки приложения в LinkedIn
e. Перейти на страницу Настройки, перевести приложение в статус «Эксплуатация» и нажать кнопку «Обновить».
Рис. 4.3.3. Основные настройки приложения в LinkedIn: ключи
f. Перейти на страницу «Аутентификация», в соответствующие поля ввести URL-адрес перенаправления (http:///auth/otoauth/redirect.php) и нажать кнопку «Обновить».
Рис. 4.3.4. Основные настройки приложения в LinkedIn: редиректы
Данные о ключах аутентификации (Идентификатор клиента и Секретный ключ клиента), отображенные на странице «Аутентификация» в соответствующем блоке, следует вставить на странице настроек Linkedin плагина OAuth 3KL в полях «ID приложения», «Секретный ключ приложения» (Рис. 4.3.5) или отослать в службу поддержки СЭО 3KL.
Рис. 4.3.5. Страница настроек провайдера LinkedIn
4.4. Яндекс
Яндекс - крупнейшая российская поисковая система и интернет-портал, объединяющая несколько разнообразных российских и международных сервисов . Плагин поддерживает OAuth-авторизацию в СЭО 3KL через API Яндекс ID.
Для настройки возможности авторизации в СЭО 3KL с использованием аккаунта в Яндексе следует:
a. Войти в Яндекс.
b. Перейти на OAuth-сервер по ссылке https://oauth.yandex.ru/client/my, чтобы зарегистрировать приложение
c. На отобразившейся странице нажать кнопку «Зарегистрировать новое приложение».
Рис. 4.4.1. Создание приложения в Яндекс
d. На странице «Создание приложения»:
- в поле Название ввести название приложения;
- в списке Права выбрать элемент API Яндекс.Паспорта;
- установить флажки:
Доступ к адресу электронной почты;
Доступ к дате рождения;
Доступ к логину, имени и фамилии;
Доступ к портрету пользователя. - в поле Callback URL ввести адрес http://ваш_сайт/auth/otoauth/redirect.php
- нажать кнопку «Создать приложение».
Рис. 4.4.2., Рис 4.4.3. Создание приложения в Яндекс: название, описание, API
e. В результате проделанных операций отобразится страница с данными (ID и пароль), которые требуется скопировать и отослать в службу поддержки СЭО 3KL:
Рис. 4.4.4. Данные приложения в Яндекс: ID, пароль
Сведения о приложении следует вставить на странице настроек Yandex плагина OAuth 3KL в полях «ID приложения», «Секретный ключ приложения» (Рис. 4.4.5) или отослать в службу поддержки СЭО 3KL.
Рис. 4.4.5. Страница настроек провайдера Яндекс
4.5. Mail.ru
Mail.ru - русскоязычный интернет-портал, объединяющий различные тематические проекты и сервисы: почту, социальную сеть, облачное хранилище, мессенджеры и т.д. Плагин поддерживает OAuth-авторизацию в СЭО 3KL через API Mail.ru, позволяя использовать для авторизации данные аккаунта пользователя. Для настройки возможности авторизации в СЭО 3KL с использованием аккаунта Mail.ru следует:
a. Авторизоваться в Mail.ru.
b. Перейти по ссылке http://api.mail.ru/sites/my/add/.
c. На отобразившейся странице установить флажок «Я принимаю правила использования Платформы@Mail.ru» и нажать кнопку «Продолжить».
d. На отобразившейся странице в соответствующих полях ввести название сайта (например, Moodle) и адрес главной страницы СЭО 3KL и нажать кнопку Продолжить.
Рис. 4.5.1. Создание приложения на Mail.ru
Файл receiver.html можно не использовать, современные стандарты не требуют его применения.
e. На отобразившейся странице перейти по ссылке «Пропустить».
Рис. 4.5.2. Создание приложения на Mail.ru: receiver.html
После успешного выполнения операций отобразится страница с данными сайта (ID, Приватный ключ, Секретный ключ).
Рис. 4.5.3. Создание приложения на Mail.ru: ID, приватный ключ, секретный ключ
e. Полученные данные следует вставить на странице настроек Mail.ru плагина OAuth 3KL в полях «ID приложения», «Секретный ключ приложения», «Приватный ключ приложения» (Рис. 4.5.4) или отослать в службу поддержки СЭО 3KL.
Рис. 4.5.4. Страница настроек провайдера Mail.ru
4.6. GitHUB
GitHub — крупнейший веб-сервис для хостинга IT-проектов и совместной разработки, основанный системе контроля версий Git и разработанный на Ruby on Rails и Erlang. Плагин поддерживает OAuth-авторизацию в СЭО 3KL через API GitHub, позволяя использовать для авторизации данные аккаунта пользователя. Для настройки возможности авторизации в СЭО 3KL с использованием аккаунта GitHUB следует:
a. Войти в GitHUB.
b. Перейти по ссылке https://github.com/settings/applications/new
c. На отобразившейся странице ввести:
- в поле Application name наименование приложения;
- в поле Homepage URL адрес http://ваш_сайт/auth/otoauth/redirect.php
- в поле Application description описание приложения;
- в поле Authorization callback URL адрес сайта, на который пользователь возвращается после того, как он разрешил или отказал приложению в доступе (тот же адрес http://ваш_сайт/auth/otoauth/redirect.php).
и нажать кнопку Register application.
Рис. 4.6.1. Создание приложения в GitHUB: название, описание, адрес
d. В результате проделанных операций отобразится страница с данными (Client ID и Client Secret)
Рис. 4.6.2. Создание приложения в GitHUB: Client ID, Client secret
Полученные данные следует скопировать и вставить на странице настроек GitHub плагина OAuth 3KL в полях «ID приложения в GitHUB» и «Секретный ключ приложения в GitHUB» (Рис. 4.6.3) или отослать в службу поддержки СЭО 3KL.
Рис. 4.6.3. Страница настроек провайдера GitHUB
4.7. MSN
MSN (Microsoft Network) - крупный интернет-провайдер и веб-портал, принадлежащий Microsoft и объединящий различные приложения, программы и службы с единой точкой входа. Для настройки возможности авторизации в СЭО 3KL с использованием аккаунта в MSN следует:
a. Войти в аккаунт на microsoft.com.
b. Перейти по ссылке https://apps.dev.microsoft.com и далее на портал Microsoft Azure.
c. На отобразившейся странице нажать кнопку «Регистрация приложения» (Рис. 4.7.1).
Рис. 4.7.1. Регистрация приложения в Microsoft Azure
d. На отобразившейся странице в сответствующем поле ввести название приложения. В блоке «Выберите платформу» из выпадающего списка выберите «Веб», а в поле URL-адреса перенаправления введите адрес http://ваш_сайт/auth/otoauth/redirect.php. Нажмите кнопку «Зарегистрировать».
Рис. 4.7.2. Основные настройки приложения в Microsoft Azure
e. В блоке «Сертификаты и секреты» нажмите кнопку «Новый секрет клиента». Скопируйте и сохраните полученный пароль в безопасном месте.
Рис. 4.7.3. Сертификаты и секреты приложения в Microsoft Azure
f. Скопируйте код приложения из раздела «Манифест» и сохраните его.
Рис. 4.7.4. Данные приложения в формате JSON в разделе «Манифест»
Полученные данные - код приложения и пароль - следует вставить на странице настроек MSN плагина OAuth 3KL в полях «ID приложения в Microsoft Messenger» и «Секретный ключ приложения в Microsoft Messenger» (Рис. 4.7.5) или отослать в службу поддержки СЭО 3KL.
Рис. 4.7.5. Страница настроек провайдера MSN
4.8. ЕСИА (портал Госуслуг)
Данный способ авторизации значительно повышает уверенность в том, что под определенной учетной записью работает именно ее истинный удостоверенный владелец и снижает вероятность ее передачи другому лицу (т.к. передача доступа в ЕСИА другим людям несет большие риски для ее владельца). Соответственно, пользователи, авторизующиеся в СЭО 3KL через ЕСИА имеют большую привязку к реальной личности, чем пользователи, авторизующиеся стандартным способом.
Для настройки возможности авторизации в СЭО 3KL с использованием аккаунта в ЕСИА (портал Госуслуг) следует:
в разделе «Как подключиться к сервису?» и пройти процедуру подключения.
странице настроек ЕСИА плагина OAuth 3KL (страница, расположенная по пути: Администрирование -> Плагины -> Аутентификация -> OAuth 3KL -> Провайдеры -> ЕСИА) в полях «Client id приложения ЕСИА» (поз. 1 Рис. 4.8.1), «Код подписи запроса» (поз. 2 Рис. 4.8.1) и (поз. 3 Рис. 4.8.1) или отослать данные в службу поддержки СЭО 3KL. Также необходимо переключить режим работы авторизации через ЕСИА на значение «Основной» (поз. 4 Рис. 4.8.1).
Полученные от ЕСИА данные следует вставить наРис. 4.8.1. Страница настроек провайдера ЕСИА (Госуслуги).
Данные, которые могут запрашиваться из ЕСИА:
- Идентификационный номер в ЕСИА (openid). Служебное поле, которое используется для интеграции и запрашивается обязательно. В профиле пользователя не отображается.
- Фамилия. Сохраняется в стандартном поле профиля пользователя lastname.
- Имя. Сохраняется в стандартном поле профиля пользователя firstname.
- Отчество. Сохраняется в стандартном поле профиля пользователя middlename.
- СНИЛС. Для того, чтобы поле сохранилось в СЭО 3KL, необходимо создать кастомное поле профиля пользователя с названием otoauth_esia_snils.
- Дата рождения. Для того, чтобы поле сохранилось в СЭО 3KL, необходимо создать кастомное поле профиля пользователя с названием otoauth_esia_snils.
- Пол. Для того, чтобы поле сохранилось в СЭО 3KL, необходимо создать кастомное поле профиля пользователя с названием otoauth_esia_gender (пол сохраняется в формате «F»/«M») или с названием otoauth_esia_gender_ru (пол сохраняется в формате «М»/«Ж», определяемом языковыми строками «esia_gender_f_ru» и «esia_gender_m_ru» в компоненте auth_otoauth).
4.9. Google
Google - международная технологическая компания, развивающая и поддерживающая ряд интернет-сервисов и продуктов, в том числе поисковик, почтовые сервисы, социальную сеть и др. Сайты Google считаются самыми посещаемыми сайтами интернета. Для настройки возможности авторизации в СЭО 3KL с использованием аккаунта в Google следует:
a. Войти в Google.
b. Перейти по ссылке https://console.cloud.google.com/home/dashboard
c. В отобразившемся окне выбрать существующий проект или создать новый нажатием на кнопку «New project» (Рис. 4.9.1).
Рис. 4.9.1. Создание приложения в контрольной панели Google Cloud
d. Перейти в раздел «APIs & services» на вкладку «OAuth consent screen» и выбрать начальные параметры для регистрации приложения: «Internal» или «External» (Рис. 4.9.2).
Рис. 4.9.2. Создание приложения в контрольной панели Google Cloud: параметры OAuth
e. В соответствующие поля ввести данные (адрес собственной электронной почты и название приложения, которое будет видно пользователям) и сохранить (Рис. 4.9.3).
Рис. 4.9.3. Параметры приложение в Google: название, email
f. В разделе «APIs & Services» перейти на вкладку «Credentials», нажать на кнопку «Create credentials» и выбрать «OAuth client ID». Выбрать тип приложения «Web application». В поле «Name» ввести название приложения. В поле «Authorized redirect URIs» добавить адрес http://ваш_сайт/auth/otoauth/redirect.php и нажать кнопку «Create» (Рис. 4.9.4).
Рис. 4.9.4. Настройка ключей доступпа приложения в Google (credentials)
В результате проделанных операций отобразится окно OAuth Client с данными (идентификатор и секретный код клиента) (Рис. 4.9.5).
Рис. 4.9.5. OAuth-данные приложения в Google: идентификатор, секретный код
Указанные данные - идентификатор и секретный код клиента - следует вставить на странице настроек Google плагина OAuth 3KL в полях «ID приложения в Google» и «Секретный ключ приложения в Google» (Рис. 4.9.6) или отослать в службу поддержки СЭО 3KL.
Рис. 4.9.6. Страница настроек провайдера Google
4.10. Корпоративный Google
Бизнес-аккаунт Google, или Google Workspace (ранее - G Suite) - это расширенный набор возможностей и приложений для аккаунта Google, по сравнению с бесплатным аккаунтом физического лица. Главное отличие - это возможность создавать корпоративные почтовые адреса, новые элементы управления сервисами в консоли панели управления, возможность коллективного редактирования документов и неограниченное количество ревизий документов, дополнительные инструменты безопасности и администрирования и т.д.
Порядок создания и регистрации приложения и получения секретного ключа приложения в Google Workspace схож с порядком, описанным выше в п. 4.9 для бесплатных аккаунтов Google.
Для настройки возможности авторизации в СЭО 3KL с использованием аккаунта в Google Workspace следует:
a. Зарегистрироваться на https://workspace.google.com/ и создать сервисный аккаунт.
b. Авторизовавшись, зайти в контрольную панель Google API на https://console.cloud.google.com/. Создать проект, зарегистрировать приложение, получить идентификатор и секретный код клиента в порядке, описанном в п. 4.9.
Полученные данные - идентификатор и секретный код клиента - следует вставить на странице настроек Корпоративный Google плагина OAuth 3KL в полях «ID приложения в Google для корпоративных аккаунтов» и «Секретный ключ приложения в Google для корпоративных аккаунтов» (Рис. 4.10.1) или отослать в службу поддержки СЭО 3KL. Дополнительно в соответствующем поле следует указать корпоративный домен.
Рис. 4.10.1. Страница настроек провайдера Корпоративный Google
4.11. Битрикс24
Для настройки возможности авторизации в СЭО 3KL с использованием аккаунта в Битрикс24 необходимо:
a. Авторизоваться в CRM Битрикс24 с уровнем прав полного Администратора.
b. Перейти в раздел «Авторизация» для создания приложения.
c. Зарегистрировать приложение, получить код приложения и секретный ключ приложения, скопировать и сохранить их.
Полученные данные следует вставить на странице настроек Битрикс24 плагина OAuth 3KL в полях«Код приложения (client_id)» (поз. 1 Рис. 4.11.1), «Ключ приложения (client_secret)» (поз. 2 Рис. 4.11.1) или отослать в службу поддержки СЭО 3KL. В поле «URL вашего Битрикс24» укажите URL-адрес вашей CRM из адресной строки браузера, в котором открыта ваша CRM (поз. 3 Рис. 4.11.1).
Рис. 4.11.1. Страница настроек провайдера Битрикс24
Сохраните изменения. На форме входа в вашу СЭО 3KL должна появиться кнопка с гиперссылкой на страницу авторизации Битрикс24.
При нажатии на кнопку входа с использованием учетной записи Битрикс24 пользователь будет перенаправлен на страницу авторизации Битрикс24 для ввода логина и пароля (Рис. 4.11.2).
Рис. 4.11.2. Страница авторизации в Битрикс24
4.12. УНТИ 20.35
Для настройки возможности авторизации в СЭО 3KL с использованием аккаунта УНТИ 20.35 необходимо:
a. Направить запрос в службу поддержки Университета 20.35 в свободной форме о намерении интегрировать сервис в СЭО 3KL.
b. Получить, заполнить и отправить анкету.
c. Получить в ответном сообщении от Университета 20.35 данные, необходимые для интеграции с СЭО 3KL: ID приложения, секретный ключ приложения.
Полученные данные следует вставить на странице настроек УНТИ 20.35 плагина OAuth 3KL в полях«SSO client ID» (поз. 1 Рис. 4.12.1), «SSO client_secret» (поз. 2 Рис. 4.12.1) или отослать в службу поддержки СЭО 3KL. В поле «SSO URL для авторизации» укажите URL-адрес страницы авторизации в системе Университета 2035 (поз. 3 Рис. 4.12.1). По умолчанию это https://sso.u2035test.ru - ссылка на страницу авторизации в личном кабинете LEADER-ID.
Рис. 4.12.1. Страница настроек УНТИ 20.35
При первом входе в СЭО 3KL пользователь будет перенаправлен на страницу входа в личный кабинет Университета 2035, где система предложит ему войти с помощью учетной записи или через Госуслуги (Рис. 4.12.2).
Рис. 4.12.2. Страница авторизации в системе Университета 2035
Следует выбрать первый вариант и ввести логин и пароль, затем принять пользовательское соглашение, политику конфиденциальности и подтвердить запрос на предоставление согласия передать данные пользователя.
Названную особенность следует учитывать каждый раз, когда возникает необходимость переключиться на другую учетную запись (перелогиниться) в СЭО 3KL, например, на служебном или лабораторном компьютере. Перед каждым входом в СЭО 3KL через учетную запись УНТИ 20.35 рекомендуется удалять все файлы cookie и данные сайтов https://2035.university и https://leader-id.ru в настройках браузера.
5. Примеры и решения
- У организации есть корпоративный портал Битрикс24, где заведены все сотрудники. Организация хочет дать им всем доступ к СЭО 3KL под теми же именами. Для этого в плагине OTOAuth была включена авторизация через Битрикс24, сделаны настройки и добавлена кнопка авторизации через Битрикс24 на форму входа в систему. Учетные записи сотрудников были привязаны к учетным записям в СЭО 3KL. Сотрудники успешно авторизуются и входят в СЭО 3KL через свои аккаунты в Битрикс24.
- Образовательное учреждение ДПО продает на своем портале курсы и выдает сертификаты о пройденном обучении, оно хочет чтобы регистрация новых слушателей происходила с гарантированным подтверждением удостоверения их личности. Была включена авторизация через ЕСИА (Госуслуги). Слушатели регистрируются в системе через учетные записи в ЕСИА (Госуслуги), в дальнейшем удостоверенные аналогом цифрового паспорта пользователи автоматически входят в СЭО 3KL.
- Образовательное учреждение ДПО продает на своем портале курсы и выдает сертификаты о пройденном обучении, оно хочет, чтобы вход в систему был возможен только для подтвержденных администратором профилей пользователей, купивших курсы. Была включена авторизация через ЕСИА (Госуслуги) и соцсети, в настройках плагина в секции настроек подтверждения аккаунтов администратором установлено «Создавать аккаунты неактивированными» и «Отправлять администратору уведомления». Слушатели регистрируются в системе, но доступ к ней им закрыт до подтверждения учетной записи администратором. Администратор переходит на карточку пользователя и деактивирует параметр «Учетная запись заблокирована». После этого слушатели успешно авторизуются в системе и имеют доступ к ее ресурсам.
- Университет зарегистрировал всех студентов очной формы обучения в СЭО 3KL и выслал им логины и пароли по электронной почте. Студенты часто теряют и забывают свои учетные данные, поэтому университет хочет привязать к их профилям аккаунты в социальных сетях. Была включена авторизация через ВКонтакте, Яндекс и Одноклассники, аккаунты в этих соцсетях были привязаны к учетной записи в СЭО 3KL. Студенты авторизуются и совершают быстрый вход в систему через любую из данных соцсетей, а администратор СЭО 3KL видит в системе связанные аккаунты студентов.
- Российско-казахстанская ассоциация дополнительного бизнес-образования участвует в совместном проекте, набор новых слушателей за границей. Деловые контакты активно поддерживаются и развиваются в социальной сети LinkedIn, поэтому ассоциация решила предоставить слушателям авторизацию через нее. Была выполнена настройка способа авторизации, и теперь слушатели входят в СЭО 3KL сразу через свои профили в LinkedIn.
- Организация ведет онлайн-уроки по веб-разработке и организует курсы и вебинары по разработке сайтов на нескольких стеках технологий. Все слушатели имеют аккаунты и репозитории в GitHub, где выкладывают выполненные задания, а преподаватели проверяют их, дают оценки и совершают действия с ветками. Для упрощения входа в систему и взаимодействия с системой контроля версий организация хочет, чтобы слушатели авторизовались в СЭО 3KL через личный кабинет в GitHub. Был добавлен способ авторизации через GitHub, сделаны настройки и включена авторизация. Слушатели теперь входят в систему через GitHub, а администраторы системы видят их ассоциированные аккаунты.
- Международная компания имеет бизнес-аккаунт в Google Workspace (ранее - Google Suite), использует корпоративный домен, почтовый сервер и сервисы Google. Она регистрирует почтовые ящики студентов на Gmail и высылает им доступы. Компания хочет привязать Google-аккаунты пользователей к их профилям в СЭО 3KL и обеспечить сквозную авторизацию. Была включена авторизация через Google и корпоративный Google, сделаны необходимые настройки и привязаны учетные записи. Пользователи теперь успешно авторизуются через аккаунты Google.
- Учебное заведение участвует в программе Университета национальной технологической инициативы 2035 (Универитет 2035), по которой все слушатели должны регистрироваться на портале УНТИ 20.35 и авторизоваться под своей учетной записью на портале Университета 2035 для доступа к учебным материалам, онлайн-курсам и иным сервисам. По условиям программы учебное заведение обязано обеспечить сквозную авторизацию слушателей в СЭО 3KL через аккаунты в системеУниверситета 2035, для чего в настройках плагина была включена авторизация через УНТИ 20.35 и сделаны необходимые настройки. Слушатели были проинструктированы об особенности авторизации с использованием файлов cookies на стороне Университета 2035, и перед каждым входом удаляют их и данные сайтов в настройках браузера.
- У ВУЗа интеграция СЭО 3КL c Битрикс24 работает следующим образом: в Битрикс24 зарегистрированы только операторы технической поддержки — сотрудники ВУЗа; в СЭО 3КL установлен виджет открытых линий битрикс, добавленный на страницы СЭО 3КL как дополнительный html-код; все авторизованные в СЭО 3КL пользователи могут задавать вопросы операторам, используя чат виджета.
Использование кода виджета «как есть» имело проблему с идентификацией задающих вопросы: персональные данные пользователей, зарегистрированных только в СЭО 3КL, в Битикс24 не передаются, поэтому, если пользователь не указал свою фамилию или контактные данные, узнать, кто именно написал сообщение, было невозможно.
Добавление в код виджета шорткода (например, userid или fullname) позволило решить эту проблему: в форме вопроса (и, соответственно, в сообщении чата) теперь автоматически формируется ФИО пользователя, отправляющего сообщение. Это позволяет однозначно идентифицировать пользователя и, при необходимости, связаться с ним.
Фрагмент кода виджета с добавленными шорткодами fullname (ФИО пользователя) и username (логин пользователя):Tags: авторизация, регистрация