Ошибка при проверке аудитории Azure AD B2C - PullRequest
0 голосов
/ 30 апреля 2018

У меня есть спа-интерфейс 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, является проблемой, но, просматривая документы, я не могу найти проблему.

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 11 июля 2018

Звучит так, будто вы посылаете токен Id в API (который предназначен для вашего интерфейса) вместо токена доступа. Вы можете отладить проблему дальше, расшифровав токен, который вы получите на https://jwt.ms.

Там aud (аудитория) должна соответствовать идентификатору вашего API, и запрашиваемые вами области также должны быть там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...