Ошибка неверного эмитента OAuthService (angular-oauth2-oidc)
В настоящее время я пытаюсь внедрить аутентификацию Azure в мое угловое приложение. К сожалению, я сталкиваюсь с некоторыми проблемами. Следующий код дает мне токен доступа, как я и ожидал. Чтобы реализовать это в моем API, я хочу использовать OpenIDConnect.
export class AppComponent implements OnInit {
title = 'Sign in test';
constructor(private oauthService: OAuthService) {
}
private async ConfigureAuth(): Promise<void> {
this.oauthService.configure({
loginUrl: 'loginUrl',
clientId: 'clientId',
resource: 'resource',
logoutUrl: 'logoutUrl',
redirectUri: window.location.origin + '/',
scope: 'openid',
oidc: false
});
this.oauthService.setStorage(sessionStorage);
}
async ngOnInit() {
await this.ConfigureAuth();
this.oauthService.tryLogin({});
if(!this.oauthService.getAccessToken()) {
await this.oauthService.initImplicitFlow();
}
console.log(this.oauthService.getAccessToken());
}
}
Вход по-прежнему работает, поскольку он дает мне токен доступа, но когда я установил oidc
в true
это дает мне следующие ошибки:
angular-oauth2-oidc.js:1146 Error validating tokens
(anonymous) @ angular-oauth2-oidc.js:1146
Wrong issuer: https://sts.windows.net/{tenantid}/
ERROR Error: Uncaught (in promise): Wrong issuer: https://sts.windows.net/{tenantid}/
Я не уверен, как решить эту проблему, поскольку у эмитента в этом случае есть правильный идентификатор арендатора.
Надеюсь, кто-то может помочь мне с этим.
1 ответ
На GitHub есть связанная открытая проблема: допустимый access_token, но нет идентификатора. Причина этого, вероятно, в том, что AAD не поддерживает CORS для .well-known/openid-configuration
, По крайней мере, так обстоит дело с AAD B2C. Я смог решить это, вручную указав конфигурацию обнаружения:
export const aadB2cNoDiscoveryConfig: AuthConfig = {
'clientId': XXX
'redirectUri': XXX
'loginUrl': XXX
'logoutUrl': XXX
'scope': 'openid https://mytenant.onmicrosoft.com/myapi/user_impersonation',
'oidc': true,
'issuer': 'https://login.microsoftonline.com/XXX/v2.0/',
'tokenEndpoint': 'https://login.microsoftonline.com/XXX.onmicrosoft.com/oauth2/v2.0/token?p=b2c_1_signin',
'responseType': 'id_token token',
'clearHashAfterLogin': true,
'disableAtHashCheck': true,
'showDebugInformation': true,
'strictDiscoveryDocumentValidation': false,
'jwks': {
'keys': [
{
kid: XXX
nbf: XXX,
use: XXX
kty: XXX
e: XXX
n: XXX
}]
}
Примечание: я использовал AAD B2C.