Как получить токены доступа без AdalJS? - PullRequest
0 голосов
/ 04 июня 2018

Я зарегистрировал приложение в Azure AD.

Как программно получить токены доступа без использования библиотеки AdalJS в JavaScript?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

Это не сработало для меня, поэтому я использую ADAL.Я добавил скрипт на свою страницу с помощью пользовательского действия ScriptLink и получил там токен.Когда adal добавляет iFrame со ссылкой, я перенаправляю туда, и он возвращает меня на мою страницу с параметрами в хэше (url), поэтому мой скрипт извлекает токен из хеша URL.

0 голосов
/ 04 июня 2018

Вы должны будете использовать неявный поток предоставления вручную.Вы можете просмотреть некоторую базовую документацию здесь: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-authentication-scenarios#single-page-application-spa.

Вы аутентифицируете пользователя, перенаправляя его для входа, например https://login.microsoftonline.com/yourtenant.onmicrosoft.com/oauth2/authorize?client_id=your-client-id&response_type=id_token&redirect_uri=https%3A%2F%2Flocalhost&nonce=abcdef.

Конечно, вам нужно заменитьзначения с вашими соответствующими значениями.И генерируйте уникальный одноразовый номер для каждого запроса.

Как только пользователь вернется, вам нужно будет извлечь id_token из фрагмента и декодировать его, чтобы получить информацию о пользователе.Затем вы можете получить токены доступа для API со скрытым iframe с очень похожим URL, как и раньше, но на этот раз с response_type=token&prompt=none&resource=https%3A%2F%2Fgraph.microsoft.com%2F.Замените ресурс URI / id ресурса, для которого вы хотите токен.Затем вам придется прослушивать изменение URL-адреса iframe и извлекать токен доступа из его фрагмента, когда он успешно возвращается (или анализировать ошибку в случае сбоя аутентификации).

ADAL.JS скрывает многое из этогосложности от вас, поэтому я настоятельно рекомендую использовать его, если это возможно.

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