ASP.NET 中的 authentication(验证)与authorization(授权)

简介:

这两个东西很绕口,也绕脑袋。

一般来说,了解authentication(验证)的用法即可,用于自定义的用户验证。

 

authorization(授权)主要通过计算机信息来控制。

“*”:所有用户;

“?”:匿名用户; 

 

官方说明如下:

 

http://msdn.microsoft.com/ZH-CN/library/532aee0e%28v=VS.110,d=hv.2%29.aspx
http://msdn.microsoft.com/ZH-CN/library/8d82143t%28v=VS.110,d=hv.2%29.aspx

 

authorization 元素

配置 Web 应用程序的授权,以控制客户端对 URL 资源的访问。 

< authorization >
< allow  ... />
< deny  ... />
</ authorization >

 

 

特性和元素

以下几节描述了特性、子元素和父元素。

子元素

子标记

说明

allow

向授权规则映射添加一个规则,该规则允许对资源进行访问。

deny

向授权规则映射添加一条拒绝对资源的访问的授权规则。

父元素

元素

说明

configuration

指定公共语言运行时和 .NET Framework 应用程序所使用的每个配置文件中均需要的根元素。

system.web

指定配置文件中 ASP.NET 配置设置的根元素,并包含用于配置 ASP.NET Web 应用程序和控制应用程序行为方式的配置元素。

authorization 元素为 Web 应用程序配置授权,以控制对 URL 资源的客户端访问。

运行时,授权模块从最本地的配置文件开始,循环访问 allow 和 deny 元素,直到它找到适合特定用户帐户的第一个访问规则。 然后,该授权模块根据找到的第一个访问规则是 allow 还是 deny 规则来允许或拒绝对 URL 资源的访问。 默认的授权规则为 <allow users="*"/> 因此,默认情况下允许访问,除非另外配置。

为了便于部署,支持表示当前计算机的句点 (.) 简便表示法。 这使您能够用句点-反斜杠序列 (.\) 为每个用户或角色加上前缀,如下所示:

< allow  roles =".\roleName" />
< allow  users =".\userName" />
运行时,句点-反斜杠序列会替换为 "本地计算机名\" 序列。 只有当 Microsoft Windows 标识用于请求时,才会进行此替换。 这是为了避免在句点-反斜杠序列用于具有自定义主体的任意规则时产生冲突。 

因为 authorization 元素不表示集合,所以没有 clear 或 remove 子元素。 () or Remove(AuthorizationRule)method.">若要以编程方式清除授权规则映射,请使用 Clear() 或 Remove(AuthorizationRule) 方法。

默认配置

下面的默认 authorization 元素在 .Net Framework 2.0 版的根 Web.config 文件中配置,在 .NET Framework 1.1 和 1.0 版的 Machine.config 文件中配置。

< authorization >
   < allow  users ="*"   />
</ authorization >

下面的代码示例演示如何允许所有 Admins 角色成员进行访问以及如何拒绝所有 users 角色成员进行访问。

复制代码
< configuration >
   < system.web >
     < authorization >
       < allow  roles ="Admins" />
       < deny  users ="*" />
     </ authorization >
   </ system.web >
</ configuration >
复制代码

 authentication 元素 

配置 ASP.NET 身份验证方案,该方案用于识别查看 ASP.NET 应用程序的用户。

< authentication  mode ="[Windows|Forms|Passport|None]" > 
    < forms >... </ forms >
    < passport />
</ authentication >

以下几节描述了特性、子元素和父元素。

特性

特性

说明

mode

必需的特性。

指定应用程序的默认身份验证模式。 此特性可以为下列值之一。

Windows  将 Windows 验证指定为默认的身份验证模式。 将它与以下任意形式的 Microsoft Internet 信息服务 (IIS) 身份验证结合起来使用:基本、摘要、集成 Windows 身份验证 (NTLM/Kerberos) 或证书。 在这种情况下,您的应用程序将身份验证责任委托给基础 IIS。
Forms  将 ASP.NET 基于窗体的身份验证指定为默认身份验证模式。
Passport  将 Microsoft Passport Network 身份验证指定为默认身份验证模式。
None  不指定身份验证。 您的应用程序仅期待匿名用户,否则它将提供自己的身份验证。

默认值为 Windows

子元素

元素

说明

forms

配置 ASP.NET 应用程序以执行基于窗体的自定义身份验证。

passport

指定要重定向到的页(如果该页要求身份验证,而用户尚未通过 Microsoft Passport Network 身份验证注册)。

父元素

元素

说明

configuration

指定公共语言运行时和 .NET Framework 应用程序所使用的每个配置文件中均需要的根元素。

system.web

指定配置文件中 ASP.NET 配置设置的根元素,并包含用于配置 ASP.NET Web 应用程序和控制应用程序行为方式的配置元素。

authentication 元素为 ASP.NET 应用程序配置 ASP.NET 身份验证方案。 身份验证方案确定如何识别要查看 ASP.NET 应用程序的用户。 mode 特性指定身份验证方案。 有关可用的身份验证方案的更多信息,请参见ASP.NET Authentication

默认配置

Machine.config 或根 Web.config 文件中未显式配置下面的默认 authentication 元素。 但它是 .NET Framework 2.0 版中应用程序返回的默认配置。

复制代码
< authentication  mode ="Windows" >
    < forms 
      
name =".ASPXAUTH"  
      loginUrl
="login.aspx"  
      defaultUrl
="default.aspx"  
      protection
="All"  
      timeout
="30"  
      path
="/"  
      requireSSL
="false"  
      slidingExpiration
="true"  
      cookieless
="UseDeviceProfile"  domain =""  
      enableCrossAppRedirects
="false" >
       < credentials  passwordFormat ="SHA1"   />
    </ forms >
    < passport  redirectUrl ="internal"   />
</ authentication >
复制代码

示例


下面的代码示例演示如何为基于窗体的身份验证配置站点、指定传输来自客户端的登录信息的 Cookie 的名称以及指定当初始身份验证失败时使用的登录页的名称。 必须将 authorization 节包含在内才能要求对所有用户进行 Forms 身份验证,并拒绝匿名用户访问站点。


 

复制代码
< configuration >
    < system.web >
       < authentication  mode ="Forms" >
          < forms  name ="401kApp"  loginUrl ="/login.aspx" />
       </ authentication >
       < authorization >
          < deny  users ="?" />
       </ authorization >
    </ system.web >
</ configuration >
复制代码

 

本文转自火地晋博客园博客,原文链接:http://www.cnblogs.com/yelaiju/p/3204298.html,如需转载请自行联系原作者


目录
相关文章
|
开发框架 前端开发 .NET
分享一个 ASP.NET WebForm 使用 Form Authentication 的例子
分享一个 ASP.NET WebForm 使用 Form Authentication 的例子
202 0
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
439 0
|
机器学习/深度学习 JSON 测试技术
CNN依旧能战:nnU-Net团队新研究揭示医学图像分割的验证误区,设定先进的验证标准与基线模型
在3D医学图像分割领域,尽管出现了多种新架构和方法,但大多未能超越2018年nnU-Net基准。研究发现,许多新方法的优越性未经严格验证,揭示了验证方法的不严谨性。作者通过系统基准测试评估了CNN、Transformer和Mamba等方法,强调了配置和硬件资源的重要性,并更新了nnU-Net基线以适应不同条件。论文呼吁加强科学验证,以确保真实性能提升。通过nnU-Net的变体和新方法的比较,显示经典CNN方法在某些情况下仍优于理论上的先进方法。研究提供了新的标准化基线模型,以促进更严谨的性能评估。
704 0
|
开发框架 JSON .NET
|
JSON 数据格式 微服务
.NET下 支持大小写不敏感的JSON Schema验证方法
有很多应用程序在验证JSON数据的时候用到了JSON Schema。 在微服务架构下,有时候各个微服务由于各种历史原因,它们所生成的数据对JSON Object属性名的大小写规则可能并不统一,它们需要消费的JSON数据的属性名可能需要大小写无关。 遗憾的是,目前的JSON Schema没有这方面的标准,标准中都是大小写敏感的。在类似上述情况下,这给使用JSON Schema进行数据验证造成了困难。
218 0
|
开发框架 JavaScript .NET
Asp.Net就业课之三验证控件
Asp.Net就业课之三验证控件
200 0
|
开发框架 JSON 算法
ASP.NET Core Web API之Token验证
ASP.NET Core Web API之Token验证
538 0
|
开发框架 数据可视化 .NET
.netcore第三方登录授权:10分钟急速接入
.netcore第三方登录授权:10分钟急速接入
|
开发框架 安全 .NET
[牛腩]如何关闭.net framework4.0的请求验证
[牛腩]如何关闭.net framework4.0的请求验证
|
监控 前端开发 API
一款基于 .NET MVC 框架开发、功能全面的MES系统
一款基于 .NET MVC 框架开发、功能全面的MES系统
517 5