Я звоню в защищенный веб-интерфейс от веб-приложения реагировать SPA. И спа, и веб-API были зарегистрированы в AzureAD, и каждый зарегистрирован друг для друга через «Expose API» и «Права доступа API».
После проверки подлинности клиента, затем перед вызовом веб-API позвоните (ожидайте this.props.provider.getAccessToken ()) создан для получения токена доступа. Поставщик аутентификации настроен как:
export const authProvider = new MsalAuthProvider(
{
auth: {
authority: "https://login.microsoftonline.com/common",
clientId: "xxxx-xxxx-xxxxx",
postLogoutRedirectUri: window.location.origin,
redirectUri: window.location.origin,
validateAuthority: true,
navigateToLoginRequestUrl: false
},
system: {
logger: logger as any
},
cache: {
cacheLocation: "sessionStorage",
storeAuthStateInCookie: false
}
},
{
scopes: ["openid", "user.read", "api://xxxx-xxxxx-xxxxx/user_impersonation"]
},
{
loginType: LoginType.Redirect,
tokenRefreshUri: window.location.origin + "/auth.html"
}
);
Где "api: // xxxx-xxxxx-xxxxx / user_impersonation" - это запрос области веб-API. Авторизация для веб-API завершается неудачно с 401, потому что при проверке возвращенный токен доступа не имеет области веб-API в заявках.