> For the complete documentation index, see [llms.txt](https://docs.aamsystems.ru/passoffice/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.aamsystems.ru/passoffice/passoffice-guide/admin-guide-doc/acs-configuration/acs-activedirectory/obshaya-nastroika.md).

# Общая настройка

В данном разделе находится инструкция по настройке авторизации через OpenID Connect с использованием ADFS (Active Directory Federation Services) для PassOffice. Эта инструкция охватывает конфигурирование ADFS, настройку атрибутов, обработку ошибок и отображение ролей.

1. **Конфигурирование сервера ADFS**

* **Стратегия авторизации:** используется implicit-grant flow.
* **Создание группы приложений:** в ADFS Management создайте группу приложений с шаблоном "Web browser accessing a web application".

<figure><img src="/files/Irci7oTybmVeqHZOXx15" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/UtGlGfX1aVGlAgZHnDmR" alt=""><figcaption></figcaption></figure>

• **URL-адреса перенаправления:** добавьте полный URL-адрес PassOffice в список поддерживаемых URL-адресов для перенаправления.

<figure><img src="/files/46hBntPTSzErJKpWXUE9" alt=""><figcaption></figcaption></figure>

• **Scope "openid":** добавьте scope "openid" в список доступных scope для группы приложений.

<figure><img src="/files/vGymdVCyCrYXs3XEfNn5" alt=""><figcaption></figcaption></figure>

**2. Настройка атрибутов**

• **Добавление атрибутов в токен:** создайте новое правило в ADFS для добавления атрибутов в токен аутентификации.

<figure><img src="/files/IHLtbhwexcTPJC5uamPR" alt=""><figcaption></figcaption></figure>

• **Сопоставление атрибутов:** слева выберите атрибут AD, предназначенный для токена, справа - название поля (клейма), в которое будет помещен атрибут (можно задать кастомное название).

<figure><img src="/files/oLx9sp9bLEiRAE8Lkclh" alt=""><figcaption></figcaption></figure>

* **Content-Security-Policy:** добавьте заголовок Content-Security-Policy в ответ от ADFS сервера для обновления аутентификационных токенов: `Set-AdfsResponseHeaders -SetHeaderName "Content-Security-Policy" -SetHeaderValue "frame-ancestors [адрес до PassOffice]"`
* **Проверка конфигурации:** убедитесь, что остальные опции ADFS настроены правильно, проверив конфигурацию по адресу: `https://example.ru/adfs/.well-known/openid-configuration`. Замените `example.ru` на ваш домен.

**3. Возможные ошибки при работе с OpenID и их решение**

• *MSIS9622 client authentication error и Failed to parse oauth token:* настройте политику доступа в ADFS (самое простое решение - Permit everyone). *Примечание: "Permit everyone" не рекомендуется для продакшена. Следует использовать более безопасные методы, основанные на группах пользователей или других критериях.*

• *Нет опции "Авторизация через SSO" на странице авторизации:* отключите плагины, блокирующие рекламу (adblock, adguard и т.д.).

• *MSIS9224: Received invalid OAuth authorization request...Received redirect\_uri:* добавьте `https://example.ru` (или ваш URL) в список поддерживаемых адресов для перенаправления и убедитесь, что сертификаты валидны и настроены правильно.

• *Проблемы с рефрешем токена (iframe):* `Set-AdfsResponseHeaders -SetHeaderName "Content-Security-Policy" -SetHeaderValue "frame-ancestors http://[myapp]"` где `[myapp]` - URL, где развернут PassOffice. *Используйте HTTPS вместо HTTP в продакшене.*

**4.** **Настройка отображения ролей (Клеймы):**

• **Добавление правила для групп:** в настройках ADFS на вкладке "Issue Transform Rules" добавьте новое правило

<figure><img src="/files/Cnt7yt8efxwBIEdaTMcY" alt="" width="563"><figcaption></figcaption></figure>

выбрав шаблон «Send Group Membership as a Claim».

<figure><img src="/files/DZiCZGgAEHh5SiBtkQ00" alt=""><figcaption></figcaption></figure>

• **Настройка клейма:**

* Введите название правила.
* Выберите группу в Active Directory, определяющую роль.
* Введите произвольное название клейма (например, `adminRole`).
* Установите значение клейма в `true`. *Например, клейм `adminRole` со значением `true` будет означать, что пользователь имеет права администратора.*

<figure><img src="/files/L4x3n0Bi7unxmHQIibMo" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/qTLDKwhTLwtmFV6MK5Yc" alt=""><figcaption></figcaption></figure>

• **Повторите для всех ролей:** задайте аналогичные правила для всех ролей, которые необходимо синхронизировать в PassOffice.

• **Обновление токена:** Изменения вступят в силу после обновления токена (время жизни токена настраивается командой `Set-AdfsWebApiApplication -TokenLifeTime «минуты» -TargetIdentifier` ). Обновить токен можно, выйдя из аккаунта и авторизовавшись заново.

**Синхронизация ролей оператора в Active Directory**:

• **Фоновая задача/ручная синхронизация:** используйте фоновую задачу "Импорт операторов" или синхронизируйте вручную в разделе "Администрирование - Операторы". Должны быть заданы соответствующие роли в настройках интеграции на вкладке "Роли".

• **Синхронизация при авторизации через OpenID:** для каждой роли укажите название клейма, который приходит с сервера Active Directory. Например, если есть клейм `requestRole` и его значение – `true`, оператору при авторизации будет доступна роль "Подача заявок".


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.aamsystems.ru/passoffice/passoffice-guide/admin-guide-doc/acs-configuration/acs-activedirectory/obshaya-nastroika.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
