关于身份验证:跨多个域的单点登录

关于身份验证:跨多个域的单点登录

Single Sign On across multiple domains

我们公司拥有多个域,每个域上都托管有一个网站。 目前,每个域都有自己的身份验证,该身份验证通过Cookie进行。

当登录到一个域的某个人需要访问另一个域的任何内容时,用户需要使用位于另一个域上的另一个网站上的不同凭据再次登录。

我当时正在考虑朝单一登录(SSO)迈进,以便消除这种麻烦。 我不知道如何实现此目标的任何想法,因为我在这方面没有任何经验。

谢谢。

编辑:
这些网站是Internet(外部)和Intranet(公司内部使用)站点的组合。


我在这里实现的SSO解决方案的工作方式如下:

  • 有一个主域login.mydomain.com,其脚本master_login.php用于管理登录。
  • 每个客户端域都有脚本client_login.php
  • 所有域都有一个共享的用户会话数据库。
  • 当客户端域要求用户登录时,它将重定向到主域(login.mydomain.com/master_login.php)。如果用户尚未登录到主服务器,它将请求用户进行身份验证(即,显示登录页面)。用户通过身份验证后,它将在数据库中创建一个会话。如果用户已经通过身份验证,它将在数据库中查找其会话ID。
  • 主域通过会话ID返回到客户端域(client.mydomain.com/client_login.php)。
  • 客户端域创建一个cookie,该cookie存储来自主服务器的会话ID。客户端可以通过使用会话ID查询共享数据库来找到登录的用户。
  • 笔记:

    • 会话ID是使用RFC 4122的算法生成的唯一全局标识符
    • master_login.php将仅重定向到其白名单中的域
    • 主服务器和客户端可以位于不同的顶级域中。例如。 client1.abc.com,client2.xyz.com,login.mydomain.com

    不要重新发明轮子。有许多开源的跨域SSO软件包,例如JOSSO,OpenSSO,CAS,Shibboleth等。如果整个都在使用Microsoft Technology(IIS,AD),则可以使用Microsoft联合身份验证(ADFS)。


    主机名有何不同?

    这些主机可以共享Cookie:

    • mail.xyz.com
    • www.xyz.com
    • logon.xyz.com

    但是这些不能:

    • abc.com
    • xyz.com
    • www.tre.com

    在前一种情况下,您可以使用基于cookie的解决方案。考虑一下GUID和数据库会话表。


    如果使用Active Directory,则可以使每个应用程序都使用AD进行身份验证,然后登录就可以无缝进行了。

    否则,如果应用程序可以在后台相互交谈,则可以使用sessionid,并让一个应用程序处理id生成,从而为所有其他应用程序提供服务。


    推荐阅读

      登录账户命令linux?

      登录账户命令linux?,系统,管理,信息,工作,工具,名称,服务,网络,密码,命令,lin

      ssh命令登录linux?

      ssh命令登录linux?,服务,系统,地址,软件,状态,网络,命令,计算机,终端,服务器

      db2登录命令linux?

      db2登录命令linux?,环境,服务,系统,管理,工作,网站,软件,一致,平台,信息,linu

      linux根用户登录命令?

      linux根用户登录命令?,系统,密码,软件,状态,地址,合法,电脑,位置,检测,工具,L

      linux命令行登陆网站?

      linux命令行登陆网站?,网站,系统,密码,服务,地址,环境,网络,软件,状态,项目,

      linux看登录密码命令?

      linux看登录密码命令?,密码,系统,信息,地址,命令,用户,位置,设计,电脑,用户

      linux登陆网站命令?

      linux登陆网站命令?,网络,工具,网站,标准,地址,软件,系统,命令,数据,环境,lin

      金仓linux命令登录?

      金仓linux命令登录?,系统,服务,地址,密码,工作,名称,工具,网络,信息,命令,远

      linux命令打开网站?

      linux命令打开网站?,网络,网站,系统,地址,密码,传播,工具,代码,环境,命令,大

      linux命令行登录邮箱?

      linux命令行登录邮箱?,地址,代码,邮箱,工作,系统,标准,情况,单位,检测,数据,l

      linux域名登录命令?

      linux域名登录命令?,地址,系统,服务,名称,信息,软件,环境,网站,工具,通信,lin

      linux命令行登录网站?

      linux命令行登录网站?,系统,网站,地址,工作,软件,密码,网络,第一,环境,中心,

      linux命令查询网站?

      linux命令查询网站?,地址,网络,信息,名称,档案,工具,网站,命令,传播,分析,lin

      用linux登录电脑命令?

      用linux登录电脑命令?,系统,密码,电脑,地址,状态,网络,服务,单位,管理,合法,l

      linux退出登录的命令?

      linux退出登录的命令?,系统,密码,用户,命令,地址,状态,环境,工作,设备,操作,L

      linux登录数据库命令?

      linux登录数据库命令?,地址,系统,名字,服务,软件,标准,灵活,命令,数据库,读

      linux批量登录命令?

      linux批量登录命令?,系统,地址,工作,密码,标准,命令,数据,单位,管理,软件,怎

      远程登录linux命令?

      远程登录linux命令?,系统,服务,地址,软件,电脑,名称,数字,实时,网络,密码,如

      linux下备份网站命令?

      linux下备份网站命令?,工程,系统,软件,设备,服务,网站,管理,数据,环境,设计,

      linux命令行登录网页?

      linux命令行登录网页?,密码,网站,发行,环境,软件,网络,工具,传播,状态,情况,l