Автоматическое создание новых регистраций приложений в AAD с использованием JavaScript - PullRequest
0 голосов
/ 17 мая 2018

Я просто хочу убедиться, что следующее невозможно, прежде чем я пойду по другому пути (распределенное приложение или мультитенантный веб-сайт).

У меня есть плагин для веб-приложений, который должен запускать некоторые автоматические настройки, например создавать новые регистрации приложений в текущем клиенте, что, в свою очередь, требует доступа к API Microsoft Graph, для которого требуется существующая регистрация приложений с Directory.ReadWrite. Все пр.

Я надеялся, что мог бы использовать для этого мультитенантную регистрацию приложений от своего собственного арендатора.

Однако я не могу использовать поток неявного предоставления, поскольку URL-адреса перенаправления / ответа неизвестны (плагин поставляется сотням клиентов, и у каждого клиента может быть много сред).

Плагин может использовать только C # и JS, однако часть C # является «изолированной», поэтому не может отображать (веб) формы. Как ADAL, так и MSAL для .NET не удается открыть окно входа в систему, поскольку оно не работает в режиме UserInteractive.

Я использовал ADAL для JS, однако он не поддерживает нативные клиенты (не веб-RedirectURI).

Я также пытался использовать MSAL для JS с https://login.microsoftonline.com/common/oauth2/nativeclient (вход выполнен успешно, однако диалоговое окно зависает, потому что JS теряет доступ к нему, междоменный запрос) и urn: ietf: wg: oauth: 2.0: oob (после входа отображается «Открыть приложение»). Я отключил «защищенный режим» в IE.

Спасибо

1 Ответ

0 голосов
/ 17 мая 2018

OAuth требует, чтобы у вас был «известный пункт назначения» для отправки пользователю.Без этого было бы слишком легко создать атаку «человек посередине», взломав redirect_uri, чтобы он указывал на вредоносный сайт и захватывал их токен без ведома пользователя.

При использовании кода авторизации или неявных разрешений в мультитенантном сценарии вы хотите разместить страницу, на которую они также перенаправляются.Ваш сайт получает токен, который им нужен, а затем перенаправляет его обратно в приложение.

Ключом к этому рабочему процессу является кодирование конечного пункта назначения в параметре state.Ваш сервер получает токен, декодирует окончательное обозначение из параметра state, а затем перенаправляет их в это место.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...