Единый вход с MSAL.js?

Можно ли получить единый вход для моего приложения, когда я уже аутентифицирован в AzureAD?

Возможный поток:

  1. Вы вошли в систему как пользователь AzureAD.
  2. Зайти в мое приложение
  3. Перенаправлен на https://login.microsoftonline.com/tenantid/oauth2/authorize?client_id=clientid (ish) -> который возвращает токен и перенаправляет обратно в мое приложение

В следующий раз, когда я использую свое приложение, если у меня есть действующий файл cookie, я не перенаправляюсь на microsoftonline.com и могу начать использовать свое приложение напрямую.

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

<script class="pre"> var userAgentApplication = new Msal.UserAgentApplication("your_client_id", null, function (errorDes, token, error, tokenType) { // this callback is called after loginRedirect OR acquireTokenRedirect (not used for loginPopup/aquireTokenPopup) }) userAgentApplication.loginPopup(["user.read"]).then( function(token) { var user = userAgentApplication.getUser(); if (user) { // signin successful } else { // signin failure } }, function (error) { // handle error }); </script>


person thllbrg    schedule 11.05.2017    source источник


Ответы (2)


Если указать клиента и только один пользователь вошел в Azure ad раньше, вы можете напрямую войти в свое приложение, если prompt=none (по умолчанию). Вы не можете добиться этого с помощью MSAL.JS, обратитесь к исходному коду MSAL.JS :

 var urlNavigate = authenticationRequest.createNavigateUrl(scopes) + "&prompt=select_account" + "&response_mode=fragment";

Будет установлено, что prompt=select_account перенаправит пользователя на страницу учетной записи. Если вы используете учетные записи Azure AD и просто хотите войти в систему с определенным клиентом, вы можете попробовать ADAL.JS (не будет принудительно prompt = select_account). Если это мультитенантное приложение (используйте common вместо идентификатора клиента), вы не сможете избежать выбора пользователем страницы с конечной точкой azure ad v2.0.

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

person Nan Yu    schedule 15.05.2017
comment
Спасибо, он работает с ADAL.js, но надеялся перейти на MSAL. - person thllbrg; 15.05.2017

Используйте acquTokenSilent вместо loginPopup и передайте свой идентификатор клиента в качестве области действия. Если обещание отклонено, вам нужно вызвать одну из других функций для входа в систему.

person Thomas Mueller    schedule 16.07.2017