Бесшовная авторизация
Бесшовная авторизация — механизм, при помощи которого пользователь, авторизовавшись на одном ресурсе, авторизуется на других ресурсах без необходимости повторного ввода своих учетных данных, при этом сам процесс авторизации становится максимально «прозрачным» (незаметным) для пользователя.
При бесшовной авторизации вся работа по авторизации возлагается на серверную часть инфраструктуры интегрированных сервисов. Однажды настроенная и отлаженная схема в дальнейшем не требует серьезных усилий для поддержки и работает полновтью автоматически.
Для удобства своих клиентов ЭБС Лань разработала две схемы непосредственной бесшовной авторизации, автологин по логину с паролем и бесшовная авторизация по токену.
Автологин по паре логин/пароль
Данная схема отлично подойдет в случае, когда организации известны логин и пароль пользователя в ЭБС Лань — например, пользователь был создан сервером удаленно через API Управление пользователями.
При этой схеме авторизации логин и пароль передаются в открытом виде — по аналогии со стандартной формой авторизации, но незаметно для пользователя. Передаваемые данные надежно защищены от перехвата третьими лицами протоколом https.
В случае, когда после авторизации необходимо перенаправить пользователя на конкретную страницу ЭБС, предоставляется возможность указать URL для редиректа.
Пример формирования запроса для автологина
Для выполнения автологина необходимо направить пользователя на URL https://e.lanbook.com/security/login_password/autologin
В качестве параметров необходимо передать:
- login — Логин пользователя
- redirect — (опционально) URL, на который пользователь будет перенаправлен после успешной авторизации. Принимаются только редиректы на страницы сайта e.lanbook.com без указания протокола и домена. Например /book/98235
Параметра могут быть переданы методами POST или GET
Пример ссылки для автологина в формате GET: https://e. lanbook.com/security/login_password/autologin?login=user&password=123456&redirect=/book/98235
Авторизация по коду
Бесшовная авторизация по коду — вариант наиболее тесной и гибкой интеграции между серверами подписчика и ЭБС Лань. В данной схеме серверу подписчика выдается токен — специальным образом сформированный код, позволяющий идентифицировать запросы с этого сервера как «доверенные». При помощи этого токена сервер заказчика запрашивает для пользователя ссылку с временным кодом, при переходе по этой ссылке пользователь автоматически авторизуется в ЭБС Лань.
Важной особенностью этой схемы является отсутствие необходимости регистрировать пользователя в ЭБС Лань заранее. Если пользователя с переданным параметрами сервер ЭБС не находит — для этого пользователя создается личный кабинет, после чего пользователь автоматически авторизуется. Процесс для пользователя остается таким же прозрачным — с его точки зрения он просто перешел по ссылке.
В случае, когда после авторизации необходимо перенаправить пользователя на конкретную страницу ЭБС, предоставляется возможность указать URL для редиректа.
Метод PHP SDK на GitHub
ВАЖНО! В ЭБС Лань предусмотрено 3 вида авторизации: стандартная через форму авторизации, автологин по логину/паролю и бесшовная авторизация по коду. Необходимо учитывать, что эти 3 вида авторизации нежелательно использовать совместно, иначе возможно создание дублей личных кабинетов. Если необходимо предусмотреть гибридный способ авторизации — пожалуйста,проконсультируйтесь с технической поддержкой ЭБС.
Зарегистрируйтесь для входа в Amazon
LWA для веб-сайтов ШАГ 1:
Зарегистрируйтесь для LWA
→
ШАГ 2:
Добавьте кнопку LWA на свой веб-сайт 0 9 0009
Добавьте LWA SDK для JavaScript
→
ШАГ 4:
Внедрение предоставления кода авторизации
→
ШАГ 5:
Динамическое перенаправление пользователей
→
ШАГ 8: 9000 Информация о профиле клиента0009
→
ШАГ 7:
Выход пользователей из системы
→
ШАГ 8:
Интеграция с системой вашей учетной записи
Прежде чем вы сможете использовать вход с помощью Amazon на веб-сайте, вы должны зарегистрировать профиль безопасности через консоль разработчика. Во время регистрации вас попросят указать название вашего приложения, ваш логотип и ссылку на вашу политику конфиденциальности. Пользователи будут видеть эту информацию каждый раз, когда будут использовать «Войти с Amazon» на вашем веб-сайте или в мобильном приложении.
- Создать новый профиль безопасности
- Включите существующий профиль безопасности для входа в Amazon
- Добавьте свой веб-сайт в свой профиль безопасности
- Удалить свой профиль безопасности
Создание нового профиля безопасности
Пропустите этот раздел, если вы уже создали профиль безопасности в Amazon Developer Console.
Посетите https://developer.amazon.com/loginwithamazon/console/site/lwa/overview.html. Вам будет предложено войти в консоль разработчика, которая обрабатывает регистрацию приложения для входа в Amazon. Если вы впервые используете консоль разработчика, вам будет предложено настроить учетную запись.
Щелкните Создать новый профиль безопасности . Вы перейдете на страницу управления профилями безопасности.
Введите Имя и Описание для вашего профиля безопасности. Профиль безопасности связывает данные пользователя и учетные данные безопасности с одним или несколькими связанными приложениями. Имя — это имя, отображаемое на экране согласия, когда пользователи соглашаются поделиться информацией с вашим приложением. Это имя относится к версиям вашего приложения для Android, iOS и веб-сайта.
Вы должны ввести URL уведомления о конфиденциальности согласия для своего приложения. URL-адрес уведомления о конфиденциальности — это адрес политики конфиденциальности вашей компании или приложения (например, http://www.example.com/privacy.html). Эта ссылка отображается для пользователей на экране согласия. Это относится к версиям вашего приложения для Android, iOS и веб-сайта.
Если вы хотите добавить изображение логотипа согласия для своего приложения, нажмите Загрузить изображение . Этот логотип отображается на экране входа и согласия и представляет вашу компанию или веб-сайт. Это относится к версиям вашего приложения для Android, iOS и веб-сайта. Логотип будет уменьшен до 50 пикселей в высоту, если он выше 50 пикселей; нет ограничений по ширине логотипа.
Щелкните Сохранить . Ваш профиль безопасности должен выглядеть примерно так:
.
Включите существующий профиль безопасности для входа в Amazon
Пропустите этот раздел, если вы использовали приведенные выше инструкции для создания нового профиля безопасности. Профили безопасности, созданные с помощью приведенных выше инструкций, уже включены для входа с помощью Amazon.
Посетите https://developer.amazon.com/loginwithamazon/console/site/lwa/overview.html. Вам будет предложено войти в консоль разработчика.
Нажмите Выберите профиль безопасности , затем выберите свой профиль безопасности в раскрывающемся меню.
Нажмите кнопку подтверждения , которая появится справа.
Появится форма, в которую необходимо ввести информацию экрана согласия.
Вы должны ввести URL уведомления о конфиденциальности согласия для своего приложения. URL-адрес уведомления о конфиденциальности — это адрес политики конфиденциальности вашей компании или приложения (например, http://www.example.com/privacy.html). Эта ссылка отображается для пользователей на экране согласия. Это относится к версиям вашего приложения для Android, iOS и веб-сайта.
Если вы хотите добавить Изображение логотипа согласия для своего приложения, нажмите Загрузить изображение . Этот логотип отображается на экране входа и согласия и представляет вашу компанию или веб-сайт. Это относится к версиям вашего приложения для Android, iOS и веб-сайта. Логотип будет уменьшен до 50 пикселей в высоту, если он выше 50 пикселей; нет ограничений по ширине логотипа.
Нажмите Сохранить . Экран обновится, и под кнопкой Подтвердить появится сообщение, в котором говорится: «Войти с Amazon, успешно включенным для профиля безопасности».
Добавьте свой веб-сайт в свой профиль безопасности
После создания профиля безопасности (или) включения существующего профиля безопасности для входа с помощью Amazon в консоли разработчика вы можете добавить настройки для определенных веб-сайтов и мобильных приложений, которые будут использовать Войти с помощью Amazon с этот профиль. Выполните следующие действия, чтобы добавить веб-сайт в свой профиль:
- Посетите https://developer.amazon.com/loginwithamazon/console/site/lwa/overview.html.
- Найдите в таблице профиль безопасности, который вы хотите изменить.
- Наведите курсор на кнопку, показанную в столбце Управление .
- Выберите пункт меню Веб-настройки . Примечание: Если нужный профиль безопасности не отображается в таблице, он еще не включен для входа с помощью Amazon. В этом случае используйте раскрывающееся меню над таблицей, чтобы Выберите профиль безопасности , затем нажмите Подтвердить . Вам потребуется ввести URL уведомления о конфиденциальности согласия и при желании выбрать изображение логотипа согласия , оба из которых будут отображаться на экранах входа и согласия. Если у вас нет существующего профиля безопасности для вашего приложения, см. раздел Регистрация профиля безопасности (выше).
- Щелкните Редактировать .
- Чтобы использовать Login with Amazon на веб-сайте, необходимо указать либо Разрешенные источники или Разрешенные обратные URL-адреса . Укажите Разрешенные источники, чтобы предоставить вашим пользователям возможность проверки подлинности во всплывающем окне, или Разрешенные URL-адреса возврата, чтобы обеспечить возможность проверки подлинности с перенаправлением.
- Если на вашем веб-сайте будет использоваться вход с помощью Amazon SDK для JavaScript, добавьте источник вашего веб-сайта в список разрешенных источников . Источник — это комбинация протокола, доменного имени и порта (например, https://www.example.com:8443). Разрешенные источники должны использовать протокол HTTPS. Если вы используете стандартный порт (порт 80 или порт 443), вам нужно указать только доменное имя (например, https://www.example.com). Добавление здесь вашего домена позволяет программе Login with Amazon SDK for JavaScript взаимодействовать с вашим веб-сайтом непосредственно во время процесса входа. Веб-браузеры обычно блокируют связь между сценариями из разных источников, если только сценарий специально не разрешает это.
- Если ваш веб-сайт будет совершать HTTPS-вызовы для входа в службу авторизации Amazon
и указав
redirect_uri
для ответов, добавьте эти URI перенаправления в разрешенных URL-адресов возврата . Возвращаемый URL-адрес включает протокол, домен, путь и строку (строки) запроса (например, https://www.example.com/login.php).
- Щелкните Сохранить . Ваш профиль безопасности должен выглядеть примерно так: .
Удалить свой профиль безопасности
При необходимости вы можете удалить любой профиль безопасности, не связанный с приложением, распространяемым через Amazon Appstore. Перейдите на страницу управления профилями безопасности, выберите профиль и нажмите Удалить профиль безопасности . Появится форма подтверждения. Введите слово удалить в текстовое поле, затем нажмите Удалить , чтобы подтвердить действие.
Если профиль безопасности был удален по ошибке, его можно полностью восстановить на странице управления профилями безопасности. Нажмите Показать удаленные профили безопасности , нажмите на имя профиля, который вы хотите восстановить, затем нажмите Восстановить профиль безопасности . Появится форма подтверждения. Нажмите кнопку Восстановить , чтобы восстановить профиль безопасности, включая его настройки для Интернета, Android/Kindle и iOS.
PHP: Реализуйте вход Azure AD на свой сайт
Автор Кэти Николсон, опубликовано 8 августа 2021 г.
Некоторое время назад я написал код, позволяющий одному из моих PHP-проектов входить в систему с помощью аутентификации с помощью ADFS. Недавно я обновил его, чтобы напрямую общаться с Azure AD, и выделил его в отдельный проект, которым я поделюсь здесь.
В основном это работает с использованием oAuth3, сеансов браузера, базы данных и нескольких сценариев, а на стороне Azure AD вам необходимо создать регистрацию приложения. В этом примере проекта происходит следующий поток:
- Пользователь попадает на index.php. Если у них нет файла cookie сеансового ключа, он создается и сохраняется в базе данных вместе со страницей, к которой пользователь пытался получить доступ. Они перенаправляются на login.microsoftonline.com для аутентификации.
- Если вы разрешили аутентификацию от любого клиента и использовали общую конечную точку (а не ваш конкретный идентификатор клиента), пользователю может быть предложено разрешить вашему приложению доступ к его учетной записи. Если они находятся в своей домашней аренде, вы уже утвердили это для всех пользователей.
- Пользователь перенаправляется к файлу oauth.php, где выполняется фоновый запрос на login.microsoftonline.com для получения токена. Как только это было успешно, пользователь перенаправляется обратно в исходное место назначения.
- Если пользователь попадает на index.php и его файл cookie ключа сеанса уже существует, существует в базе данных и срок его действия не истек, ему будут выделены данные этого токена.
- Если пользователь попадает на index.php с файлом cookie ключа сеанса, но срок его действия истекает в течение следующих 10 минут, мы выполним запрос на обновление в фоновом режиме.
- Если пользователь попадает на index.php с файлом cookie ключа сеанса, но срок его действия истек, он перенаправляется обратно на login.microsoftonline.com, что может автоматически выполнить повторный вход в систему или запрос, в зависимости от его настроек.
Код доступен в моем репозитории GitHub. Различные файлы внутри:
- database.sql — таблица, используемая в этом проекте. Сначала создайте базу данных и запишите детали (хост, имя пользователя, пароль, базу данных).
- inc/_config.inc — файл конфигурации, поместите сюда сведения о своей базе данных, а также идентификатор арендатора, идентификатор клиента и секрет клиента или сведения о сертификате из регистрации приложения Azure AD. Также есть запись для URL-адреса, который является URL-адресом вашего сайта, включенным, а не автоматически определяемым, если ваш сайт доступен по нескольким URL-адресам, поскольку это должно соответствовать тому, что вы ввели при регистрации приложения. Я определил константы для всех этих настроек, вероятно, есть лучший способ сделать это, но они работают.
Примечание этот файл необходимо переименовать в config.inc. - inc/mysql.php — класс, используемый для доступа к базе данных, здесь ничего не нужно редактировать.
- inc/auth.php — основной класс аутентификации — здесь опять нечего редактировать.
- www/index.php — пример страницы, которая запросит вход в систему, а затем отобразит ваше имя пользователя и ссылку для выхода, а также распечатку всех данных, полученных во время входа в систему.
- www/oauth.php — сценарий обратного вызова, страница входа в Azure AD возвращает вас к этому сценарию.
- inc/oauth.php — некоторые рабочие функции, используемые inc/auth.php и www/oauth.php
При размещении на веб-сервере корневой каталог должен быть www, а каталог inc не должен быть доступен из веб-браузера.
Примечание. Для этого на сервере должна быть установлена библиотека PHP CURL. Вам также понадобится openssl, если вы хотите использовать клиентские сертификаты вместо секрета клиента — когда я тестировал это на Linux и Windows, он уже был установлен.
Регистрация приложения
Чтобы создать регистрацию приложения, перейдите в Azure AD > Регистрация приложений и щелкните Новая регистрация . Заполните отображаемое имя своего сайта, выберите типы учетных записей, затем введите URI перенаправления, который будет https://your.domain.name/oauth.php. Убедитесь, что вы указали https://your.domain.name (без косой черты) в _URL в config.inc. Нажмите Зарегистрируйте после завершения.
Зарегистрируйте приложение в Azure AD
Краткое примечание о поддерживаемых типах учетных записей. Если вы используете «общий» в качестве идентификатора клиента в config.inc, любая учетная запись в любом арендаторе Azure AD, а также личные учетные записи (outlook.com и т. д.) могут вести журнал. в. Если вы используете свой фактический идентификатор арендатора, то только учетные записи, которые находятся в вашем арендаторе (либо как обычные учетные записи, либо как гости из других арендаторов), могут войти в систему, но личные учетные записи Майкрософт будут работать, если они являются гостями в вашей арендаторе, при условии вы соответственно установили поддерживаемый тип учетной записи в регистрации приложения.
Когда вы закончите создание приложения, вы должны увидеть экран обзора. Скопируйте идентификатор клиента и идентификатор арендатора, вставив их в _OAUTH_TENANTID и _OAUTH_CLIENTID в config.inc. Запись _OAUTH_TENANTID должна быть либо вашим идентификатором клиента (каталога) для приложения с одним клиентом, либо словом «общий» для приложения с несколькими клиентами.
Идентификатор и идентификатор каталога (арендатора).
Теперь на странице Сертификаты и секреты добавьте новый секрет и выберите подходящее время. Не забывайте, что вам нужно будет обновить это до истечения срока его действия, поэтому сделайте пометку в своем календаре. После этого скопируйте секретное значение и вставьте его в _OAUTH_SECRET в config.inc. Убедитесь, что _OAUTH_METHOD содержит «секрет».
В качестве альтернативы вы можете использовать сертификат — это предпочтительный способ, поскольку он более безопасен. Вам потребуется закрытый ключ и сертификат в файловой системе сервера (в месте, недоступном из Интернета), и вам нужно будет добавить сертификат при регистрации приложения Azure AD. Если вы идете по этому пути, вам нужно будет установить _OAUTH_AUTH_CERTFILE на полный путь к файлу сертификата и _OAUTH_AUTH_KEYFILE на полный путь к закрытому ключу. _OAUTH_METHOD должен быть установлен на «сертификат».
Надеюсь, теперь вы сможете перейти к своему приложению и вам будет предложено войти в систему. При первом входе вам будет предложено разрешить разрешения для всех пользователей вашего арендатора (при условии, что у вас есть соответствующие права администратора).
Установите флажок, чтобы принять для всех пользователей вашего клиента
Обновление (1 сентября 2021 г.)
Я обновил это, чтобы показать базовое использование Graph API. Страница index.php по умолчанию теперь будет извлекать фотографию профиля вошедшего в систему пользователя и основные данные профиля. Вам нужно настроить константу _OAUTH_SCOPE в config.inc и убедиться, что она включает «user.read», чтобы этот бит работал. Это не обязательно, но если вы хотите прочитать запись каталога вошедшего в систему пользователя, вы можете это сделать.
Более подробное использование Graph API описано в другом моем посте о PHP, Graph Mailer, в котором демонстрируется чтение почтового ящика и отправка почты через Office 365. Вам нужно будет изменить область в config.inc, чтобы добавить соответствующие разрешения, если вы делаете это в вашем собственном приложении и запрашивайте, используя токен доступа вошедшего в систему пользователя (показать в этом проекте), а не собственный токен приложения (показать в проекте Graph Mailer).
Обновление(15 и 16 октября 2021 г.) — ограничение доступа
Вы можете дополнительно ограничить доступ к своему приложению в Azure AD. Перейдите на страницу Azure AD > Корпоративные приложения, найдите свое приложение и перейдите на страницу Свойства. Переключите «Требуется назначение» на «Да». Теперь перейдите на страницу «Пользователи и группы» и добавьте пользователей/группы, которым вы хотите предоставить доступ.
Вы можете еще больше расширить это, добавив в приложение различные роли: в Azure AD > Регистрация приложений найдите свое приложение и перейдите на страницу Роли приложений.