zoukankan      html  css  js  c++  java
  • 【转】ASP.NET Windows用户认证

    企业内部网站一般采用windwos身分验证机制。主要包括两部分
    一、程序代码中读取当前windows用户帐号
    二、IIS和ASP.NET的web.config设置


    一、这段代码可以取出当前windows用户的帐号,

    string strUser;
    System.Security.Principal.WindowsIdentity objIden = System.Security.Principal.WindowsIdentity.GetCurrent();
    strUser = objIden.Name;//Domain and alias

    二、IIS本身可以设置目录的访问控制,ASP.NET的web.config中也可以设置访问控制。如果要达到特定的身份认证目的,需要合理设置,设置不当会造成很多问题。
    通常的设置:IIS 采用windwos集成身份验证,web.config中添加<identity impersonate="true"/>。

    1 IIS的虚目录的身份设置:
    匿名用户:任何用户访问此网站都不需要登录。
    Windows集成身份验证:客户端访问此网站,需要提交自己的身份。如果客户端是XP,提交的身份就是当前运行IE的用户帐号,如果客户端是windows 2003,IE会跳出登录窗体让你登录。

    2 ASP.NET身份验证,
    在web.config文件中,可以通过设置<identity impersonate="true"/>,打开身份模拟。
    默认情况下,是没有身份模拟的,此时,如果用程序读取当前的windows用户,取得的是运行当前进程的windows账号。
    如果网站运行在Windows XP上,读出的当前用户是ASPNET,如果网站运行在Windows2003上,当前用户是网站对应应用程序池的运行账号,一般是network service。
    设置了<identity impersonate="true"/>后,如果用程序读取当前的windows用户,取得的是客户端访问网站所使用的windows账号。

    下面的列表,列出了IIS,web.config设置对当前的windows用户的影响

    表一:网站运行在Windows XP上

     

    IIS设置 anonymouse access anonymouse access integrated windows authentication integrated windows authentication
    web.config设置 此处无论<authentication mode="XXXXX"/>结果都一样 <identity impersonate="true"/> 此处无论<authentication mode="XXXXX"/>结果都一样 <identity impersonate="true"/>
    取得current user的名字 ASPNET IUSR_CVIS-TEST1 ASPNET v-ricyan(login)
    备注 XP,Windows2003都不需要登录 XP,Windows2003都不需要登录,此时取得的IUSR_CVIS-TEST1是anonymouse默认运行的账户 XP客户端不需要登录,windows2003客户端需要登录 XP客户端不需要登录,windows2003客户端需要登录

     表二:网站运行在Windows2003

    IIS设置 anonymouse access anonymouse access integrated windows authentication integrated windows authentication
    web.config设置 此处无论<authentication mode="XXXXX"/>结果都一样 <identity impersonate="true"/> 此处无论<authentication mode="XXXXX"/>结果都一样 <identity impersonate="true"/>
    取得current user的名字 SYSTEM IUSR_CVIS-TEST1 SYSTEM v-ricyan(login)
    备注 XP,Windows2003都不需要登录。这时取得的用户是application pool运行账户,我把运行账户设置为本地系统用户了 XP,Windows2003都不需要登录,此时取得的IUSR_CVIS-TEST1是anonymouse默认运行的账户 XP,Windows2003都不需要登录。这时取得的用户是application pool运行账户,我把运行账户设置为本地系统用户了 XP客户端不需要登录,windows2003客户端需要登录
  • 相关阅读:
    基于tensorflow的MNIST手写数字识别(二)--入门篇
    怎么自行HTTP的POST包头,需要使用json
    本地数据库(SQL Server)远程连接服务器端服务器
    在 Visual Studio 2010 中创建 ASP.Net Web Service
    VMware加载vmdk文件
    Android典型界面设计(5)——使用SlidingMenu和DrawerLayout分别实现左右侧边栏
    FatSecret Platform API
    Android典型界面设计(4)——使用ActionBar+Fragment实现tab切换
    IOS UITableView删除功能
    Android GUI之View测量
  • 原文地址:https://www.cnblogs.com/NickYao/p/1409384.html
Copyright © 2011-2022 走看看