zoukankan      html  css  js  c++  java
  • 站点跨域登录

    跨子域登录

    所谓跨子域登录,比如A 站点为a.jmsys.com, B 站点为b.jmsys.com,认证中心站点 C为 c.jmsys.com。从三个站点的关系可以看出,他们都属于同一个二级域 jmsys.com,不同的是子域不同,一个为a,一个为b,一个是c. 他们统一的平台域名为 www.jmsys.com

    Cookie 本身是不能跨域的,即 A, B 站点读不到C 站点写的 cookie 信息,解决办法很简单,将 cookie 的 domain 属性设置为二级域 即Cookie. domain=".jmsys.com",那么 C 写的 cookie 信息 A, B都能读到。当认证中心产生Cookie时,以 Cookie 的方式存于浏览器端,A,B都能通过 Cookie 得到票据,可简单实现单点登录机制。

    跨异域登录

    所谓异域登录是指A,B站点和C站点没有共同的父域,比如A站点为a.jmsys1.com,B站点为b.jmsys2.com,由于这种情况票据较复杂,这里暂时把C站点(c.jmsys3.com)创建的ticket叫做C-ticket,而A站点创建的叫A-ticket,B的为B-ticket. 这种情况每个站点都要有创建 Cookie 的能力,其实就是 C-ticket 的复制,当然也有其他的方式达到这种效果

    由于A 站点(a.jmsys1.com)不能读取到由C站点(c.jmsys3.com)创建的Cookie,所以当用户访问A站点时,首先查看是否有A-ticket,如果没有,证明用户没有在A站点登录过,不过并不保证用户没有在B站点登录,请求被重定向到C 站点,C读取C-ticket,如果没有,就需要重定向登录页面,登录页面完成登录后,写一个加密cookie,也就是C-ticket,并且重定向到A站点,并把C-ticket作为参数传递过去,A 站点也要写一个cookie,也就是A-ticket,今后用户再次访问A站点时,只需要检查这个A-ticket 是否存即可。当用户访问B站点时,会重复上述过程。注销时需要删除C-ticket 。只要 C-ticket 在认证中心清除了,用户访问任何一个站点都需要重新登录。

  • 相关阅读:
    详解Office Add-in 清单文件
    在dotnet core web api中支持CORS(跨域访问)
    Office 365 机器人(Bot)开发入门
    人工智能背景下的Office 365现状和发展趋势
    观未见,行不止 —— Power BI 两周年技术和方案交流圆桌会议纪实
    基于Office 365的随需应变业务应用平台
    实战Excel Add-in的三种玩法
    Office Add-in 设计规范与最佳实践
    在Visual Studio Code中开发Office Add-in
    在Visual Studio 中开发Office Add-in
  • 原文地址:https://www.cnblogs.com/phpfans/p/2111976.html
Copyright © 2011-2022 走看看