4、配置身份验证

配置身份验证

Asp.net Framework支持三种验证类型
Windows身份验证
.net Passport身份验证
Forms身份验证

对于特定程序,同一时刻只能启用一种身份验证方式

默认情况下,系统将启用Windows身份验证。验证用户职责委派给了IIS
.Net Passport身份验证是诸如MSN和Hotmail这样的微软Web站点使用的验证类型。
Forms身份验证。启用Forms身份验证后,通常会使用Cookie来验证用户。

Web.Config
[code]
<configuration>
<system.web>
<authentication mode="Forms">
</authentication>
</system.web>
</configuration>
[/code]

1、配置Forms身份验证
Forms身份验证的几个配置选项如下所示:
cookieless 不支持Cookie时也可以使用Forms身份验证 UseCookies,UseUri,AutoDetect和UseDeviceProfie默认值 UseDeviceProfie
defaultUrl 用于指定用户通过身份验证后转向的页面,默认值:default.aspx
domain 用于指定与验证Cookie相关的域,默认为空字符串
enableCrossAppRedirects 用于通过传递查询字符串中的验证凭证来在应用程序之间验证用户。默认:false
loginUrl    用于指定Login页面的路径。默认:Login.aspx
name 用于指定验证cookie的名字。默认:.ASPXAUTH
path 用于指定和验证cookie相关联的路径。默认值:/
protection 用于指定如何对验证cookie进行加密。取值:All,Encryption,None和Validation。默认:ALL
requiressSSL 用于指定在传递验证Cookie时是否需要使用SSL连接,默认False
slidingExpiration 用于防止验证Cookie在一段时间内的再次访问中过期。取值:true,false 默认:true
timeout 用于指定验证Cookie有多少分钟后过期。默认30

<?xml version="1.0"?>

<configuration>
<system.web>
<authentication mode="Forms">
<forms name="s2_2"/>
</authentication>
</system.web>
</configuration>

2、使用无Cookie的Forms身份验证
Forms身份验证通常是使用Cookie来识别用户。有不支持Cookie的,可以用无Cookie身份验证功能。
启用无Cookie身份验证功能后,将通过一串添加到页面URL中的唯一字符串标识来识别用户。
如果用户在应用程序的相关页面间来回导航,那么字符串标识也将自动地在这些页面间进行传递,同时应用程序会在这样的页面交叉请求中自动识别用户。
如果希望ASP.NET Framework能自动检测浏览器是否支持Cookie功能,必须将Cookieless特性设置为AutoDetect。
[code]
<?xml version="1.0"?>

<configuration>
<system.web>
<authentication mode="Forms">
<forms cookieless="AutoDetect"/>
</authentication>
</system.web>
</configuration>
[/code]

3、在Forms身份验证中使用相对超时限制
用户在一段30分钟时间间隔内即使没有请求任何页面,该用户也仍然处于已验证状态。如果用户在合法登录后越过30分钟未访问任何页面,那么该用户将自动登出应用程序。
[code]
<?xml version="1.0"?>

<configuration>
<system.web>
<authentication mode="Forms">
<forms slidingExpiration="false" timeout="1"/>
</authentication>
</system.web>
</configuration>
[/code]
强制用户每分钟都进行一次登录。

4、跨应用程序使用Forms身份验证
问题:
1.不希望公司的员工在公司不同的应用程序间切换时时行多次登录
2.在运行一个Web服务器集群(web farm ),不希望用户在访问不同的Web服务器时都进行登录。

通过Web配置文件的machineKey元素,可以设置该加密密钥和校验码。
[code]
<?xml version="1.0"?>

<configuration>
<system.web>
<machineKey decryption="Auto" validation="SHA1" decryptionKey="AutoGenerate,IsolateApps" validationKey="AutoGenerate,IsolateApps"/>
<authentication mode="Forms">
<forms slidingExpiration="false" timeout="1"/>
</authentication>
</system.web>
</configuration>
[/code]

GenerateKeys.aspx
[code]
<%@ Page Language="C#" %>

<%@ Import Namespace="System.Security.Cryptography" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

protected void Page_Load(object sender, EventArgs e)
{
lblAES.Text = GetSequence(64);
lblSHA1.Text = GetSequence(128);
}

private string GetSequence(int length)
{
byte[] buffer = new byte[length / 2];
RNGCryptoServiceProvider provider = new RNGCryptoServiceProvider();
provider.GetBytes(buffer);
StringBuilder builder = new StringBuilder(length);
for (int i = 0; i < buffer.Length; i++)
builder.Append(string.Format("{0:X2}", buffer[i]));
return builder.ToString();
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
AES:
<asp:Label ID="lblAES" runat="server" />
<br />
<br />
SHA1:
<asp:Label ID="lblSHA1" runat="server" />
</div>
</form>
</body>
</html>
[/code]

显示指定了密钥的MachineKey元素,可以加入服务器根目录的Web配置文件。

5、跨域使用Forms身份验证
P62

6、使用FormsAuthentication类
使用Forms身份验证的主要API是FormsAuthentication类。
属性:

cookieDomain 返回身份验证Cookie关联的域
cookieMode 返回无Cookie身份验证模式。
cookieSupported 支持cookie 并Forms启用了cookie功能,返回true
DefaultUrl 验证成功后所转向的页面URL
EnableCrossAppRedirects 当身份验证凭证从查询字符串中删除时,该属性返回True
FormsCookieName 返回身份验证Cookie的名字
FormsCookiePath 返回和身份验证Cookie相关联的路径
LoginUrl 返回和用户身份验证时所转向的页面URL
RequiredSSL
SlidingExpiration 相对超时限制策略
方法:
Authenticate 根据存储在Web配置文件中的用户名和密码清单来验证输入的用户名和密码
Decrypt 用于解密身份验证Cookie
GetAuthCookie 用于获取身份验证Cookie
GetRedirectUrl 用于获取重定向到Login页面之前的原始页面路径
HashPasswordForStoringInConfigFile 对将要存入Web配置文件中的密码进行散列
RedirectFromLoginPage 使用返回重定向到Login页面前的原始页面
RedirectToLoginPage 将用户请求重定向到Login页面
RenewTicketIfOld 用于更新身份验证cookie的过期时间
SetAuthCookie 创建和发布身份验证Cookie
SignOut 移除身份验证Cookie并同时使用户登出应用程序

7、使用User类
通过Page.User或HttpContext.User属性可以获取当前用户的用户信息。

2011-5-4 10:07:23 danny
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值