zoukankan      html  css  js  c++  java
  • ASP.NETwindows身份验证详细步骤-域验证登录

    Windows身份验证相比于form身份验证要方便的多,而且会有更好的安全保障。

    我个人觉得windows身份验证写法有两种:

            第一种非代码方式进行windows身份验证;

            第二种是用代码访问活动目录,并获取活动目录(用户信息数据库)里的用户名,

    但是第二种方式在有些情况下,不太安全!

    第一种方式使用步骤如下:

    1:需要在web.config设置:

         <authentication mode="Windows" />
    2:获取用户名:

    HttpContext.Current.User.Identity.Name;

        注意:这里的用户名实际是"计算机名帐户名",就是从Active Directory中获取用户的登录名

    3:发布网站:

         在发布网站时,将IIS配置中的“身份验证”中的“windows身份验证”开启,同时将“匿名身份验证”禁用

    4:完成

    第二种方式使用步骤,跟第一种方式差不多,但是需要使用代码来访问活动目录。

    通常使用LDAP协议来访问Active Directory, 在.net framework中提供了DirectoryEntry和DirectorySearcher这二个类型让我们可以方便地从托管代码中访问 Active Directory 域服务。

    代码如下:

            DirectoryEntry entry = new DirectoryEntry("LDAP://" + domainName);
            DirectorySearcher search = new DirectorySearcher(entry);
            search.Filter = "(samaccountname=" + loginName + ")";

            foreach( string p in properties )
                search.PropertiesToLoad.Add(p);

            SearchResult result = search.FindOne();

            if( result != null ) {
                foreach( string p in properties ) {
                    ResultPropertyValueCollection collection = result.Properties[p];
                    for( int i = 0; i < collection.Count; i++ )
                        Console.WriteLine(p + ": " + collection[i]);
                }
            }

    在实际开发中遇到的问题

    1:在获取用户名,不管用什么用户名登录,只能获取同一个用户名。

        原因:客户的域服务器跟部署网站的服务器不是同一个服务,而且域服务器只分配给部署网站的服务器一个用户名,用来登录域服务器,

                 所以在获取的时候只能获取这个用户名 。


    由于网上讲解windows身份验证原理的已经很多,本文只讲解具体使用步骤,能力有限,欢迎斧正。

    另外原理推荐大家浏览:细说ASP.NET Windows身份认证

       

  • 相关阅读:
    EMF介绍系列(一、EMF与MDA)
    EMF介绍系列(四、枚举类型、自定义类型和Map)
    使用osgi.util.NLS简化资源文件访问
    2012 定制化产品探讨(周金根).pdf
    敏捷个人理念与模型PPT及今年唯一一次的公开线上课堂
    生活:父与子三亚行
    与北邮学子交流成长,敏捷个人总体介绍 PPT
    敏捷个人教你如何制作2012生活看板
    敏捷个人架构图 V1.3
    敏捷个人微刊封面及敏捷个人使命和加入社区方式
  • 原文地址:https://www.cnblogs.com/bsyblog/p/4182857.html
Copyright © 2011-2022 走看看