单点登录 - 在每个请求上检查身份验证服务器

时间:2013-09-30 12:43:22

标签: curl single-sign-on

我正在研究SSO机制。我已经设置了它并创建了一个带登录屏幕的认证服务器。 SSO应该像这样工作(并且到目前为止它已经在工作):

  1. 访问客户端应用程序且用户未登录时,重定向到SSO Auth领域
  2. 当用户未登录时,
  3. 在SSO Auth领域上显示登录屏幕
  4. 登录后创建会话变量(或当用户已登录时 - 存在会话变量)并使用存储在会话中的令牌重定向
  5. 返回客户端应用时,获取令牌,将其存储到会话中,并通过cURL
  6. 从SSO身份验证领域请求user_id
  7. 在客户端应用和用户登录时,在每个请求上重复点4.以确保用户仍然登录并在服务器响应错误响应时在客户端上执行注销
  8. 前3个点工作得很好但是我遇到了第4点(和5,ofc。)的问题,因为似乎当cURL请求SSO Auth领域时,会话在那里不存在(或者创建一个新的cURL请求)。

    因此我想问:

    1. 如何让SSO Auth领域应用程序访问现有会话并将cURL响应中的信息返回给客户端应用程序?
    2. 或者,检查这项检查的更好方法是什么?
    3. 一些不明显的信息:

      • 所有客户端应用程序和SSO Auth领域应用程序都有自己的会话
      • 进行检查的原因是检查用户是否未在不同的客户端应用程序注销(会话未在SSO Auth领域过期) - 如果是,我们必须在当前注销时注销以及
      • by SSO Auth realm我只是指负责登录用户的应用程序
      • user_id无法在登录后直接使用令牌转移,因为这将是一个巨大的安全漏洞 - 我可以让自己以任何可能的用户身份登录,只需打开包含一些随机的URL的客户端应用程序令牌和现有用户ID ......

      编辑:目前我已使用SSO Auth领域的PHPSESSID作为令牌解决了该问题。这样我就可以使用cURL设置cookie PHPSESSID=TOKEN并且请求现在可以访问现有会话,但是我不喜欢使用域的PHPSESSID作为可以在URL重定向中看到的令牌的想法...任何人知道更好的解决方案吗?

0 个答案:

没有答案