`
pcajax
  • 浏览: 2184168 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

ASP.NET Forms验证 实现子域名(SubDomain)共享登陆下的缺陷 [转]

阅读更多
 

一、什么是单点登录
   单点登录就是在多个web应用程序中,实现统一登录方式,一但登录了某web应用程序,其它相关联的web应用程

序都无需再次登录,一个地方退出,所有相关联的web应用程序都退出.

 

二、通过利用ASP.NET Forms验证模式 可以实现子域名(SubDomain)共享登陆下的缺陷


要利用Asp.NET Form验证模式实现 同一主域下不同子域名共享登陆状态需要进行以下配置


配置Web.config

 

1.把Asp.net的认证模式改为Forms认证模式,domain 要等于你的应用程序对应的域名,例如: .test.cn


    <authentication mode="Forms">
      <forms name=".ASPNETFORM"  domain=".test.cn" loginUrl="/login.aspx" defaultUrl="/default.aspx"

protection="All" timeout="30" path="/" requireSSL="false" slidingExpiration="true"

enableCrossAppRedirects="false" cookieless="UseDeviceProfile" />
    </authentication>


   
2.配置针对存储在cookie中的票据信息进行加密解密的方式

 

<machineKey

validationKey="CF10047DB84FBA7F418BF30F9697B1D6EDDA3A90837F3C57B336B4016E47986135B31B2432F7CB20A6858DFFB

E4E5ECD1451E17C91830993445D0EA5708BABBD" decryptionKey="5D37DDB652B86956" validation="SHA1"/>

备注:生成machineKey网址
    http://www.aspnetresources.com/tools/keycreator.aspx


登陆创建验证票据

1.应用程序登陆页面(Login.aspx)输入用户名、密码并验证通过后,创建一张加密过的验证票据,并存储在cookie中


            //创建验证票
            FormsAuthenticationTicket ticket
                = new FormsAuthenticationTicket(1, name, DateTime.Now,
                    DateTime.Now.AddDays(1d), false,
                    HttpContext.Current.Request.UserHostAddress
                    );
            string authTicket = FormsAuthentication.Encrypt(ticket);
            HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, authTicket);
            cookie.Domain = ConfigurationManager.AppSettings["SSODomain"];
            HttpContext.Current.Response.Cookies.Add(cookie);


2.登陆完毕后进入有权限的页面,并可得到验证通过后的ID User.Identity.Name;

 

            if (!User.Identity.IsAuthenticated)
            {
                //未登录
                Response.Redirect("/login.aspx");
            }
            string name = User.Identity.Name;

 

3.登出页面,清空用户信息,并销毁票据

            HttpContext.Current.Session.Clear();
            FormsAuthentication.SignOut();


三、Forms验证 实现子域名(SubDomain)共享登陆下的缺陷

    根据以上讲解,均可实现同一主域名下的多个子域名共享登陆状态,但是主域名有所限制,当主域名为1个字母,而后缀为2个字母的域名,不能通过认证,例如:a.cn域名,a.jp域名 均不能实现子域名共享登陆,而其他域名均能实现,例如:a.test.com, a.sina.cn 等,大家亦可通过修改hosts文件试验一下,如有高手知道怎么解决这个问题的,请指教,谢谢!!并附上 Demo程序 ,请大家指教!

PS:因本人公司的域名为p.cn,想通过Form认证的模式实现子域名共享登陆状态,但是死活用不上!~~!!汗,不知道这个算不算微软的Bug。


 

分享到:
评论

相关推荐

    ASP.NET Forms验证 实现子域名(SubDomain)共享登陆下的缺陷

    二、通过利用ASP.NET Forms验证模式 可以实现子域名(SubDomain)共享登陆下的缺陷 要利用Asp.NET Form验证模式实现 同一主域下不同子域名共享登陆状态需要进行以下配置 配置Web.config 1.把Asp.net的认证模式...

    asp.net 开发二级域名源代码

    在ASP.NET中,二级域名的实现通常涉及到URL重写技术,这有助于提高网站的SEO优化和用户体验。本项目源代码是基于ASP.NET平台,利用微软的URLRewriter库来创建二级域名的功能。 URLRewriter库是一个强大的工具,它...

    ASP.NET MVC 使用二级域名来注册Area区域

    标题提到的“ASP.NET MVC 使用二级域名来注册Area区域”是将二级域名与Area绑定,从而实现多站点或多租户的解决方案。 二级域名通常用于创建独立的入口点,以区分不同的服务或用户群体。例如,`blog.example.com` ...

    10000个常见的子域名 subdomain

    www mail ftp localhost webmail smtp pop ns1 webdisk ns2 cpanel whm autodiscover autoconfig m imap test ns blog pop3 dev www2 admin forum news ns3 mail2 new mysql old lists ...intranet等

    c#中实现二级域名完整示例

    为了在C#中实现二级域名,我们可以使用ASP.NET框架,特别是ASP.NET MVC或ASP.NET Core。以下是一些关键步骤: 1. **配置IIS**:首先,确保你的IIS服务器已经配置了泛域名通配符,这允许任意二级域名指向同一个应用...

    用ASP实现二级域名.rar

    在互联网世界中,二级域名是主域名下的一个子域名,常用于分类或区分不同的服务、产品或区域。例如,假设我们的主域名是example.com,二级域名可以是blog.example.com或shop.example.com。这篇教程主要围绕如何使用...

    HttpModule二级域名 C#.Net实例代码

    HttpModule允许开发者在HTTP请求到达ASP.NET应用程序之前或之后插入自定义逻辑,这为实现诸如身份验证、日志记录、缓存管理等核心功能提供了便利。在本实例中,我们关注的是如何使用HttpModule处理二级域名的路由和...

    subdomain3-master

    【subdomain3-master】是一个基于Python的子域名扫描工具,其特点是速度快、字典全面,同时对硬件资源的需求较低,适合进行大规模的子域名发现。该工具由GitHub用户yanxiu0614开发,他的个人仓库地址为...

    ASP二级域名解析范例

    ASP二级域名解析范例是一个关于如何利用服务器配置和ASP编程技术来实现用户申请并自动解析二级域名的主题。在互联网上,二级域名常用于为不同功能或子网站提供独特的URL,例如,blog.example.com和store.example.com...

    第二节 收集子域名信息-01

    在防御措施严密的情况下,无法直接拿下主域,那么攻击者可以采用迂回战术拿下子域名,然后逐步靠近主域。 其次,子域名可以作为攻击者的跳板。攻击者可以通过控制子域名来攻击主域,从而达到攻击的目的。 最后,子...

    建站平台subdomain思路

    ### 建站平台子域名(subdomain)设计思路详解 #### 一、背景与目标 在当前电商领域,为了提供更为个性化和定制化的服务,许多建站平台支持用户(如商家)快速创建自己的在线店铺。这些店铺往往拥有独立的品牌形象,...

    查询子域名的小方法

    - 在得到初步查询结果之后,可以进一步分析同IP下的其他站点信息,这有助于发现更多潜在的目标站点或子域名。 #### 三、总结 通过对以上方法的学习和实践,我们可以有效地查询并收集目标网站的子域名信息。这些...

    Laravel开发-laravel-subdomain-localization

    在Laravel框架中,子域本地化是一种高级的特性,它允许你根据用户访问的子域名来提供不同的语言环境或特定区域的内容。这种技术在构建多语言网站时非常有用,可以为用户提供更加个性化的体验。下面我们将深入探讨...

    前渗透信息探测工具集-子域名.zip

    前渗透信息探测工具集-子域名0x00 简介尽可能花更少的时间,使用All in one工具收集更多的信息-子域名0x01导致之所以选择在已经有很多工具情况下再造轮子,是因为平时收集子域名这块浪费不少时间、几款工具收集后格式...

    子域名信息收集.zip

    Layer-子域名挖掘机 knock dnsrecon dnsenum 1子域名信息.md Sublist3r subDomainsBrute SubdomainCollector subdomain3 subbrute OneForAll Layer-子域名挖掘机 knock dnsrecon dnsenum 1子域名信息.md Sublist3r ...

    wechat-subdomain-demo

    "wechat-subdomain-demo"是一个示例项目,旨在展示如何在微信小游戏环境中实现主域与子域的交互,这对于实现诸如排行榜等功能至关重要。 首先,我们需要理解主域和子域的概念。在Web开发中,主域通常是指应用程序的...

    子域名爆破subDomainsBrute.rar

    子域名爆破subDomainsBruteV1.2

    subjack - Subdomain Takeover扫描识别.zip

    Subdomain Takeover是一种网络安全漏洞,攻击者可以利用这种漏洞控制目标网站的子域名,从而获取敏感信息、执行恶意代码甚至完全接管子域名所关联的资源。在这个场景中,"subjack"是一个用Go语言编写的工具,专门...

    dnsub:dnsub一款好用的子域名扫描工具

    dnsub本工具通过字典枚举的方式来进行扫描探测子域名,意在帮助用户梳理子域名资产使用,dnsub使用go语言高并发扫描,替代显示子域名, IP , CNAME ,域名信息,处理了枚举举中常见的泛滥问题,支持加载多个字典,...

    cookie 跨域

    但有时候开发者需要在不同域名之间共享用户状态或会话信息,这时就需要实现Cookie的跨域。这个简单的演示可能是通过设置特定的HTTP头部和JavaScript来实现这一目的。 描述中提到,这是一个网友要求的示例,它包含两...

Global site tag (gtag.js) - Google Analytics