首頁 >後端開發 >php教程 >PHP单点登录怎么实现?

PHP单点登录怎么实现?

WBOY
WBOY原創
2016-06-06 20:21:021481瀏覽

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服务器进行用户身份验证。

<code> 下面是这个身份验证协议中的主要步骤。
 用户尝试使用应用程序的 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 就将用户名返回给应用程序。</code>

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn