Реализация единого входа с помощью ADAL и JWT в ионном приложении - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь внедрить единый вход с помощью ADAL и JWT в ионном приложении.

Я использую Angular 5.2.10 и Ionic v3.

Это мой auth.service.ts:

Я импортирую:

import { Injectable } from '@angular/core';
import { JwtHelperService } from '@auth0/angular-jwt';
import { Platform} from 'ionic-angular';
import { MSAdal, AuthenticationContext, AuthenticationResult } from '@ionic-native/ms-adal';
import { environment as env } from '../environments/environment';

И я почти уверен, что у меня нет проблем с файлом среды, потому что я уже пробовал его в другом приложении.

Тогда у меня проблема с моей функцией аутентификации:

@Injectable()
export class AuthService {
  constructor(
    private msAdal: MSAdal,
    private jwtHelper: JwtHelperService,
    private platform: Platform,
  ) {
    console.log("auth.service.ts constructor");
    platform.ready().then(() => {
      console.log('Activate ADAL logger GSA');
    });
  }


  public async authenticate(): Promise<boolean> {
    console.log('GSA authenticate');
    await this.platform.ready();
    console.log('Called authenticate');
    const authContext = this.msAdal.createAuthenticationContext(
      env.adAuthority,
      false
    );
    authContext.validateAuthority = false;
    // Attempt to authorize user silently
    try {
      console.log('Trying to authorize user silently');
      const silentAuthResult = await authContext.acquireTokenSilentAsync(
        env.adResourceUri,
        env.adClientId,
        undefined
      );
      console.log('Silent Auth result:', silentAuthResult);
      return true;
    } catch (err) {
      console.log(
        'Cannot authorize user silently, trying to launch login process'
      );
      try {
        const authResult = await authContext.acquireTokenAsync(
          env.adResourceUri,
          env.adClientId,
          env.adRedirectUri,
          undefined,
          undefined
        );
        console.log('Auth Result:', authResult);
        return true;
      } catch (err) {
        console.error('Cannot authorize user silently. User unauthorized or no connectivity to the authentication provider: ', err);
        return false;
      }
    }
  }    

Я получаю эту ошибку:

Ошибка: Uncaught (в обещании): TypeError: Невозможно установить свойство 'validateAuthority' из неопределенного TypeError: Невозможно установить свойство 'validateAuthority' из неопределенного в AuthenticationContext.set [as validateAuthority] (http://localhost:8100/build/vendor.js:126569:39) в AuthService. (http://localhost:8100/build/main.js:1407:55)

Может кто-нибудь помочь мне с этим?

...