Поддерживает ли ADAL.js поддерживает ли новое предоставление кода авторизации с расширениями PKCE?

#oauth-2.0 #adal.js

#oauth-2.0 #adal.js

Вопрос:

В соответствии с новыми рекомендациями по безопасности на https://oauth.net/2/grant-types/implicit /, неявный поток не рекомендуется. Поскольку ADAL.js использует неявный поток, будет ли это затронуто и рекомендуется ли использовать ADAl.js неявный поток для новых приложений?

Ответ №1:

Да, я согласен, что в соответствии с новыми рекомендациями неявный поток не рекомендуется. В настоящее время ADAL js использует неявный поток OAuth 2.0 и не возвращает токен обновления по соображениям безопасности (токены обновления имеют более длительный срок службы, чем токены доступа, и поэтому более опасны в руках злоумышленников).

Он предназначен для возврата токена ID, когда ресурс, для которого запрашивается токен, совпадает с клиентским приложением. Когда возвращается токен ID, он кэшируется библиотекой. Итак, когда мы используем AuthenticationContext.AcquireToken(ресурс, обратный вызов), это позволяет приложению получать токены автоматически, без повторного запроса пользователя. ADAL js использует скрытый Iframe для отправки запроса токена в Azure AD.

Но чтобы использовать поток PKCE, мы можем выполнить http post вызов https://login.microsoftonline.com/tenant_id/outh2/authorize конечная точка передает code_challenge вместе с другими параметрами в теле и получает код авторизации. И используйте этот код и выполните вызов https://login.microsoftonline.com/tenant_id/outh2/token конечная точка передает code_verifier вместе с другими параметрами в теле и получает токен.

Если вы используете SPA и у вас нет внутренних компонентов или вы собираетесь вызывать web API через JavaScript, используйте неявный поток предоставления OAuth 2.0. Но если у вас есть внутренний компонент и вы используете API из внутреннего кода, то неявный поток не подходит. В этом случае вы можете использовать поток предоставления кода авторизации OAuth2.0 или поток предоставления учетных данных клиента OAuth2.0, это обеспечивает возможность получения токенов, которые отражают разрешения, назначенные самому приложению.