如何跨子域进行身份验证

Jes*_*nds 5 authentication cross-domain go

我正在开发一个 web 应用程序,它实际上由两个应用程序组成。一个应用程序被调用account并处理与用户帐户相关的所有事情,例如帐户的身份验证、注册和管理。我还有一个应用程序,我们将调用web.

事情是使用 SSL/TLSaccounthttps://account.domain.com上侦听,而 web 在http://www.domain.com 上侦听。

哪些选项我有一个让人们登录和验证account.domain.com,然后将其重定向到www.domain.com哪里他们实际上然后登录。据我所知,你不能设置上的cookie account.domain.com,然后有它的工作domain.com,因为这将成为安全隐患。

关于我的应用程序的一些背景细节:

  1. 用 Go 编程语言编写。

  2. 将 Gorilla Toolkit 用于大多数 HTTP/HTTPS 接口、URL 路由和处理 POST/GET 参数。

  3. 两个应用程序都位于同一个虚拟服务器上。

我正在寻找的是一种安全的方式来验证和管理跨所有子域和实际域的会话domain.com。我不是特别精通这个主题,所以除了设置 cookie 之外,我知道的不多。

One*_*One 6

我对大猩猩不太熟悉,但类似的东西应该有效:

var store = sessions.NewCookieStore([]byte("something-very-secret"))

func init() {
    store.Options = &sessions.Options{
        Domain:   "domain.com", //this
        HttpOnly: true,
    }
}
Run Code Online (Sandbox Code Playgroud)

基本上你只需将cookie的域设置为.domain.com(带有前缀), /sf/answers/74463231/.中有更详细的解释

//编辑

根据@Volker 的说法,不需要这个点(请参阅评论)。

  • 域不需要以点开头:“domain=domain.com”在所有浏览器上的效果与“domain=.domain.com”一样。请参阅广泛采用的 RFC 6265。 (3认同)