ADAL5 URL中的Angular,循环错误,而不是在用户不是AUTHORIZE时显示UI(AADSTS50105)

时间:2018-05-09 02:38:05

标签: typescript authentication authorization azure-active-directory angular5

我目前正在使用adal-angular5Adal5Service作为安全身份验证。条件访问当前在用户未授权时有效,但错误在URL中显示为循环,而不是以UI的形式。我们已经为ERROR页面创建了一个UI,但是我们不知道在哪里将条件放在用户未授权的位置,用户将转到ERROR页面而不是循环错误。条件访问是通过Azure Active Directory端的组分配完成的,因此我们不知道我们将如何以及将使用哪些代码/条件。

这是我的身份验证代码。我们正在使用adal.guard.ts(typescript)

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

0 个答案:

没有答案