六、安全上下文
。net Framework 使用以下两个接口封装 Windows 令牌和登录会话:
· System.Security.Principal.IPrincipal
· System.Security.Principal.IIdentity(它公开为 iprincipal 接口中的一个属性。)
httpcontext.user
在 ASP.NET 中,用 windowsprincipal 和 windowsidentity 类表示使用 Windows 身份验证进行身份验证的用户的安全上下文。使用 Windows 身份验证的 ASP.NET 应用程序可以通过 httpcontext.user 属性访问 windowsprincipal 类。
要检索启动当前请求的 Windows 经过身份验证的用户的安全上下文,使用以下代码:
using System.Security.Principal;
...
// Obtain the authenticated user's Identity
WindowsPrincipal winPrincipal = (WindowsPrincipal)HttpContext.Current.User;
windowsidentity.getcurrent
WindowsIdentity.GetCurrent 方法可用于获得当前运行的 Win32 线程的安全上下文的标识。如果不使用模拟,线程继承 IIS 6.0(默认情况下的 NetworkService 帐户)上进程的安全上下文。
该安全上下文在访问本地资源时使用。通过使用经过身份验证的初始用户的安全上下文或使用固定标识,您可以使用模拟重写该安全上下文。
要检索运行应用程序的安全上下文,使用以下代码:
using System.Security.Principal;
...
// Obtain the authenticated user's identity.
WindowsIdentity winId = WindowsIdentity.GetCurrent();
WindowsPrincipal winPrincipal = new WindowsPrincipal(winId);
thread.currentprincipal
asp.net 应用程序中的每个线程公开一个 currentprincipal 对象,该对象保存经过身份验证的初始用户的安全上下文。该安全上下文可用于基于角色的授权。
要检索线程的当前原则,使用以下代码:
using System.Security.Principal;
...
// Obtain the authenticated user's identity
WindowsPrincipal winPrincipal = (WindowsPrincipal) Thread.CurrentPrincipal();
表 1 显示从各种标识属性获得的结果标识,当您的应用程序使用 Windows 身份验证且 IIS 配置为使用集成 Windows 身份验证时,可以从 ASP.NET 应用程序使用这些标识属性。
| 表 1:线程公开的 CurrentPrincipal Object | ||
| Web.config 设置 | 变量位置 | 结果标识 |
|
<identity impersonate="true"/> |
HttpContext |
Domain\UserName |
|
<identity impersonate="false"/> |
HttpContext |
Domain\UserName |
|
<identity impersonate="true"/> |
HttpContext |
用户提供的名称 |
|
<identity impersonate="false"/> |
HttpContext |
用户提供的名称 |
相关专题
- Windows操作系统安装 (15630篇文章)
- Windows权限设置 (10247篇文章)
- Windows操作系统安全集 (18697篇文章)
- .NET移动与嵌入式技术 (5968篇文章)
- .NET开发手册 (5669篇文章)
- ASP.NET教程 (8464篇文章)
- Windows频道 (9821篇文章)
- ASP.NET应用篇 (2639篇文章)
- .NET开发人员犯的6大安全错误 (6次浏览)
- 请跟我来--使用Ext搞个原型 (1次浏览)
- ASP.NET 3.5 Extensions带来什么 (1次浏览)
- 应用WEB标准会使ScrollTop属性失效! (0次浏览)
- Cache用法之缓存页面和缓存数据 (0次浏览)
- 支持正则表达式的UrlMapping (0次浏览)
- 关于ASP.NET 2.0的目录结构变化 (0次浏览)
- WPF中Closing窗体时调用Hide()方法异常 (0次浏览)
- 对象数组根据某属性列的灵活排序 (0次浏览)
- DB2 9和ASP.NET 2.0构建下一代应用程序 (0次浏览)



