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身份认证

       

  • 相关阅读:
    linux初学者-ftp篇(一)
    随机密码生成
    倒计时问题java
    百钱买鸡
    去7JAVA
    贪吃蛇Controller Java实现(二)
    贪吃蛇Global Java实现(二)
    贪吃蛇GamePanel Java实现(二)
    贪吃蛇Listener Java实现(二)
    贪吃蛇snake Java实现(二)
  • 原文地址:https://www.cnblogs.com/bsyblog/p/4182857.html
Copyright © 2011-2022 走看看