Я, вероятно, упускаю что-то простое в документации по 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>