在IIS中使用Windows域服务器域摘要式身份验证对Web应用程序进行访问控

 优势:使用IIS6中的Windows域服务器域摘要式身份验证对应用程序的访问进行控制。
可以在有域控制器的网络中不用特意去维护用户列表和用户密码列表。
这样开发者只需要关注用户的权限就,从而简化管理。
这样可以简化管理,尤其是有多套并行运行的信息系统的情况下。

一、实现原理

1.客户访问IIS服务器。
2.Web服务器向域服务器进行身份验证。
3.通过之后与IIS服务器建立一个线程。
4.从线程中获取用户信息再进行程序内部权限控制。

物理结构

在IIS中使用Windows域服务器域摘要式身份验证对Web应用程序进行访问控_第1张图片

逻辑结构

在IIS中使用Windows域服务器域摘要式身份验证对Web应用程序进行访问控_第2张图片

二、Windows设置

我们以Windows2003 SP2 IIS6 ASP.Net 2为试验系统

在IIS中使用Windows域服务器域摘要式身份验证对Web应用程序进行访问控_第3张图片

三、IIS设置

在IIS中使用Windows域服务器域摘要式身份验证对Web应用程序进行访问控_第4张图片

在IIS中使用Windows域服务器域摘要式身份验证对Web应用程序进行访问控_第5张图片

四、代码实现

程序中使用到的命名空间

 System.Threading 命名空间提供一些使得可以进行多线程编程的类和接口。
除同步线程活动和访问数据的类(Mutex、Monitor、Interlocked、AutoResetEvent 等)外,
此命名空间还包含一个 ThreadPool 类(它允许用户使用系统提供的线程池)
和一个 Timer 类(它在线程池线程上执行回调方法)。

代码说明:当通过域认证之后,生成一个HTTP线程连接到IIS服务器,然后从线程中获得域域身份信息。
之后根据域身份信息来获取用户在Web应用程序中的权限。
// 用于域用户认证
using  System.Threading;              // Windows HTTP线程命名空间
private   void  setRule( string  rulename)
{
    WindowsPrincipal wp 
= (WindowsPrincipal)Thread.CurrentPrincipal; //创建对象wp 用于Thread创建一个http线程,CurrentPrincipal获取线程的当前域角色
   string wpname = wp.Identity.Name.ToString();
   
int j = wpname.LastIndexOf(“/”);    //程序取出的字符串是 “Domain/Administrator”(Domain域,域用户Administrator) 形式的所以我们需要把用户名和用户账号所属的域的字符串分离开
  string userName = wpname.Substring(j + 1);  //取得分隔符后的用户在域中的身份字符串保存在userName中,然后根据这个用户字符串在数据库中查询到用户相应的访问权限
  string domainName = wpname.Substring(0, j); //取得到分隔符前为止的字符串保存在domainName中
}

 

参考资料

System.Threading 命名空间
 http://msdn2.microsoft.com/zh-cn/library/system.threading(VS.80).aspx

 

你可能感兴趣的:(windows,Web,String,服务器,asp.net,IIS)