Разное

Index php id add добавить объявление мне: Как добавить объявление — Директ Коммандер. Справка

29.06.2023

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 > Регистрация приложений найдите свое приложение и перейдите на страницу Роли приложений. Создайте роль приложения для каждой роли, которую вы хотите назначить, например. Админ и пользователь:

Вы можете создать множество ролей приложения, чтобы помочь контролировать доступ в вашем приложении, в этом примере проекта я выбрал Role.Admin и Role.User.

Отображаемое имя отображается при назначении пользователей в Azure AD, а значение — это то, что отображается в коде PHP вашего приложения. При назначении пользователей на экране корпоративного приложения вам будет предложено выбрать их роль.

В примере index.php вы заметите ссылку на $Auth->userRoles — это будет массив ролей пользователей. Вы можете использовать функцию checkUserRole в auth.php, чтобы проверить, имеет ли пользователь роль, необходимую для определенной части вашего приложения, т. е. if ($Auth->checkUserRole(‘Role.Admin’)) { //здесь код только администратор }

Дополнительная литература

  • Платформа удостоверений Майкрософт и поток кода авторизации OAuth 2.0 — Платформа удостоверений Майкрософт | Документы Майкрософт
  • rfc7636 (ietf. org)
  • Обозреватель графов — Microsoft Graph

Как интегрировать RHEL 7 или CentOS 7 с Windows Active Directory

, Прадип Кумар

В большинстве организаций пользователи и группы создаются и управляются в Windows Active Directory. Мы можем интегрировать наши серверы RHEL 7 и CentOS 7 с AD (Active Directory) для аутентификации. Другими словами, мы можем присоединиться к нашим серверам CentOS 7 и RHEL 7 в домене Windows, чтобы системные администраторы могли входить на эти серверы Linux с учетными данными AD. При создании пользователей UNIX в AD мы можем сопоставить этих пользователей с определенной группой, чтобы уровень доступа контролировался централизованно из AD.

В этой статье мы обсудим, как интегрировать CentOS 7.x и RHEL 7.x с AD ( Windows Server 2008 R2 и Windows Server 2012 R2 ). Следующие шаги применимы как для CentOS 7, так и для RHEL 7.

Шаг: 1 Установите необходимые пакеты с помощью команды yum

Используйте команду yum для установки следующих пакетов из командной строки.

 [[электронная почта защищена] ~]# yum install sssd realmd нечетная работа нечетная работа-мхомедир adcli samba-common samba-common-tools krb5-workstation openldap-clients policycoreutils-python 

Обновите файл /etc/hosts и /etc/resolv.conf, чтобы правильно разрешить DNS-имя или имя хоста сервера AD. В моем случае имя хоста сервера AD — « adserver.example.com », поэтому поместите следующую строку в файл /etc/hosts

 192.168.0.151    adserver.example.com adserver 

Содержимое resolv.conf должно быть примерно таким ниже. Просто замените доменное имя и IP-адрес DNS-сервера в соответствии с вашей настройкой

 [[email protected] ~]# cat /etc/resolv.conf
поиск example.com
сервер имен 192.168.0.151
[[email protected] ~]# 
Шаг 2.
Теперь присоединяйтесь к домену Windows или интегрируйтесь с AD с помощью команды realm

Когда мы установим указанные выше необходимые пакеты, тогда будет доступна команда realm. Мы будем использовать команду under realm для интеграции CentOS 7 или RHEL 7 с AD через пользователя «tech». tech — это связанный пользователь, у которого есть необходимые привилегии в AD, или мы также можем назначить пользователя-администратора AD Server для целей интеграции.

 [[email protected] ~]# присоединение к области --user=tech adserver.example.com
Пароль для техники:
[[электронная почта защищена] ~]# 

Теперь проверьте, присоединился ли наш сервер к домену Windows или нет. Просто запустите команду ‘ список областей

  [[email protected] ~]# список областей
пример.com
тип: керберос
имя области: EXAMPLE.COM
доменное имя: example.com
настроено: kerberos-член
 серверное программное обеспечение: активный каталог 
клиентское ПО: sssd
необходимый пакет: нечетная работа
необходимый-пакет: одджоб-мхомедир
требуемый пакет: sssd
требуемый пакет: adcli
требуемый пакет: общие инструменты самбы
форматы входа: %[email protected]
политика входа в систему: разрешить вход в область
[[электронная почта защищена] ~]# 

Всякий раз, когда мы запускаем команду «присоединение к области», она автоматически настраивает файл « /etc/sssd/sssd. conf ».

Шаг 3. Проверка и проверка пользователей AD на серверах REHL 7 или CentOS 7

С помощью команды « id » в Linux мы можем проверить uid и gid пользователя, а также информацию об их группе. На данный момент наш сервер является частью домена Windows. Используйте приведенную ниже команду для проверки сведений о пользователях AD.

 [[электронная почта защищена] ~]# идентификатор [электронная почта защищена]
uid=1997801106([электронная почта защищена]) gid=1997800513(домен [электронная почта защищена]) groups=1997800513(домен [электронная почта защищена])
[[email protected] ~]# 

Вы могли заметить, что в приведенной выше команде я также упомянул имя домена вместе с именем пользователя, поскольку оно контролируется файлом «/etc/sssd/sssd.conf». Если мы выполним команду id без имени домена, мы не получим никаких сведений о пользователе.

 [[email protected] ~]# id linuxtech
id: linuxtechi: такого пользователя нет
[[email protected] ~]# 

Мы можем изменить это поведение, отредактировав файл /etc/sssd/sssd. conf.

Измените следующие параметры с

 use_full_qualified_names = True
fallback_homedir = /home/%u@%d 

до

 use_full_qualified_names = False
fallback_homedir = /home/%u 

Перезапустите службу sssd, используя следующую команду systemctl

 [[email protected] ~]# systemctl restart sssd
[[email protected] ~]# systemctl daemon-reload 

Теперь запустите команду id и посмотрите, сможете ли вы получить сведения о пользователе AD без упоминания имени домена

 [[email protected] ~]# id linuxtech
uid=1997801106(linuxtechi) gid=1997800513(пользователи домена) groups=1997800513(пользователи домена)
[[email protected] ~]# 

Давайте попробуем ssh CentOS 7 или RHEL 7 Server с учетными данными AD

 [[email protected] ~]# ssh [email protected]
[электронная почта защищена] пароль:
Последний вход: пятница, 3 марта, 10:18:41 2017 г. с сервера serverb.example.com.
[[электронная почта защищена] ~]$ идентификатор
uid=1997801106(linuxtechi) gid=1997800513(пользователи домена) groups=1997800513(пользователи домена)
[lin[email защищено] ~]$ pwd
/дом/линукстекчи
[[электронная почта защищена] ~]$ 
Шаг: 4 Права Sudo для пользователей AD в CentOS 7 или RHEL 7

Если вы хотите настроить права sudo для пользователей AD, лучший способ — создать группу в AD с именем sudoers и добавить пользователей Linux/UNIX в этой группе и на сервере Linux создайте файл с именем « sudoers » в папке /etc/sudoers.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *