У меня есть спа-интерфейс Anuglar5 и ASP.NET Core API. Оба защищены службой Azure AD B2C. Приложение angular правильно перенаправляет на страницу входа, а вход в систему возвращает токен. Когда я пытаюсь вызвать API с токеном, я получаю;
AuthenticationFailed: IDX10214: Audience validation failed. Audiences: '627684f5-5011-475a-9cbd-55fcdcdf369e'. Did not match: validationParameters.ValidAudience: 'ee8b98a0-ae7a-38b2-9e73-d175df22ef4c' or validationParameters.ValidAudiences: 'null'.
«627684f5-5011-475a-9cbd-55fcdcdf369e» - это идентификатор приложения внешнего интерфейса. И "ee8b98a0-ae7a-38b2-9e73-d175df22ef4c" - это идентификатор приложения API.
Мой код;
`класс экспорта MSALService {
private applicationConfig: any = {
clientID: '627684f5-5011-475a-9cbd-55fcdcdf369e',
authority: 'https://login.microsoftonline.com/tfp/mytenant.onmicrosoft.com/B2C_1_my_signin_signup',
b2cScopes: ['https://meeblitenant.onmicrosoft.com/api/myapp_read', 'https://meeblitenant.onmicrosoft.com/api/myapp_write'],
redirectUrl: 'http://localhost:4200/'
};
private app: any;
public user: any;
constructor() {
this.app = new UserAgentApplication(this.applicationConfig.clientID, this.applicationConfig.authority,
(errorDesc, token, error, tokenType) => {
console.log(token);
},
{ redirectUri: this.applicationConfig.redirectUrl }
);
}
public login() {
let tokenData = '';
this.app.loginRedirect(this.applicationConfig.b2cScopes).then(data => { tokenData = data; });
}
public getUser() {
const user = this.app.getUser();
if (user) {
return user;
} else {
return null;
}
}
public logout() {
this.app.logout();
}
public getToken() {
return this.app.acquireTokenSilent(this.applicationConfig.b2cScopes)
.then(accessToken => {
console.log(accessToken);
return accessToken;
}, error => {
return this.app.acquireTokenPopup(this.applicationConfig.b2cScopes)
.then(accessToken => {
return accessToken;
}, err => {
console.error(err);
});
}
);
}
} `
Использование токена, который возвращается в Postman, также возвращает ту же ошибку. Моя теория заключается в том, что URL-адрес, который я использую для вызова Azure AD B2C, является проблемой, но, просматривая документы, я не могу найти проблему.
Любая помощь будет принята с благодарностью.