我们正在开发一个现有的应用程序,其中Web服务(tomcat)以及UI(nginx)应用程序托管在不同的容器上。其中一个服务应用程序用于向身份提供者(ping)发送登录请求(SAML请求)。以下是用户登录系统的步骤:
问题陈述:
要将令牌传递给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无法获得它。
对此的任何想法和建议都会很棒。