Azure AD: Можно ли использовать токен кода авторизации для запроса токена доступа из веб-службы? - PullRequest
0 голосов
/ 07 апреля 2020

Итак, это как бы связано с вопросом здесь: Как включить CORS в Azure Регистрации приложения при использовании в OAuth-потоке авторизации с PKCE?

Я хочу реализовать OAuth 2 для наших одностраничных JavaScript приложений, написанных на Ext JS. На стороне сервера написано в. NET (4.6.2 в настоящее время) и имеет как JSON сервисы, используемые UI (реализующий Ext.Direct), так и SOAP сервисы, используемые для интеграции клиента.

В настоящее время мы работаем с нашей собственной аутентификацией, которая действительно очень похожа на поток кода авторизации. Мы авторизируемся с помощью идентификатора клиента, имени пользователя и пароля, чтобы получить токен генерации токена (TGT), а затем используем его для запроса токена обслуживания недолговечного продукта (PST). Запрос PST продлевает срок службы TGT. Когда TGT истекает, пользователь должен пройти повторную аутентификацию.

Для маршрута OAuth 2 я, очевидно, хотел бы, чтобы пользовательский интерфейс направлял людей на страницу входа для Azure, чтобы пользователь мог войти туда с любым MFA они могут потребовать, а затем вернуться к пользовательскому интерфейсу в качестве известного пользователя. Меня не беспокоит, где я go для маркера обслуживания продукта, хотя я думаю, что имеет смысл go до Azure, если это возможно, поскольку в конечном итоге мы хотели бы перевести всех в этом направлении, я подозреваю.

Итак, я обернул часть кода выше в классе Ext JS и смог получить действительный токен авторизации. Все идет нормально. Когда я пытаюсь запросить токен доступа, я сталкиваюсь с той же проблемой с CORS, что и автор этого вопроса. Я просто не могу понять, как кто-то может использовать код авторизации с потоком PKCE с Azure на данный момент, так как ваше приложение никогда не будет размещено на том же домене, который используется для входа в систему наверняка?!

В любом случае. Я задаюсь вопросом о моих вариантах. Теперь мне интересно, могу ли я опубликовать код авторизации, который передается обратно в пользовательский интерфейс (возможно, с кодом PKCE), в веб-сервисы и заставить веб-сервисы обрабатывать связь с Azure для токенов доступа. Есть ли у этого больше шансов на успех, или я просто столкнусь с той же проблемой?

Неявный поток не вариант. Ни один из наших клиентов не примет это.

Какие есть еще варианты? Есть ли чисто серверная сторона для опции Azure, которую мне следует использовать, и потом беспокоиться о пользовательском интерфейсе?

Изо всех сил пытаемся увидеть путь вперед! Буду признателен за любые идеи, которые вы можете иметь.

Ура, Уэсти

1 Ответ

0 голосов
/ 08 апреля 2020

Ладно, после нескольких дней стука моей головы против глупости реализации Azure я наткнулся на небольшой скрытый кусок информации здесь: https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-browser#prerequisites

Если вы измените тип redirectUri в манифесте от «Web» до «Spa» возвращает мне токен доступа! Мы в деле! Это нарушает пользовательский интерфейс в Azure, но пусть будет так.

Надеюсь, это поможет кому-то еще пережить подобную боль. Я также отправлю в связанной теме:)

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