Единый вход (SSO) используется для интеграции UseResponse с другим программным обеспечением или сервисом, который в основном используется для хранения учетных записей пользователей. Другими словами, вы можете использовать форму входа на сайт, ПО или сервис для авторизации пользователей в UseResponse, используя учетные записи вашей системы, и тем самым автоматически авторизовывать пользователей в обеих системах.
Текущий метод называется "Единый вход", но также есть другие способы: LDAP, SAML и Oauth 2.0
Настройки единого входа
Перейдите в раздел Администрирование » Приложения и активируйте Единый вход. Затем выберите метод OneLogin для аутентификации на вкладке Единый вход. Вам необходимо определить следующие основные настройки:
- Интегрируемый домен - домен, где расположено ваше приложение, которое будет интегрировано c UseResponse. Домены с и без www считаются разными. Не используйте http или https как часть вашего домена. Пример: mydomain.com.
Заметка
Вы можете добавить несколько доменных имен и использовать несколько форм аутентификации
- Внешняя ссылка логина - введите URL-адрес страницы входа вашего приложения. Вы будете перенаправлены на этот адрес при нажатии на ссылку логина в UseResponse. После успешного входа пользователь будет перенаправлен назад в UseResponse. Пример: http://domain.com/login;
- Внешняя ссылка логаута - URL-адрес, который используется для выхода пользователя из приложения и UseResponse. Пример: http://domain.com/logout.
Есть еще 2 опции для упрощения процесса аутентификации:
- Использовать только единый вход - активируйте эту опцию, если хотите, чтобы пользователи заходили на форму авторизации приложения, как только требуется аутентификация в UseResponse;
- Не отправлять письмо регистрации - учетная запись пользователя всегда хранится в нашей системе, но пользователям не следует знать об этом. Поэтому как только в UseResponse создан аккаунт, пользователь не должен получить письмо о регистрации. Для решения проблем перейдите по ссылке /login в браузере, чтобы использовать первоначальный способ аутентификации.
Интеграция единого метода
UseResponse SSO класс доступен для следующих языков программирования:
Загрузите и включите UseResponse SSO класс в ваше приложение, предпочтительно до начала всей логики скрипта, и в файл, который будет использоваться для всех запросов страницы.
<?php require 'useresponse-sso.class.php'; UseresponseSso::getParameters(); // further index.php code ?>
Вставьте второй фрагмент кода в то место скрипта, когда пользователь успешно авторизован. Информация об авторизованном пользователе может быть доступна вашему скрипту в виде переменной, объекта или статического метода. Пожалуйста, проверьте, что куки или сессии не повреждены вашим скриптом, иначе перенаправление назад в UseResponse не произойдет:
<?php $options = array( 'domain' => '', // where UseResponse installed at (ex: http://help.domain.com or https://help.domain.com) 'secret' => '', // secret key you got from OneLogin page at UseResponse 'fullname' => '', // accessible value of logged user's full name 'email' => '', // accessible value of logged user's email 'user_id' => '', // accessible value of logged user's id 'property_id' => '', // value to assign to custom field ); UseresponseSso::setup($options); UseresponseSso::script(); ?>
Секретный ключ и имя домена могут быть получены из раздела Администрирование » Приложения » Единый вход » Настройки » вкладка Единый вход. Проверьте, что вы добавили в код валидный протокол http или https.
Разместите класс UseResponse в директорию Helpers. Если такой директории нет, пожалуйста, создайте ее в корневой папке проекта.
Чтобы включить класс, используйте следующий пример:
using System.Web.Mvc; using UseResponseSso.Helpers;
UseresponseSso ur = new UseresponseSso( "http://community.example.com" // UseResponse Community Domain "secretkey", "Alex", "user@example.com", "992" // Internal User ID ); // specify the URL to redirect back ur.Login(ur.GetCommunityDomain());
Если интеграция прошла успешно, вам необходимо авторизоваться в вашем приложении и вы будете автоматически авторизованы в UseResponse.
Авторизация в виджетах
UseResponse позволяет авторизовывать пользователей в виджетах без перезагрузки страницы, если пользователь авторизовался через форму вашего сайта или приложения, интегрированного с UseResponse аккаунтом.
Чтобы реализовать авторизацию пользователей в виджете, необходимо интегрировать следующий код на клиентской стороне, где размещен виджет UseResponse:
let ssoToken = ''; // результат метода GetSdkToken() UR.remote({ cmd: '@authenticate', data: {sso_token: ssoToken}, onInit: function () {} }).done(function (response) { });
где переменная "response" может быть использована для идентификации успешной или неуспешной авторизации пользователя.
Вот пример использования класса:
class UseresponseController < ApplicationController def index config = { source: 'mydomain.com', domain: 'https://mydomain.useresponse.com', secret: '680f9e64a62898047662780816f4418a9681c72c59ad30ff19cce8d4bf112ecb' } attributes = { fullname: 'John Bobson', email: 'john@example.com', user_id: '1' } redirect_to Useresponse::OneLogin.new(config).url(attributes) end end
Дополнительные поля пользователей
Вы можете передавать дополнительные поля пользователей, которые успешно вошли в систему UseResponse. Для этого вам нужно добавить требуемые параметры в SSO класс, как показано ниже:
'property_172' => '187', 'property_202' => '20-07-1987', 'property_245' => '263|265', //несколько значений для поля
где property_172 - это id пользовательского поля из Администрирование » Доп. поля » Пользователи, а 187 - значение данного поля.
Мультифорумность
Если вы организовали несколько форумов и хотите, чтобы пользователи могли заходить на каждый форум в отдельности, необходимо добавить параметр Redirect с закодированным URL вашего сообщества. Дополнительно мы позволяем не использовать кодирование redirect параметра. В этом случае используйте HttpServerUtility.UrlEncode метод и ваш SSO URL должен выглядеть, как показано ниже:
https://yourdomain.com/sso/d4j4f5w5k4u564e4o2s4g5k494h4w5m2m4m4o5m41684n4d4m2d4c4/n3g4x5x59406d2o4/j4g4x5x59406t443l4a4v5c4a4q4z3k4i4d426p4f5p4a4u244e4/y2233424/e5b39acffb16a3287a652a31683c17aadfa4c07c/direct-sso?redirect=https%3A%2F%2Fyourdomain.com