Настройка OIDC с помощью ADFS — неверный запрос UserInfo

Фон

Итак, последние несколько недель я рвал на себе волосы, пытаясь заставить работать аутентификацию OIDC на основе ADFS в различных приложениях, в частности Proxmox VE, а также Gitea. Причина, по которой я это делаю, в первую очередь связана с Proxmox, где я хочу заменить обычную аутентификацию по имени пользователя и паролю для администраторов нашей инфраструктуры на YubiKey + PIN. Этот вариант изначально не поддерживается Proxmox, поэтому я подумал, что использование ADFS в качестве провайдера OpenID будет решением, поскольку он поддерживает смарт-карты и, следовательно, YubiKeys.

То, что я пробовал до сих пор

Добавление каждого приложения как «Серверное приложение, обращающееся к веб-API», а также просто «Серверное приложение». Хотя вход в систему с помощью последнего работает, возвращаемые утверждения имени пользователя являются тарабарщиной, я также не могу контролировать, кому разрешен доступ к приложению. С «Серверным приложением + веб-API» базовая аутентификация работает, но следующий запрос информации о пользователе завершается сбоем:

MSIS9921: Received invalid UserInfo request. Audience 'microsoft:identityserver:<my-token>' in the access token is not same as the identifier of the UserInfo relying party trust 'urn:microsoft:userinfo'

Установка для параметра «Политика контроля доступа» значения «Разрешить всем» не имеет значения.

Пример конфигурации для Gitea на основе https://wiki.solve.de/doc/openid-oauth-authentication/latest/setup-guides/adfs-setup-guide:

Конфигурация серверного приложенияВеб-API — Общие (идентификатор серверного приложения добавлен в качестве проверяющей стороны) — Веб-API — Разрешения клиентаПравила преобразования веб-API

Удаление идентификатора серверного приложения из идентификаторов проверяющей стороны позволяет войти в систему, но игнорирует любые правила преобразования и политики контроля доступа, вероятно, потому, что ADFS не может связать два приложения вместе.

Другие варианты

Единственным другим вариантом, который будет поддерживать аутентификацию только с использованием YubiKeys, будет Azure AD, который мы уже успешно используем для различных других приложений. Проблема, однако, в том, что учетные записи, с помощью которых мы хотим пройти аутентификацию (инфра-администраторы), не синхронизируются с Azure, чтобы избежать возможного злоумышленника, который также закрепится в нашей локальной среде в случае, если он захватит Azure. Если я что-то не упускаю из виду, AAD не поддерживает аутентификацию несинхронизированных пользователей.

Я делаю что-то совершенно неправильно, или эта установка просто не работает с приложениями, не поддерживающими ADFS? Как я искал, при запросе конечной точки userinfo необходимо предоставить какой-то параметр «ресурса» со значением запроса «urn...», который я не могу добавить.

0 ответов

Другие вопросы по тегам