ADAL5 Угловая, зацикливающаяся ошибка в URL вместо отображения пользовательского интерфейса, когда пользователь не авторизован (AADSTS50105) - PullRequest
0 голосов
/ 09 мая 2018

В настоящее время я использую adal-angular5 и Adal5Service в качестве аутентификации безопасности. В настоящее время условный доступ работает, когда пользователь не авторизован, однако ошибка отображается в виде цикла в URL-адресе, а не в форме пользовательского интерфейса. Мы уже создали пользовательский интерфейс для страницы ОШИБКА, однако мы не знаем, где поставить условие, при котором пользователь не авторизуется, на который пользователь перейдет на страницу ОШИБКА вместо ошибки цикла. Условный доступ осуществляется через групповое назначение на стороне Azure Active Directory, поэтому мы не знаем, как и какой код / ​​условие мы будем использовать.

Вот код моей аутентификации. Мы используем adal.guard.ts (машинопись)

import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import { Adal5Service } from 'adal-angular5';
import { environment } from '../environments/environment';
import { Router } from '@angular/router';

@Injectable()
export class AdalGuard implements CanActivate {
  constructor(private adal5Service: Adal5Service, private router: Router) {
    console.log("location below: ");
    if (location)
      console.log(location);
    else
      console.log("some falsy value");
    this.adal5Service.init({ ...environment.ssoConfig, redirectUri: location.protocol + '//' + location.host + location.pathname });
  }
  canActivate(
    next: ActivatedRouteSnapshot,
    state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
    if (!environment.production)
      return true;

    this.Callback();
    if (!this.adal5Service.userInfo.authenticated) {
      this.LogIn();
      //this.router.navigate(['error/401']);
      return false;
    } else {
      return true;
    }
  }

  Callback() {
    this.adal5Service.handleWindowCallback();
  }

  LogIn() {
    this.adal5Service.login();
  }
}

Как видно из кода. Мы полагаем, что это является причиной ошибки в цикле

if (!this.adal5Service.userInfo.authenticated) {
  this.LogIn();
  ...
}

Если пользователь не аутентифицирован, он / она будет входить в систему, что является правильным, но что, если пользователь не авторизован? Он / она вернется на страницу входа, поэтому это вызывает цикл.

Это отображение ошибки, которая зацикливается в URL:

https://oursite.net/#error=access_denied&error_description=AADSTS50105%3a+The+signed+in+user+is+not+assigned+to+a+role+for+the+application+%numbers-numbersthatwedontknowbut-I-think-is-confidential

...