Spring 和 Angular 前端中的 Kerberos Spnego + JWT
Kerberos Spnego in Spring and Angular frontend + JWT
我的主要目标是首先进行 Kerberos 身份验证,如果它失败,则有一个 Angular 的表单页面,该页面将 post 和 username/password 发送到 /users/login
.
我在 Spring 中配置了很多 as follow 并且已经进行了 login/password 身份验证,发送回 JWT,前端有守卫。前端在 Spring.
的资源文件夹中提供
Kerberos 似乎不弹出 up/auto 日志。有什么具体要做的吗?
Kerberos 登录后创建过滤器是否是在前端处理身份验证的正确方法?
因为我的 Spnego 配置使用 SpnegoEntryPoint("/#/login")
and/or Spring 安全性使用 .formLogin().loginPage("/#/login").permitAll()
并且因为 Spnego 使用 Forward 而不是 Redirect,他找不到页面服务器端并抛出 404 而不是 401。
401 是触发 Kerberos 身份验证以及 header WWW-Authorization: Negotiate
的原因。因此,由于它抛出 404,它从未启动 Kerberos 身份验证。
因此,我将 /#/login
都更改为 /index.html
(/
可能会起作用)。
然后,Angular 端(在 app.component.ts
中),我在安全端点 /connect
上触发了一个 API 调用,我的 CustomAuthenticationSuccessHandler.java
注册到我的过滤器只需在 header Authorization : Bearer
中用 JWT 令牌装饰 header
UserDetails authUser = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
httpServletResponse.addHeader(SecurityConstants.HEADER_STRING,
SecurityConstants.TOKEN_PREFIX + TokenUtil.generateToken(authUser));
然后我简单地获取 header,将其存储在 LocalStorage 中,将用户重定向到该页面。
我的主要目标是首先进行 Kerberos 身份验证,如果它失败,则有一个 Angular 的表单页面,该页面将 post 和 username/password 发送到 /users/login
.
我在 Spring 中配置了很多 as follow 并且已经进行了 login/password 身份验证,发送回 JWT,前端有守卫。前端在 Spring.
的资源文件夹中提供Kerberos 似乎不弹出 up/auto 日志。有什么具体要做的吗?
Kerberos 登录后创建过滤器是否是在前端处理身份验证的正确方法?
因为我的 Spnego 配置使用 SpnegoEntryPoint("/#/login")
and/or Spring 安全性使用 .formLogin().loginPage("/#/login").permitAll()
并且因为 Spnego 使用 Forward 而不是 Redirect,他找不到页面服务器端并抛出 404 而不是 401。
401 是触发 Kerberos 身份验证以及 header WWW-Authorization: Negotiate
的原因。因此,由于它抛出 404,它从未启动 Kerberos 身份验证。
因此,我将 /#/login
都更改为 /index.html
(/
可能会起作用)。
然后,Angular 端(在 app.component.ts
中),我在安全端点 /connect
上触发了一个 API 调用,我的 CustomAuthenticationSuccessHandler.java
注册到我的过滤器只需在 header Authorization : Bearer
UserDetails authUser = (UserDetails) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
httpServletResponse.addHeader(SecurityConstants.HEADER_STRING,
SecurityConstants.TOKEN_PREFIX + TokenUtil.generateToken(authUser));
然后我简单地获取 header,将其存储在 LocalStorage 中,将用户重定向到该页面。