使用URL重定向传递信息

时间:2018-04-13 13:34:01

标签: spring-boot saml ping

我们正在开发一个现有的应用程序,其中Web服务(tomcat)以及UI(nginx)应用程序托管在不同的容器上。其中一个服务应用程序用于向身份提供者(ping)发送登录请求(SAML请求)。以下是用户登录系统的步骤:

  • 用户加载应用程序(域URL:https://ui.domain.com),它加载用于检查登录用户的UI(本地存储上为用户/角色生成的JWT令牌字符串),如果未找到,则重定向到ping(IDP)进行身份验证。
  • 使用ping进行身份验证后,它会调用为服务应用程序(https://api.domain.com/auth-service/auth)上的成功URL配置的spring控制器。
  • 此控制器服务(/ auth)获取ping发送的SAML响应并进一步处理以获取用户详细信息并为用户生成JWT令牌并将用户重定向到UI(https://ui.domain.com)。

问题陈述:

要将令牌传递给UI,请使用将JWT令牌字符串添加到URL    redirectAttributes.addAttribute(“auth-token”, token);

通过上述内容,它会显示在地址栏中,如:https://ui.domain.com/?auth-token=

这引起了对安全性的担忧,因为令牌显示在地址栏上并暴露出来,可以对其进行解码以获取用户信息。

当前方法(已尝试):

  • 在从控制器重定向到UI之前,尝试设置cookie

    Cookie cookie = new Cookie(“auth-token”, token);
    cookie.setMaxAge(-1);
    cookie.setPath(“https://ui.domain.com”);
    response.addCookie(cookie);
    

但是我们无法从UI中找到cookie。

  • 我们也尝试将其设置为响应标头。

    response.addHeader(“auth-token”, token);

由于它是重定向,因此添加到响应没有帮助。

进一步的试验:

我们还考虑改变身份验证控制的方法,在ping身份验证完成后,成功URL可以用UI url而不是服务URL替换,即

目前:saml.sso.default-success-url= https://api.domain.com/auth-service/auth

建议:saml.sso.default-success-url= https://ui.domain.com/

通过上述内容,SAML响应应该直接进入UI(ping身份验证成功后)。

然而,我们无法在UI中获得响应,并且它的行为类似于ping正在重定向到UI,并且由于同样的原因,UI无法获得它。

对此的任何想法和建议都会很棒。

0 个答案:

没有答案