处理认证错误以作出响应

时间:2017-08-11 10:08:38

标签: angular rest authentication kerberos http-authentication

从Angular 4应用程序,我调用Tomcat上部署的REST服务。对于身份验证,我使用的是Kerberos,它正如预期的那样正面工作。

当Kerberos身份验证失败时,我在处理Angular中的错误时遇到了问题(假设用户在AD中不存在)。

这是我的角色代码

this.restService.executeGET(url)
      .subscribe(
      (response: Response) => {
        let httpResponseStatus = response.status;
        console.log('httpResponseStatus: '+httpResponseStatus+', httpResponseAuthHeader: '+httpResponseAuthHeader)
        //Do something with the Response
      }
      ,
      (error) => {
        //Do something with the Error
        console.log('Authenication Failed' + error); 

      }
      )

 executeGET(url: string) {
    let reqHeaders = new Headers({ 'Content-Type': 'application/json' });
    reqHeaders.append('Accept', 'application/json');
    return this.http.get(url, { headers: reqHeaders });  
  }   

当身份验证成功并且服务器返回200时,'(响应:响应)=> {}'按预期执行。当响应是具有WWW-Authenticate:Negotiate标头的401代码时,“响应”块和“错误”块都不会被执行,并且浏览器显示“页面无法显示”消息。

当我查看IE 11网络选项卡时,它显示响应已返回为401 / Negotiate但由于某种原因它正在回避角度代码。

Response Header 1

Response Header 2

即使在Angular代码有机会加载之前,浏览器似乎仍显示“无法显示页面”消息。

即使身份验证失败,我如何确保执行某些代码块,以便我可以采取适当的操作,例如将用户重定向到登录页面。

0 个答案:

没有答案