Я пытаюсь реализовать единый вход с Azure Аутентификация Active Directory и API с использованием Azure AD / MSAL, но сталкиваюсь с проблемами, описанными ниже.
После аутентификации * Создается 1005 *, и оно сохраняется в локальном хранилище и автоматически присоединяется к вызовам API, которые рассматриваются как несанкционированные с ошибкой «Недопустимый токен» «Аудитория недействительна», поскольку маркер идентификатора нельзя использовать для аутентификации API.
После аутентификации я вызываю acquireTokenSilent
метод для получения токена доступа. Я могу получить токен и установить его, но во время вызова API токен, присоединенный к заголовку авторизации, является идентификатором, а не токеном доступа. Как настроить Msalinterceptor
для присоединения токена доступа к заголовку авторизации вместо идентификатора токена?
Для проверки токена доступа я использовал Postman и ударить API. Опять же, авторизация не удалась (Unauthorized 401) с сообщением об ошибке «Недопустимый токен», «Подпись недействительна». В jwt.io также показывает неверную подпись. Что не так с подписью?
Это снимок моего кода:
this.subscriptionLoginSuccess = this.broadcastService.subscribe("msal:loginSuccess", (payload) => {
const accessTokenRequest = ["user.read", "api://[scope]"];
this.msalAuthService.acquireTokenSilent(accessTokenRequest);
}
Спасибо!
Изменить: Конфигурация в app.module.ts
MsalModule.forRoot({
clientID: 'clientID',
authority: 'https://login.microsoftonline.com/tanentId',
validateAuthority: true,
redirectUri: 'https://localhost:5001/',
cacheLocation: 'localStorage',
storeAuthStateInCookie: isIE,
postLogoutRedirectUri: 'https://localhost:5001/auth/login',
navigateToLoginRequestUrl: true,
popUp: false,
consentScopes: ["api://WebApiClientId/api-access"],
unprotectedResources: ['https://www.microsoft.com/en-us/'],
protectedResourceMap: protectedResourceMap,
piiLoggingEnabled: true,
}),
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: MsalInterceptor,
multi: true
},