在IIS中使用Windows域服务器域摘要式身份验证对
时间:2011-12-27 23:31来源: 作者:admin 点击: 次
优势:使用IIS6中的Windows域服务器域摘要式身份验证对应用程序的访问进行控制。
可以在有域控制器的网络中不用特意去维护用户列表和用户密码列表。
这样开发者只需要关注用户的权限就,从而简化管理。
这样可以简化管理,尤其是有多套并行运行的信息系统的情况下。
一、实现原理
1.客户访问IIS服务器。
2.Web服务器向域服务器进行身份验证。
3.通过之后与IIS服务器建立一个线程。
4.从线程中获取用户信息再进行程序内部权限控制。
物理结构
逻辑结构
二、Windows设置
我们以Windows2003 SP2 IIS6 ASP.Net 2为试验系统
三、IIS设置
四、代码实现
程序中使用到的命名空间
System.Threading 命名空间提供一些使得可以进行多线程编程的类和接口。
除同步线程活动和访问数据的类(Mutex、Monitor、Interlocked、AutoResetEvent 等)外,
此命名空间还包含一个 ThreadPool 类(它允许用户使用系统提供的线程池)
和一个 Timer 类(它在线程池线程上执行回调方法)。
代码说明:当通过域认证之后,生成一个HTTP线程连接到IIS服务器,然后从线程中获得域域身份信息。
之后根据域身份信息来获取用户在Web应用程序中的权限。
//用于域用户认证
usingSystem.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中
}
多线程可以参考msdn(责任编辑:admin)
using
private
}
多线程可以参考msdn(责任编辑:admin)
