Ошибка неверного эмитента OAuthService (angular-oauth2-oidc) - PullRequest
0 голосов
/ 12 июня 2018

В настоящее время я пытаюсь внедрить аутентификацию 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 Ответ

0 голосов
/ 12 июня 2018

На 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.

...