欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP单点登录怎么实现?

程序员文章站 2022-04-13 20:17:53
...
PHP单点登录怎么实现?有通用方案吗?

回复内容:

PHP单点登录怎么实现?有通用方案吗?

学微博啊,最简单易实现的单点登录

做一个sso站点,专门负责登录的,这里假设为站点S,业务站点为A B C D,4个业务站点判断是否登录,没有就跳S判断,S如果判断已登录,返回token到A B C D,业务站点再根据token取用户信息,一般都是存mc或redis,奇葩你可以存DB。。。。当然建议S用https

  • 通用方案就是session

  • session说白了就是登录后生成的一串很长的码,如:'232ff23423ceb23123331eefaab312bbc',同时与这个码对应的是用户的登录信息如:用户id什么的。。。

  • 你可以吧登录系统生成的session存在redid或者memcached中,然后个个子系统可以统一到memcached/redis中查询验证session,符合就认为登录、可信

  • 顺便说一下:用安全连接协议如HTTPS,session也需要设一个相对短的过期时间,时间到了去续约,毕竟session劫持挺可怕的,嘿嘿

保存登录信息到cookie/session。
具体实现随意看个框架登录模块。

要看在什么层级,分布式的话session改造就比较麻烦了,token的方式更好

方法一:通过Web Service实现用户身份验证,验证通过后将自动随机生成身份验证票据,并将身份验证票据发送给用户,待用户访问其他应用时,只对身份验证票据进行合法性验证即可。
方法二:通过CAS服务器进行用户身份验证。

 下面是这个身份验证协议中的主要步骤。
 用户尝试使用应用程序的 URL 访问应用程序。用户被重定向到 CAS 登录 URL,采用的是 HTTPS 连接,他请求的服务的名称作为参数传递。这时向用户显示一个用户名/密码对话框。
 用户输入 ID 和密码,CAS 对他进行身份验证。如果身份验证失败,目标应用程序根本不会知道这个用户曾经试图访问它 —— 用户在 CAS 服务器上就被拦住了。
 如果身份验证成功,CAS 就将用户重定向回目标应用程序,并在 URL 中附加一个称为 ticket 的参数。然后,CAS 尝试创建一个称为 ticket-granting cookie 的内存 cookie。这是为了以后进行自动的重新验证;如果存在这个 cookie,就表示这个用户已经成功地登录了,用户就不需要再次输入他的用户名和密码。
 然后,应用程序要检查这个 ticket 是否正确,以及是否代表一个有效用户;检查的方法是,打开一个 HTTPS 连接来调用 CAS servicidate URL,并作为参数传递 ticket 和服务名称。CAS 检查这个 ticket 是否有效,以及是否与请求的服务相关联。如果检查成功,CAS 就将用户名返回给应用程序。

方法三:使用基于开源的单点登录框架...

相关标签: php