Security Basic

Secuirty包括下面4个概念:

Authentication: 探明客户端身份的过程。如果客户端成功通过服务器确认的话, 就说该客户authenticated. 如果没有,那么就叫anonymous. 这里就涉及到如果验证,客户端提供什么样的credentials.

Authorization:判断某个用户是否有访问某些特定资源或功能权限。

User Accounts:对某个用户的信息进行存储。一般存在关系数据库里面

Roles:不同角色可以获取不同规则及页面级的功能。不同的角色可以访问不同的页面。

 

Asp.net 支持3种类型的 authenticaton: Windows, Passport and Forms.

 

Windows Authentication 流程使用如下认证技术之一:

Basic authentication, Digest authentication, Windows Integrated Authentication.

这三种技术都是一样的工作方式,当anonymous请求到达时, 服务器回送一个http response,指出只有经过授权才能继续操作。

 

Forms:

在ASP.NET里面,authentication和authorization是两个不同的模块,前者对用户进行确认,后者用来确定是否有权限访问请求的资源。

FormsAuthenticationModule在UrlAhthorizationModule(FileAuthorizationModule)之前运行,如果用户请求没有被授权,那么请求终止,并返回401错误。在Windows authentiation里面,401是返回给浏览器,使其显示modal对话框。然而在FORMS里面,会导航到登陆页面。

当用户提交了Crendentials之后,页面会add Authentication Ticket to Cookies. 有的客户端不支持cookies,那么asp.net就会使用无cookie的表单认证。在这种情况下, Ticket会被写入URL中。

在IIS 7之前,如果要使用forms authentication,只能通过asp.net runtime.但是在iis7里面,我们可以把他整合进IIS的HTTP pipeline.

 

当用户访问一个未被授权的页面时,FormsAuthenticationModule自动将其导航到登陆页面,登陆成功后,就再查询字符串里面的ReturnUrl参数里面包含的URL。然后根据URL转到合适的页面。

 

登陆用户:

通过Forms anthenticaiton登陆和注销

.GetAuthCookie(username, persistCookie)——为提供的username创建一个表单认证票据,接下来该方法创建并返回一个HttpCookie对象,该对象包含了票据的内容.如果persistCookie为true,则创建一个"持久性"的cookie

.SetAuthCookie(username, persistCookie)——调用GetAuthCookie(username, persistCookie) 方法来生成表单认证票据.该方法将

GetAuthCookie()方法返回的cookie添加到Cookies collection里(我们假定使用的是基于cookie的forms authentication.不然,该方法将调用一个内部的类来处理无Cookie的票据逻辑)

.RedirectFromLoginPage(username, persistCookie)——该方法调用SetAuthCookie(username, persistCookie),然后将用户再导航到恰当的页面.

 

 

你可能感兴趣的:(Security)