Войти с помощью AAD MSAL - loginType: LoginType.Redirect - PullRequest
0 голосов
/ 13 февраля 2020

Я, вероятно, упускаю что-то простое в документации по response-aad-msal.

Я создаю компонент, который отлично работает с «loginType: LoginType.Popup», но он не работает с «LoginType.Redirect»

Поведение LoginType.Redirect: меня перенаправляют в Microsoft Login после ввода учетных данных я возвращаюсь на свою страницу. Но "", похоже, не получает информацию о правильной аутентификации. Если я снова воспользуюсь функцией входа в систему, я буду снова перенаправлен в Microsoft и сразу вернусь на свою страницу, не запрашивая учетные данные. Таким образом, токен должен быть действительным и предоставленным.

LoginType.Popup поведение: работает без проблем.

Так чего мне здесь не хватает?

var authenticationParameters  = {
  b2cScopes: ["https://tenant.onmicrosoft.com/api/read"],
  webApi: "https://tenant.azurewebsites.net/api"
};

// configuration to initialize msal
const config  = {
  auth: {
    clientId: "my id", //This is your client ID
    authority: "https://tenant.b2clogin.com/tenant.onmicrosoft.com/B2C_1_kogu_dev", //This is your tenant info
    validateAuthority: false,
    redirectUri: window.location.origin + '/auth.html'
  },
  cache: {
    cacheLocation: "localStorage",
    storeAuthStateInCookie: true
  }
};

// Options
const options = {
  loginType: LoginType.Redirect,
  tokenRefreshUri: window.location.origin + '/auth.html'
}

// instantiate MSAL
export const authProvider = new MsalAuthProvider(config, authenticationParameters, options)

        <AzureAD provider={authProvider} forceLogin={false}>
          {
            ({ login, logout, authenticationState, error, accountInfo }) => {
              switch (authenticationState) {
                case AuthenticationState.Authenticated:
                  return (
                    <p>
                      Welcome, {accountInfo.account.oid}!
                      <Button block color="danger" id="auth" onClick={logout}>Logout</Button>
                    </p>
                  );
                case AuthenticationState.Unauthenticated:
                  return (
                    <div>
                      <p>
                        <Button block color="danger" id="auth" onClick={login}>Login </Button>
                      </p>
                    </div>
                  );
                case AuthenticationState.InProgress:
                  return (
                    <div>
                      <p>
                        Login in Progress
                      </p>
                    </div>
                  );
              }
            }
          }
        </AzureAD>  
...