【问题标题】:How can authentication be shared among multiple (sub-)domains?如何在多个(子)域之间共享身份验证?
【发布时间】:2013-01-04 12:52:12
【问题描述】:
  1. 未经身份验证的用户到达 www.example.com。

  2. 用户登录:https://api.example.com/login

  3. 登录成功后,用户被重定向到:https://dashboard.example.com

  4. 返回到:www.example.com - 会话被保留,用户现在可以从那里注销

Heroku 展示了一个示例,它在应用程序之间共享 cookie,如屏幕截图所示。

此设置如何工作? Rack 应用程序如何模仿这种设置?

【问题讨论】:

    标签: api sinatra oauth-2.0 rack warden


    【解决方案1】:

    使用 SSO/OpenID 风格的技术,例如通过表单重定向并在表单参数中来回传输身份验证质询令牌。

    例如,看看 stackovervflow 和姐妹网站是如何做到的。您可以使用另一个登录,它是通过表单和重定向实现的。

    对于严格的子域,您可以只使用单个会话 cookie,该 cookie 发送到“*.domain.com”内的所有主机

    【讨论】:

    • github.com/josh/rack-openid 这里似乎是 openid 集成的不公平实现。看看它是如何工作的。
    • stackoverflow.com/questions/14137881/… 这可能也有帮助。
    • hmm...看起来Heroku也使用了某种openID,至少注销后的URL中有'nonce';所以也许我可以用这个做点什么:github.com/openid/ruby-openid/blob/master/lib/openid/store/…
    • 可能,反正问题和技术都是一样的,所以你可以用它来研究适合你的解决方案。在这种情况下,api.domain.com 将是 SSO/openid/login 服务器,其余的将使用它进行身份验证。在公司环境中,它还可能保留用户组和访问权限或角色的目录。
    猜你喜欢
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多