Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular Kerberos Spnego在弹簧和角度前端+;JWT_Angular_Spring_Kerberos_Spnego - Fatal编程技术网

Angular Kerberos Spnego在弹簧和角度前端+;JWT

Angular Kerberos Spnego在弹簧和角度前端+;JWT,angular,spring,kerberos,spnego,Angular,Spring,Kerberos,Spnego,我的主要目标是首先进行Kerberos身份验证,如果失败,则使用Angular的表单页面向/users/login发送带有用户名/密码的帖子 我已经在Spring中进行了相当多的配置,并且已经进行了一次登录/密码验证,该验证将返回一个JWT,前端有防护装置。前端服务于Spring的resources文件夹中 Kerberos似乎没有弹出/自动记录。有什么特别的事情要做吗 Kerberos登录后创建筛选器是在前端处理身份验证的正确方法吗?因为我的Spnego配置使用的是SpnegoEntryPoi

我的主要目标是首先进行Kerberos身份验证,如果失败,则使用Angular的表单页面向
/users/login
发送带有用户名/密码的帖子

我已经在Spring中进行了相当多的配置,并且已经进行了一次登录/密码验证,该验证将返回一个JWT,前端有防护装置。前端服务于Spring的resources文件夹中

Kerberos似乎没有弹出/自动记录。有什么特别的事情要做吗


Kerberos登录后创建筛选器是在前端处理身份验证的正确方法吗?

因为我的Spnego配置使用的是
SpnegoEntryPoint(“/#/login”)
和/或Spring安全性使用的是
.formLogin().loginPage(“/#/login”).permitAll()
而且由于Spnego使用了转发而不是重定向,因此他找不到页面服务器端,抛出了404而不是401

401是触发Kerberos身份验证以及标头
WWW Authorization:Negotiate
。因此,由于它抛出了404,它从未启动Kerberos身份验证

因此,我将
/#/login
更改为
/index.html
/
可能会起作用)

然后,在Angular端(在
app.component.ts
中),我在安全端点
/connect
和我的
CustomAuthenticationSuccessHandler.java
上触发一个API调用,注册到我的过滤器中,只需在头
Authorization:Bearer

UserDetails authUser = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
httpServletResponse.addHeader(SecurityConstants.HEADER_STRING,
                SecurityConstants.TOKEN_PREFIX + TokenUtil.generateToken(authUser));

然后,我只需获取标题,将其存储在LocalStorage中,将用户重定向到页面。

因为我的Spnego配置使用的是
SpnegoEntryPoint(“/#/login”)
和/或Spring安全性使用的是
.formLogin().loginPage(“/#/login”).permitAll()
而且由于Spnego使用了转发而不是重定向,因此他找不到页面服务器端,抛出了404而不是401

401是触发Kerberos身份验证以及标头
WWW Authorization:Negotiate
。因此,由于它抛出了404,它从未启动Kerberos身份验证

因此,我将
/#/login
更改为
/index.html
/
可能会起作用)

然后,在Angular端(在
app.component.ts
中),我在安全端点
/connect
和我的
CustomAuthenticationSuccessHandler.java
上触发一个API调用,注册到我的过滤器中,只需在头
Authorization:Bearer

UserDetails authUser = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
httpServletResponse.addHeader(SecurityConstants.HEADER_STRING,
                SecurityConstants.TOKEN_PREFIX + TokenUtil.generateToken(authUser));
然后,我只需获取标题,将其存储在LocalStorage中,将用户重定向到页面