为单点登录创建跨域cookie

时间:2017-10-20 16:55:45

标签: spring jsp spring-mvc cookies

我想从我的网站(假设它作为a.com)到供应商网站(假设它作为b.com)实施单点登录

我的供应商提供的服务将用户ID作为输入,并在响应标头中返回令牌和Cookie。我需要调用此服务并使用会话令牌通过发布请求和设置cookie(从服务响应中收到)重定向​​到供应商URL。

在我的代码中进行服务调用后,我将URL和令牌返回到httpservletresponse中的jsp和cookie。这个jsp中的Javascript将在页面加载时自动提交表单以进行发布调用。但是当它被重定向时,浏览器没有在请求标题中设置b.com cookie。

控制器代码:

@RequestMapping(value = "/sso", method = RequestMethod.GET)
public String ssoToVendor(final Model model, final HttpServletResponse response) {
   /**
    *Service call happens here and returns tok
    */
    model.addAttribute("url","https:\\b.com");
    model.addAttribute("tok",tok);
    for (String cookie : cookies) {
        response.addHeader("Set-Cookie", cookie);
    }

    return "dummyjsp"
}

JSP示例代码:

    <body>
  <form id="redirect" action="${url}" name="redirect" method="POST">
     <input type="hidden" name="tok" id="tok" value="${tok}"/> 
  </form>
</body>
<script type="text/javascript">
var redirect  = document.getElementById("redirect");
redirect.submit();

</script>

我知道不可能设置跨域cookie,但是有一些如何在c#中实现的另一个应用程序能够设置这些cookie。

我们是否可以在响应标头中设置b.com cookie,这是由浏览器创建的,并在从java中的a.com重定向时发送到b.com。

0 个答案:

没有答案