Можно ли пройти аутентификацию из SPA с помощью библиотеки аутентификации Microsoft, но без перенаправления Uri? - PullRequest
0 голосов
/ 16 марта 2020

Я создаю Javascript одностраничное приложение. Это требует, чтобы пользователь вошел в систему во время неявного потока, чтобы позже использовать Microsoft Graph API. Я использую MSAL. js и пытаюсь адаптировать фрагменты из этого руководства для получения токена аутентификации из authRedirectCallBack

Я понимаю, что в других потоках перенаправление uri (используется после аутентификации) необходимо для получения токена и продолжения работы с ним. Однако в моем потоке я обработал токен в функции обратного вызова Javascript.

Можно ли избежать предоставления перенаправления uri при регистрации приложения в Azure AD и / или во время кода исполнение? Я бы вообще не хотел приводить пользователя к этому URI перенаправления.

В данный момент мой код выглядит так:

var msalConfig = {
  auth: {
    clientId: 'my-app-id',
  },
  cache: {
    cacheLocation: "localStorage",
    storeAuthStateInCookie: true,
    forceRefresh: false
  }
};
const loginRequest = {scopes: ['openid', 'profile', 'user.read']};
const msalClient = new Msal.UserAgentApplication(msalConfig);
msalClient.handleRedirectCallback(authRedirectCallBack);
singIn();

async function singIn() {
  try {
    msalClient.loginPopup(loginRequest).then(function (response) {
      if (msalClient.getAccount()) {
        console.log('logged');
      }
    });
  } catch (err) {
    console.log(err);
  }
}

function authRedirectCallBack(err, response) {
  if (err) {
    console.log(err);
  } else {
    if (response.tokenType === "access_token") {
      console.log('token', response);
    }
  }
}

1 Ответ

2 голосов
/ 16 марта 2020

Требуется URI перенаправления, так как это основной механизм безопасности, который мы используем для обеспечения того, чтобы ответ не был возвращен неавторизованной стороне, поскольку неявный поток полагается на перенаправление iframes / popups / windows обратно в ваше приложение с помощью Ответ в ha sh URL.

Обратите внимание, что если вы используете loginPopup / acquTokenPopup / acquTokenSilent, конечный пользователь не будет действительно "видеть" эту страницу перенаправления, так как она посещается ненадолго в любой из них. скрытый iframe (для acquTokenSilent) или всплывающее окно. Как только MSAL. js увидит, что iframe / popup перенаправлен обратно в ваше приложение, ответ анализируется и всплывающее окно / iframe закрыто.

Мы работаем над новой версией библиотеки. это переключится на поток кода авторизации с PKCE, который не будет использовать скрытые фреймы, однако он по-прежнему будет использовать всплывающие окна / перенаправления.

Можете ли вы объяснить, почему вы не хотите, чтобы ваши пользователи посещали перенаправить страницу?

...