加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 单点登录,有2个子域,一个Java,一个.NET

发布时间:2020-12-15 07:47:40 所属栏目:百科 来源:网络整理
导读:我正在寻找上述问题的一个很好的解决方案.我们可能会在.NET上运行表单身份验证. 我有一个在a.mydomain.com上运行的ASP.NET MVC应用程序和一个在b.mydomain.com上运行的基于Java的应用程序. 什么是最好的方法,这样我就不必登录每个应用程序.比如,当我登录a.my
我正在寻找上述问题的一个很好的解决方案.我们可能会在.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不在公共后缀列表( http://publicsuffix.org/list/)中,a.mydomain.com就可以为.mydomain.com提供域cookie.

(请注意,在放置cookie时只能降低一级:a.b.mydomain.com不能放置.mydomain.com cookie)

该cookie将被发送到b.mydomain.com(以及* .mydomain.com和mydomain.com),并可用作令牌来打开会话.因此,请务必控制整个* .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机制

所以你可能会:

>在a.domain.com上启用表单身份验证
>成功登录后,构建一个myToken cookie,其中包含userId和散列的userId,其中包含a.myDomain.com和b.myDomain.com已知的散列密钥
>使用域.myDomain.com设置cookie
>当用户输入b.myDomain.com时,检查cookie服务器端(在java中)是否匹配userId和散列值
>如果cookie正确,请打开用户userId的会话

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读