gpt4 book ai didi

c# - 使用 2 个子域进行单点登录,一个 Java,一个 .NET

转载 作者:太空狗 更新时间:2023-10-29 20:31:11 24 4
gpt4 key购买 nike

我目前正在为上述问题寻找一个好的解决方案。我们可能会在 .NET 上运行表单例份验证。

我有一个在 a.mydomain.com 上运行的 ASP.NET MVC 应用程序和一个在 b.mydomain.com 上运行的基于 Java 的应用程序。

什么是最好的方法,这样我就不必登录到每个应用程序。比如说,当我登录到 a.mydomain.com 然后打开 Java b.mydomain.com 时,它会检查我是否已经登录?

WCF AuthenticationService 类是否适用于此?我可以从 b.mydomain.com 的 JavaScript 发出 AJAX 请求来检查我是否已经在 .NET 应用程序中登录了吗?

最佳答案

只要 mydomain.com 不在公共(public)后缀列表 ( http://publicsuffix.org/list/ ) 中,a.mydomain.com 就可以为 放置域 cookie .mydomain.com

(注意你只能往下一层放cookie:a.b.mydomain.com不能放.mydomain.com cookie)

cookie 将被发送到 b.mydomain.com(以及 *.mydomain.commydomain.com)并且可以用作打开 session 的 token 。所以一定要控制整个 *.myDomain.com 子域并使其成为 httpOnly 和安全 (https)

Response.SetCookie(new HttpCookie("myCookieName", "myCookieValue") { HttpOnly = true, Domain = ".myDomain.com", Secure=true });

Atlassian Crowd 解决方案的某些部分 http://www.atlassian.com/software/crowd/overview都是基于这种cookie机制

所以你可能会:

  1. 在 a.domain.com 上启用表单例份验证
  2. 成功登录后构建一个 myToken cookie,其值包含 userId 和散列 userId,散列 key 为 a.myDomain.com 和 b.myDomain.com 所知
  3. 设置 cookie 域为 .myDomain.com
  4. 当用户进入 b.myDomain.com 时,检查 cookie 服务器端(在 java 中)以匹配 userId 和散列值
  5. 如果 cookie 正确,则为用户 userId 打开 session

请注意,您将无法访问 cookie 客户端(因此没有 js cookie 处理,除非它是服务器端 js,例如 nodejs)

关于c# - 使用 2 个子域进行单点登录,一个 Java,一个 .NET,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14506613/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com