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 身份认证的更多相关文章

  1. Asp.net身份认证记录

    基础知识 身份标识在客户端主要是两个存储位置: cookie 常用 url 很少用 url作为cookie禁用的备选方案 form 几乎不用 很麻烦,每次请求都必须是form提交方式 authoriz ...

  2. asp.net身份认证

    在网上看到几篇比较好的文章很详细讲解了Form.Membership.以及Identity身份认证 Form身份认证: http://www.cnblogs.com/fish-li/archive/2 ...

  3. 细说ASP.NET Forms身份认证

    阅读目录 开始 ASP.NET身份认证基础 ASP.NET身份认证过程 如何实现登录与注销 保护受限制的页面 登录页不能正常显示的问题 认识Forms身份认证 理解Forms身份认证 实现自定义的身份 ...

  4. 转:细说ASP.NET Windows身份认证

    转自:https://www.cnblogs.com/fish-li/archive/2012/05/07/2486840.html 细说ASP.NET Windows身份认证 阅读目录 开始 认识A ...

  5. 认识ASP.NET Windows身份认证

    本文摘自:细说ASP.NET Windows身份认证 Forms身份认证虽然使用广泛,不过,如果是在 Windows Active Directory 的环境中使用ASP.NET, 那么使用Windo ...

  6. 细说ASP.NET Windows身份认证

    上篇博客我谈到了一些关于ASP.NET Forms身份认证方面的话题,这次的博客将主要介绍ASP.NET Windows身份认证. Forms身份认证虽然使用广泛,不过,如果是在 Windows Ac ...

  7. ASP.NET Forms身份认证详解

    ASP.NET身份认证基础 在开始今天的内容之前,我想有二个最基础的问题首先要明确: 1. 如何判断当前请求是一个已登录用户发起的? 2. 如何获取当前登录用户的登录名? 在标准的ASP.NET身份认 ...

  8. Asp.net MVC使用FormsAuthentication,MVC和WEB API可以共享身份认证 (转载)

    在实际的项目应用中,很多时候都需要保证数据的安全和可靠,如何来保证数据的安全呢?做法有很多,最常见的就是进行身份验证.验证通过,根据验证过的身份给与对应访问权限.同在Web Api中如何实现身份认证呢 ...

  9. 类型:.net;问题:asp.net window验证;结果:细说ASP.NET Windows身份认证

    细说ASP.NET Windows身份认证 阅读目录 开始 认识ASP.NET Windows身份认证 访问 Active Directory 在ASP.NET中访问Active Directory ...

随机推荐

  1. wamp 服务器安装问题 及cmd常用命令 和 php mysql数据库常用cmd命令集

    1   官网下载wamp软件包,根据提示安装 2   目录结构:   wamp:   bin/为套件目录 包括mysql apache php log   日志记录 alias 配置 apps 数据库 ...

  2. WEB基础原理——理论复习

    基本WEB原理 1. Internet同Web的关系 1.1互联网 全世界最大的局域网. 来源美国国防部的项目用于数据共享 没有TCP/IP之前最开始只能1000台电脑通信(军用协议) 1.2 万维网 ...

  3. Tomcat 配置详解/优化方案

     转自:http://blog.csdn.net/cicada688/article/details/14451541 Service.xml Server.xml配置文件用于对整个容器进行相关的配置 ...

  4. UINavigationController

    知识点: 1)UINavigationController 2)UINavigationBar 3)UINavigationItem 4)UIToolBar ===================== ...

  5. iOS 10 开发适配系列 之 权限Crash问题

    升级 iOS 10 之后目测坑还是挺多的,记录一下吧,看看到时候会不会成为一个系列. 直入正题吧 今天用一个项目小小练下手,发现调用相机,崩了.试试看调用相册,又特么崩了.然后看到控制台输出了以下信息 ...

  6. When I see you again(加密原理介绍,代码实现DES、AES、RSA、Base64、MD5)

    关于网络安全的数据加密部分,本来打算总结一篇博客搞定,没想到东西太多,这已是第三篇了,而且这篇写了多次,熬了多次夜,真是again and again.起个名字:数据加密三部曲,前两部链接如下: 整体 ...

  7. 体验Rabbitmq强大的【优先级队列】之轻松面对现实业务场景

    说到队列的话,大家一定不会陌生,但是扯到优先级队列的话,还是有一部分同学是不清楚的,可能是不知道怎么去实现吧,其实呢,,,这东西已 经烂大街了...很简单,用“堆”去实现的,在我们系统中有一个订单催付 ...

  8. Linux基础练习题

    1.列出当前系统上所有已经登录的用户名,注意:同一个用户登录多次,则只显示一次即可. [root@bj-1-160-enzhi ~]# who|cut -d ' ' -f 1|uniq -c 2 ro ...

  9. IOS错误Could not produce class with ID

    运行环境 Unity 5.3.5f1 (IL2CPP)编译IOS版本 XCode Version 7.2.1 (7C1002) Mac OS X 10.11.3 (15D21) (Mac mini) ...

  10. oracle函数

    oracle中函数分为3大类,分别为:单行函数,分组函数,分析函数. 1.单行函数 单行函数同时只能对一行进行操作,且对输入的每一行返回一行输出结果. 单行函数还分为:字符函数,数子函数,日期函数,转 ...