asp.net – 混合Windows / Forms身份验证跨站点
我在ASP.net中编写了两个面向互联网的站点:example.com和site1.example.com
每个部署在不同地理位置的自己的服务器上. site1.example.com >托管第三方应用程序 example.com >我可以更改的所有自定义代码 需要做的是 >用户登录example.com 我创建了这个hack以使其工作: >将加密的凭据附加到site1.example.com登录URL >解密登录凭据 最终发生的是site1.example.com必须加载两次才能获得资源(一次显示登录页面,一次在页面提交后),这可能需要一些时间. 有没有办法让example.com在一个请求中在后台使用site1.example.com进行身份验证(与我现在正在做的两个请求相关)? Impersonate Identity在site1.example.com方面似乎很有希望,但如果我从视图中运行它,它的代码实现是否有效? Federated Identity似乎是关键,但它是非常压倒性的.我可以在不修改二进制文件的情况下实现它(示例)吗?它是否适用于窗体和窗口身份验证的混合,或者它是否允许Windows用户跨不同的Windows域进行链接. 解决方法
您可以在example.com中创建一个在site1.example.com中有效的表单身份验证票证(在cookie中).如果为根域创建cookie,则每个子域都可以读取cookie.
必须将cookie设置为根域,并且两个应用程序必须共享cookie名称,cookie路径和登记密钥. 在example.com中,当用户通过身份验证时: web.config中: <machineKey validation="AES" validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE" decryption="AES" decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F"/> //key to encrypt auth ticket 在codebehind中: Dim sTicketEncriptado As String Dim authTicket As New FormsAuthenticationTicket(1,userName,Date.Now,Date.Now.AddMinutes(timeOut),True,"") encriptedTicket = FormsAuthentication.Encrypt(authTicket) Dim authcookie As New HttpCookie("authCookieForSite1",encriptedTicket ) authcookie.HttpOnly = True authcookie.Domain = example.com" //root domain,every subdomain can read this cookie authcookie.Path = "/" Response.Cookies.Add(authcookie) 在site1.example.com中,只需构建配置以读取身份验证cookie: <machineKey validation="AES" validationKey="C50B3C89CB21F4F1422FF158A5B42D0E8DB8CB5CDA1742572A487D9401E3400267682B202B746511891C1BAF47F8D25C07F6C39A104696DB51F17C529AD3CABE" decryption="AES" decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F"/> //key to decrypt auth tichet. Same machine keys that in example.com <forms protection="All" path="/" domain="example.com" timeout="1439" enableCrossAppRedirects="true" cookieless="UseCookies" slidingExpiration="true" loginUrl="example.com" name="authCookieForSite1" defaultUrl="site1.example.com/default.aspx"/> //no login urt,go to example.com if no cookie is present 我是这样做的.对不起,如果你遇到错误,但我相信你会明白的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-3 – 比较(密码)属性
- 如何从命令行自动“运行asp.net网站”?
- asp.net-mvc – 如何使用MVCSiteMap进行隐式本??地化?
- asp.net – 使用xml数据合并/填充pdf表单文件
- asp.net-mvc – MVC 3 RC中的Razor Helper
- ASP.NET MVC 3远程验证
- asp.net – 如何将http请求转发到https网址
- asp.net – 图像文件正由另一个进程使用
- 关于Expression Tree和IL Emit的所谓的"性能差别"
- entity-framework – 在Junction表上使用EF Core ThenInclu
- telerik – ASP.NET MVC2富文本编辑器
- 在asp.net C#中读取表单变量的问题
- asp.net-core – 安装特定版本的dnx
- asp.net-mvc – asp.net mvc的Paperclip
- asp.net – 使用Typescript时Visual Studio 2015
- asp.net应用程序的最终用户是否需要安装.net
- asp.net-mvc – ASP.NET MVC向最终用户显示操作成
- asp.net-mvc-3 – 在ASP.NET-MVC3中缓存数据有什
- asp.net – 文件上传控件HasFile始终为false,nam
- asp.net-mvc-3 – 在Razor中加入文本变量