ASP.NET 身份认证
ASP.NET 身份认证相关
原理
ASP.NET中身份认证分为两个阶段:认证与授权
1. 认证:识别当前请求的用户是不是一个可识别(登录)用户。AuthenticateRequest
2. 授权:是否允许当前请求访问指定资源。AuthorizeRequest
受保护页面和登录页面都可以在Web.Config进行配置。
Form认证是FormAuthenticationModule实现,Url授权是UrlAuthorizationModule实现。
1. 登陆:FormsAuthentication.SetAuthCookie() 方法
2. 注销:FormsAuthentication.SignOut() 方法
配置
<location path="MyInfo.aspx">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
限制单页面登陆
<location path="Admin">
<system.web>
<authorization>
<allow roles="Admin"/>
<deny users="*"/>
</authorization>
</system.web>
</location>
限制目录
<system.web>
<compilation debug="true" targetFramework="4.6.1"/>
<authentication mode="Forms">
<forms loginUrl="~/Login.aspx" timeout=""></forms>
</authentication>
<authorization>
<deny users="?" />
<allow users="?" />
</authorization>
</system.web>
限制所有
其中,deny 是拒绝,allow 是允许。
<location path="WebForm1.aspx">
<system.web>
<authorization>
<allow users="?" />
</authorization>
</system.web>
</location>
允许某个页面登陆
如果某个资源允许某类用户访问。可以制定user role ?=>代表匿名用户 *=>代表所有用户
Form身份验证
在web.config中,配置如下,会自动生成一个Cookie来保存用户状态。
<authentication mode="Forms">
<forms loginUrl="~/Login.aspx" name="CookiesTest" timeout="300" cookieless="UseCookies"></forms>
</authentication>
ASP.NET 采用FormsAuthenticationTicket 对象,来表示一个Forms登录用户
加密和解密使用FormsAuthentication的 Encrypt 和 Decrypt来实现。
过程如下
1. 检查用户名密码
2. 根据登录名创建FormsAuthenticationTicket对象
3. 调用FormsAuthentication.Encrypt功能
4. UrlAuthorizationModule 执行授权检查
三者关系为:
FormsAuthenticationTicket:数据结构
FormsAuthentication:处理这个数据结构的工具类
UrlAuthorizationModule:授权检查模块
单点身份验证
需要在多台机器之间使用Form身份验证时,不能再使用随机生成密钥的方式,需要手工指定
WebConfig中添加machineKey配置,可以指定加密和解密算法。
不同项目的machineKey节点确保以下字段完全一样,validationKey, decryptionKey, validation, name
Cookie名称必须一样,区分大小写,登陆界面整合到统一登陆点 loginUrl
<machineKey validationKey="5029E82E1779497186D46F83D78FAD0786D46F83D78FAD" decryptionKey="82B8397DB5B4443FB035083EB662CD98" validation="SHA1" decryption="Auto" />
validationKey 向视图状态值和身份验证Cookie添加杂乱信息(40-128位)。decryptionKey 加密试图状态和验证Cookie(16-48位)
AutoGenerate 代表生成随机值,保存在本地,单服务器适用。使用16进制
ASP.NET 身份认证的更多相关文章
- Asp.net身份认证记录
基础知识 身份标识在客户端主要是两个存储位置: cookie 常用 url 很少用 url作为cookie禁用的备选方案 form 几乎不用 很麻烦,每次请求都必须是form提交方式 authoriz ...
- asp.net身份认证
在网上看到几篇比较好的文章很详细讲解了Form.Membership.以及Identity身份认证 Form身份认证: http://www.cnblogs.com/fish-li/archive/2 ...
- 细说ASP.NET Forms身份认证
阅读目录 开始 ASP.NET身份认证基础 ASP.NET身份认证过程 如何实现登录与注销 保护受限制的页面 登录页不能正常显示的问题 认识Forms身份认证 理解Forms身份认证 实现自定义的身份 ...
- 转:细说ASP.NET Windows身份认证
转自:https://www.cnblogs.com/fish-li/archive/2012/05/07/2486840.html 细说ASP.NET Windows身份认证 阅读目录 开始 认识A ...
- 认识ASP.NET Windows身份认证
本文摘自:细说ASP.NET Windows身份认证 Forms身份认证虽然使用广泛,不过,如果是在 Windows Active Directory 的环境中使用ASP.NET, 那么使用Windo ...
- 细说ASP.NET Windows身份认证
上篇博客我谈到了一些关于ASP.NET Forms身份认证方面的话题,这次的博客将主要介绍ASP.NET Windows身份认证. Forms身份认证虽然使用广泛,不过,如果是在 Windows Ac ...
- ASP.NET Forms身份认证详解
ASP.NET身份认证基础 在开始今天的内容之前,我想有二个最基础的问题首先要明确: 1. 如何判断当前请求是一个已登录用户发起的? 2. 如何获取当前登录用户的登录名? 在标准的ASP.NET身份认 ...
- Asp.net MVC使用FormsAuthentication,MVC和WEB API可以共享身份认证 (转载)
在实际的项目应用中,很多时候都需要保证数据的安全和可靠,如何来保证数据的安全呢?做法有很多,最常见的就是进行身份验证.验证通过,根据验证过的身份给与对应访问权限.同在Web Api中如何实现身份认证呢 ...
- 类型:.net;问题:asp.net window验证;结果:细说ASP.NET Windows身份认证
细说ASP.NET Windows身份认证 阅读目录 开始 认识ASP.NET Windows身份认证 访问 Active Directory 在ASP.NET中访问Active Directory ...
随机推荐
- Ueditor上传图片后自定义样式类名
Ueditor是百度的一个富文本插件,如果使用者会前端语言的话,那适用性就很好,特别是现在移动端纵横的情况.但往往使用者并不懂编程,要让他们使用前端语言的话是不可能的,这就需要我们在开发时就定义好整个 ...
- AlloyRenderingEngine燃烧的进度条
写在前面 Github: https://github.com/AlloyTeam/AlloyGameEngine HTML 5新增了progress标签,那么再去使用AlloyRenderingEn ...
- javascript的defer和async的区别。
我们常用的script标签,有两个和性能.js文件下载执行相关的属性:defer和async defer的含义[摘自https://developer.mozilla.org/En/HTML/Elem ...
- [Android]Dagger2Metrics - 测量DI图表初始化的性能(翻译)
以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5098943.html Dagger2Metrics - 测量D ...
- ios App与网页交互
随着移动APP的快速迭代开发趋势,越来越多的APP中嵌入了html网页,但在一些大中型APP中,尤其是电商类APP,html页面已经不仅仅满足展示功能,这时html要求能与原生语言进行交互.相互传值. ...
- ios UIWebView自定义Alert风格的弹框
之前开发过一个App,因为公司之前写好了网页版的内容和安卓版本的App,我进去后老板要求我ios直接用网页的内容,而不需要自己再搭建框架.我一听,偷笑了,这不就是一个UIWebView吗?简单! 但是 ...
- React Native之ListView使用
前言 学习本系列内容需要具备一定 HTML 开发基础,没有基础的朋友可以先转至 HTML快速入门(一) 学习 本人接触 React Native 时间并不是特别长,所以对其中的内容和性质了解可能会有所 ...
- [Erlang 0122] Erlang Resources 2014年1月~6月资讯合集
虽然忙,有些事还是要抽时间做; Erlang Resources 小站 2014年1月~6月资讯合集,方便检索. 小站地址: http://site.douban.com/204209/ ...
- SQL Server 2016 JSON原生支持实例说明
背景 Microsoft SQL Server 对于数据平台的开发者来说越来越友好.比如已经原生支持XML很多年了,在这个趋势下,如今也能在SQLServer2016中使用内置的JSON.尤其对于一些 ...
- Spark作业调度阶段分析
Spark作为分布式的大数据处理框架必然或涉及到大量的作业调度,如果能够理解Spark中的调度对我们编写或优化Spark程序都是有很大帮助的: 在Spark中存在转换操作(Transformation ...