ASP.NET安全架构的主要功能
身份验证和授权
.NET授权提供者
安全上下文中的标识和主体
身份验证模块如何运行
授权模块如何运行
1.身份验证
Windows身份验证
窗体身份验证
Passport身份验证
自定义身份验证过程
2授权
基于角色的授权
身份验证和授权的区别:身份验证是揭示用户标识的过程,而授权则是确定用户访问特权的过程。
3假冒
4综合运用所有功能
当用户首次访问 web站点时他们是匿名用户。
当用户请求非安全资源时,他们可以自动地访问这个资源:这就是非安全的含义。
当用户请求安全资源时,会有以下几个步骤
(1)请求被发送到web服务器
(2)用户提供凭证
(3)如果用户凭证合法,就准许这个用户访问资源,否则,就会提示这个用户使用合适的凭证登录,或者被重定向到一个"被拒绝访问"的Web页
当用户请求一个安全资源,且该资源仅有一个被确认的标识有权访问时,会发生以下步骤
(1)请求被发送到Web服务器由于此用户还没有被确认,所以会被定向到一个登录页
(2)用户提供凭证,这些凭证由身份验证应用程序进行验证
(3)把用户的凭证或角色与被允许的用户或角色列表进行比较,如果用户在列表中,那么他们就被准许访问这个资源,否则,访问就会被拒绝。
(4)被访问的用户要么被提示用被请求资源的合适凭证进行登录,要么被重定向到一个"访问被拒绝"的Web页
启用假冒
向应用程序(web.config)的根级配置文件添加<identity>元素就可以启用假冒
<configuration>
<system.web>
<identity impersonate="true" userName="dotnetjunies/DSeven" password="aspnet">
</identity>
</system.web>
</configuration>
6.2 如何实现.NET安全
1 表示安全上下文
Identity对象表示的是通过身份验证的用户,他的类型取决于身份验证的类型,Windows身份验证使用的是WindowsIdentity对象,而窗体身份验证使用的则是FormsIdentity对象
Principal对象表示的是通过身份验证的用户的组和角色成员。也就是安全上下文
6.23 ASP.NET页面请求中出现的安全事件
6.24内置的身份验证模块
1 DefaultAuthenticationModule模块
2 WindowsAuthenticationModule模块
3 PassportAuthenticationModule模块
4 FormsAuthenticationModule模块
6.25 内置的授权模块
ASP.NET Framework中有两个授权模块类:FileAuthorizationModule类和UrlAuthorizationModule类