Azure AD: могу ли я использовать токен кода авторизации для запроса токена доступа у веб-службы?

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

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

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

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

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

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

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

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

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

Привет, Уэсти


person Westy    schedule 07.04.2020    source источник


Ответы (1)


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

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

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

person Westy    schedule 08.04.2020