我有一个在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应用程序中登录了吗?
解决方法
(请注意,在放置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)
原文地址:https://www.jb51.cc/csharp/99559.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。