authentication与网站安全验证
2018-06-22 07:35:04来源:未知 阅读 ()
1.Forms 身份验证提供程序
通过 Forms 身份验证,可以使用所创建的登录窗体验证用户的用户名和密码。未经过身份验证的请求被重定向到登录页,用户在该页上提供凭据和提交窗体。如果应用程序对请求进行了验证,系统会颁发一个票证,该票证包含用于重建后续请求的标识的密钥。
ASP.NET Forms 身份验证概述
Forms 身份验证使您可以使用自己的代码对用户进行身份验证,然后将身份验证标记保留在 Cookie 或页的 URL 中。Forms 身份验证通过FormsAuthenticationModule 类参与到 ASP.NET 页的生命周期中。可以通过 FormsAuthentication 类访问 Forms 身份验证信息和功能。
若要使用 Forms 身份验证,可以创建一个登录页。该登录页既可收集用户的凭据,又包含用于对这些凭据进行身份验证的代码。通常,可以对应用程序进行配置,以便在用户尝试访问受保护的资源(如要求身份验证的页)时,将请求重定向到登录页。如果用户的凭据有效,则可以调用FormsAuthentication 类的方法,以使用适当的身份验证票证 (Cookie) 将请求重定向回到最初请求的资源。如果不需要进行重定向,则只需获取 Forms 身份验证 Cookie 或对其进行设置即可。在后续的请求中,用户的浏览器会随同请求一起传递相应的身份验证 Cookie,从而绕开登录页。
通过使用 authentication 配置元素,可以对 Forms 身份验证进行配置。最简单的情况是使用登录页。在配置文件中,指定一个 URL 以将未经身份验证的请求重定向到登录页。然后在 Web.config 文件或单独的文件中定义有效的凭据。下面的示例演示配置文件的一部分,其中为 Authenticate 方法指定了登录页和身份验证凭据。密码已经使用 HashPasswordForStoringInConfigFile 方法进行加密。
<authentication mode="Forms"> <forms name="SavingsPlan" loginUrl="/Login.aspx"> <credentials passwordFormat="SHA1"> <user name="Kim" password="07B7F3EE06F278DB966BE960E7CBBD103DF30CA6"/> <user name="John" password="BA56E5E0366D003E98EA1C7F04ABF8FCB3753889"/> </credentials> </forms> </authentication>
在身份验证成功之后,FormsAuthenticationModule 模块会将 User 属性的值设置为对经过身份验证的用户的引用。下面的代码示例演示如何以编程方式读取经过 Forms 身份验证的用户的标识。
以上配置可以通过 FormsAuthentication.Authenticate(model.UserName, model.Password) 来验证是否通过认证
String authUser2 = User.Identity.Name;
Forms 身份验证和身份验证服务
通过使用 ASP.NET 身份验证服务,还可以作为 Windows Communication Framework (WCF) 服务来访问 Forms 身份验证。身份验证服务使您能够从可以发送和使用 SOAP 格式的消息的任何应用程序使用 Forms 身份验证。身份验证服务接受用户凭据并返回 Forms 身份验证 Cookie。
https://msdn.microsoft.com/zh-cn/library/9wff0kyh(v=vs.100).aspx
Form身份验证控制流
浏览器和 HTTP 操作 |
服务器答复 |
从服务器请求受保护的资源。HTTP 操作为: GET /default.aspx |
如果不存在身份验证 Cookie,则将请求重定向到登录页以收集凭据。使用 RETURNURL 作为关键字,将有关起始页的信息放在查询字符串中。服务器 HTTP 答复为: 302 Found |
重定向到登录页。HTTP 操作为: GET /logon.aspx?RETURNURL=/default.aspx |
返回登录页。为安全起见,建议对登录页使用安全套接字层 (SSL),以阻止用户凭据以明文形式发送。服务器 HTTP 答复为: 200 OK |
用户在登录页输入凭据后,提交该页。HTTP 操作为: POST /logon.aspx?RETURNURL=/default.aspx |
验证用户凭据,如果凭据通过身份验证,则将浏览器重定向到在 QueryString 中作为 RETURNURL 变量指定的原始 URL。默认情况下,身份验证票证以 Cookie 的形式发出。 说明: 您可以使用 CookieMode 属性,指定将身份验证票证包含在 URL 中,而不是包含在 Cookie 中。 服务器 HTTP 答复为: 302 Found |
遵循重定向操作并再次请求原始资源。HTTP 操作为: GET /default.aspx |
如果用户通过身份验证,则允许访问并授予身份验证 Cookie,该 Cookie 中包含身份验证票证。同一浏览器会话的以后的请求将在模块检查该 Cookie 时进行身份验证。可以创建可用于以后的会话的持久性 Cookie,但该 Cookie 的使用期截止到到期日期为止。服务器 HTTP 答复为: 200 OK 注意,Cookie 路径设置为 /。由于 Cookie 名称区分大小写,因此这有助于防止站点中的 URL 的大小写不一致。例如,如果路径设置为 /SavingsPlan,而链接包含 /savingsplan,由于浏览器不会发送 Cookie,用户将被迫重新进行身份验证。 |
若通过了认证,需要调用 FormsAuthentication.SetAuthCookie,才会创建票证,响应中才会带set-cookie命令;而在注销时需要调用FormsAuthentication.SignOut来清除票证,响应中会添加set-cookie=;命令来清除浏览器端的票证。
跨应用程序进行 Forms 身份验证
若要配置跨应用程序的 Forms 身份验证,对于参与共享的 Forms 身份验证的所有应用程序,应将 Web.config 文件的 forms 和 machineKey 节的属性设置为相同的值。name、protection、path、validationKey、validation、decryptionKey 和 decryption 属性必须在所有应用程序中都完全相同。同样,用于身份验证票证(Cookie 数据)的加密密钥值和验证密钥值以及加密方案和验证方案必须相同。如果设置不匹配,则不能共享身份验证票证。如下面可直接尝试
<forms defaultUrl="/Home/Index" loginUrl="/Home/LogOn" timeout="60" name=".ASPXFORMSAUTH" protection="All" path="/" ></forms> <machineKey validationKey="3FF1E929BC0534950B0920A7B59FA698BD02DFE8" decryptionKey="280450BB36319B474C996B506A95AEDF9B51211B1D2B7A77" decryption="3DES" validation="SHA1"/>
但经我尝试,确实两个系统一方登录,另一方则在请求时附带相同票证,但是个人估计这是停留在ASP.NET层次的,过了这个认证,到不同系统因为认证逻辑如果有出入仍会导致最终认证结果不同。但注销时则不一样,一方注销,票证清空,所有系统的Form认证都不通过。
来自 <https://msdn.microsoft.com/zh-cn/library/eb0zx8fc(v=vs.100).aspx>
2.Windows 身份验证提供程序
Web.config中设置
<authentication mode="Windows"/>
在IIS中才可实现,IIS安装时"基本身份验证"需要勾上,
IIS的安全性才会有"基本身份验证",
将其启用,访问网站时则会弹出windows的登录窗口,此时输入的用户名密码则是服务器中的windows用户名及其密码则可登录。
查看过它的网络请求,并未发现类型form请求中的服务器交互信息及相关cookie。
来自 <https://msdn.microsoft.com/zh-cn/library/907hb5w9(v=vs.100).aspx>
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇://修改图片
下一篇:Redis命令拾遗五(有序集合)
- .Net MVC网站中配置文件的读写 2020-02-28
- asp.net网站实现接入QQ登录示例代码 2020-02-17
- MVC网站开发之权限管理篇 2020-02-17
- asp.net获取当前页面URL的方法 2020-01-20
- asp.net小谈网站性能优化 2019-10-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash