[.NET 基于角色安全性验证] 之五:跨应用程序进行 Forms 身份验证

Asp.net中基于Forms验证的角色验证授权 Asp.net中基于Forms验证的角色验证授权Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活。Forms 验证方式对基于用户的验证授权提供了很好的支持,可以通过一个登录页面验证用户的身份,将此用户的身份发回到客户端的Cookie,之后此用户再访问这个web应用就会连同这个身份Cooki 阅读详情

MSDN 文档

ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_aspnetcon/html/99e2f9e8-5b97-4a4d-a4ed-5f93276053b7.htm

ASP.NET 支持在分布式环境中(跨单个服务器上的多个应用程序或在网络场中)进行 Forms 身份验证。如果启用了跨多个 ASP.NET 应用程序的 Forms 身份验证,则当用户在应用程序之间切换时,不需要对他们重新进行身份验证。

要配置跨应用程序的 Forms 身份验证,请在 forms 和 machineKey 配置节中设置若干属性,以便值对于参与共享 Forms 身份验证的所有应用程序都是相同的。

下面的示例演示了 Web.config 文件的 Authentication 节。除非另行说明,否则 name、protection、path、validationKey 和 decryptionKey 属性必须在所有应用程序中都完全相同。同样,用于 Cookie 数据的加密和验证密钥以及加密方案也必须完全相同。如果设置不匹配,则不能共享 Cookie。

web.config

<configuration>
   <system.web>
     <authentication mode="Forms" >
       <!-- The name, protection, and path attributes must match
       exactly in each Web.config file. -->
       <forms loginUrl="login.aspx"
         name=".ASPXFORMSAUTH"
         protection="All"
         path="/"
         timeout="30" />
     </authentication>

     <!-- Validation and decryption keys must exactly match and cannot
     be set to "AutoGenerate". The validation algorithm must also
     be the same. -->
     <machineKey
       validationKey="C50B3C89CB21F4...BE"
       decryptionKey="8A9BE8FD67AF6979E7D20198CFEA50DD3D3799C77AF2B72F"
       validation="SHA1" />
   </system.web>
</configuration>


发出 Cookie 之后,将根据 Cookie 自身中的 Expires 值跟踪 Cookie 的到期时间。这意味着如果两个应用程序具有不同的 Timeout 属性,则将在 Cookie 的整个生存期中保留最初发出每个 Cookie 时设置的到期日期和时间。当更新 Cookie 时,Cookie 的原始到期时间用于计算新到期时间。使用配置 Timeout 值的唯一时间就是最初创建 Cookie 的时间。

-----------------------------------------------------

雨痕补充

按照上述操作,我们就可以在单个或多个服务器的网络场中实现 "跨应用程序进行 Forms 身份验证",这个有点 "单点登录(SSO, Single Sign On)" 的意思,不过有几点还是要注意一下。

1. 如果使用新打开的浏览器窗体打开另外的应用程序网站,则必须创建持久 Cookie (跨浏览器会话保存 Cookie) 时,才能在多个应用程序中共享登录信息。
("新打开的浏览器窗体" 这话有点拗口,也就说这个窗体不是原浏览器弹出的,而是我们使用快捷方式新打开的进程。)

FormsAuthentication.RedirectFromLoginPage("username", true);


2. MachineKey 创建方法。

using System.Text;
using System.Security.Cryptography;

public class MachineKey
{
   const int validationKeyLength = 64;
   const int decryptionKeyLength = 24;
   private RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();

   public string GenerateKey()
   {
     return string.Format("<machineKey validationKey=/"{0}/"/r/ndecryptionKey=/"{1}/"/r/nvalidation=/"SHA1/"/>",
       BytesToHex(GenerateKeyBytes(validationKeyLength)), BytesToHex(GenerateKeyBytes(decryptionKeyLength)));
   }

   private byte[] GenerateKeyBytes(int cb)
   {
     byte[] rndData = new byte[cb];
     rng.GetBytes(rndData);
     return rndData;
   }

   private string BytesToHex(byte[] key)
   {
     StringBuilder sb = new StringBuilder();
    
     for (int i = 0; i < key.Length; ++i)
     {
       sb.Append(String.Format("{0:X2}", key[i]));
     }

     return sb.ToString();
   }
}


使用方法

protected void Page_Load(object sender, EventArgs e)
{
   Response.Write(HttpUtility.HtmlEncode(new MachineKey().GenerateKey()));
}
基于Delphi的Base64加密算法演示代码..rar 立即下载

相关推荐

Android Framework之Pkms详解

system 用户并没有访问应用程序目录的权限,但是 Installd 服务是以 root 用户启动的,可以访问 /data/data/ 下的目录,Installd 需要完成一些创建应用数据的任务。Installer 服务是 Android 提供的用于安装的服务,Installer 持有 Installd 守护进程对应的 Binder 服务的代理对象,本质上是通过 Binder 通信调用底层的 Installd 服务真正完成 APK 文件格式的优化和转换、建立相关的数据目录、删除文件、安装应用等工作。

门徒07的博客 1842

跨应用程序进行 Forms 身份验证(转)

MSDN 文档ms-help://MS.MSDNQTR.v80.chs/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_aspnetcon/html/99e2f9e8-5b97-4a4d-a4ed-5f93276053b7.htmASP.NET 支持在分布式环境中(跨单个服务器上的多个应用程序或在网络场中)进行 Forms 身份验证。如果启用了跨多个 ASP.NET ...

weixin_34219944的博客 192

手把手教你搭建幽冥传奇手游:从环境配置到常见Bug修复(附完整避坑指南)

本文详细指导如何从零搭建幽冥传奇手游,涵盖服务器选型、数据库部署、双区架构配置等关键步骤,并提供通天塔闪退、技能显示异常等常见Bug的修复方案。附完整避坑指南,帮助开发者高效解决90%的典型问题,确保游戏稳定运行。

weixin_29232121的博客 244

跨应用程序进行 Forms 身份验证

ASP.NET 支持在分布式环境中(跨单个服务器上的多个应用程序或在网络场中)进行 Forms 身份验证。如果启用了跨多个 ASP.NET 应用程序的 Forms 身份验证,则当用户在应用程序之间切换时,不需要对他们重新进行身份验证。 配置跨应用程序的 Forms 身份验证 若要配置跨应用程序的 Forms 身份验证,对于参与共享的 Forms 身份验证的所有应用程序,应将 Web.config...

weixin_34318326的博客 182

华为云HCS解决方案笔记HUAWEI CLOUD Stack【面试篇】

华为云解决方案介绍、华为云服务介绍,华为云网络平面规划等

weixin_48375618的博客 1万+

希捷硬盘卡死修复实战:U盘启动盘制作与低格清零全流程

机械硬盘使用多年后常出现卡顿、假死、坏道等问题,很多用户在网上搜索“希捷硬盘低格工具”或“U盘硬盘复活器”,却发现要么工具不明,要么操作不当造成二次损伤。其实所谓修复工具,本质是U盘启动环境配合硬盘检测与清零软件,低格并非修复物理坏道,而是通过全盘写零触发主控重映射,隔离不稳定扇区。懂原理后,用官方SeaTools、Ventoy/U盘启动盘、Victoria或Linux dd等组合工具,即可对可抢救的硬盘做清零修复。这一技术适用于逻辑坏道、SMART警告、扇区不稳定等场景,但需先备份数据并判断盘体是否有异响

weixin_30431445的博客 217

如何通过 Active Directory 使用 Forms 身份验证

如何通过 Active Directory 使用 Forms 身份验证发布日期: 10/28/2004 | 更新日期: 10/28/2004浏览全部“安全性指南”主题Microsoft Corporation目标本模块用于: •创建使用 Forms 身份验证来针对 Active Directory 对用户进行身份验证的 Web 应

江湖·郎中·路 3168

Verilog 并行 FIR 滤波器设计

FIR(Finite Impulse Response)滤波器是一种有限长单位冲激响应滤波器,又称为非递归型滤波器。FIR 滤波器具有严格的线性相频特性,同时其单位响应是有限长的,因而是稳定的系统,在数字通信、图像处理等领域都有着广泛的应用。

m0_61687959的博客 1604

[.NET 基于角色安全性验证] 之二:ASP.NET Forms 身份验证流程分析

MSDN 中提及 FormsAuthenticationModule 在 Forms 身份验证中起到了关键作用,那么这背后究竟隐藏了什么?本分将简要分析 Forms 身份验证流程,以便让大家更加清楚地了解并使用它。FormsAuthenticationModule 是一个 Http Module,Forms 身份验证通过 FormsAuthenticationModule 参与 ASP.NET 页

大伟先生 888

华为手环实时心率数据导出到UWP项目中

hello大家好呀O(∩_∩)O最近在做毕设 其中有个小功能要用到实时心率数据。查找网上的资料发现只有小米手环的实时心率数据导出但是没有华为手环的,我试了华为手环但是并不能行得通哈哈哈。现在分享一下华为手环实时心率数据导出的代码。

apple_63713858的博客 1581

PCIE的MSI中断处理机制与优化策略

PCIe设备的。

xiaoheshang_123的博客 518

使用 Forms 身份验证创建 GenericPrincipal 对象

摘要 如果您使用的自定义身份验证机制不以 Windows 帐户为基础,那么要在 Web 应用程序中使用基于 Microsoft .NET 角色的安全性,您必须直接负责创建 ASP.NET 身份验证票和配置 IPrincipal 实例。这些身份验证票代表经过身份验证的用户的标识和角色。 本模块描述了如何创建一个使用 Forms 身份验证对用户进行身份验证的 Web 应用程序,以及如何创建一个包含...

weixin_33895695的博客 286

1、初探 Tiny Machine Learning

Tiny Machine Learning(TinyML)是机器学习与嵌入式系统的融合领域,致力于在资源受限的微控制器上运行AI模型。本文介绍了机器学习基础、TinyML的核心概念、应用领域(如智能家居、工业物联网、医疗保健)、面临的挑战(如资源限制、模型压缩、数据质量),以及从硬件准备到模型部署的实践步骤。通过利用训练与推理的资源不对称性,可在PC上训练模型并部署至低功耗设备进行实时推理,推动边缘智能的发展。

loss4bartender的博客 122

[.NET 基于角色安全性验证] 之三:ASP.NET Forms 身份验证

 在开发过程中,我们需要做的事情包括:1. 在 web.config 中设置 Forms 身份验证相关参数。2. 创建登录页。登录页中的操作包括:1. 验证用户名和密码是否正确。2. 创建身份验证票证对象。3. 将身份验证票证对象加密成字符串,写入 Cookies。4. 重定向到原始请求 URL。1. 简单演示web.config                                

CafeeJ的专栏 505

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

[.NET 基于角色安全性验证] 之三:ASP.NET Forms 身份验证(转)

在开发过程中,我们需要做的事情包括:1. 在 web.config 中设置 Forms 身份验证相关参数。2. 创建登录页。登录页中的操作包括:1. 验证用户名和密码是否正确。2. 创建身份验证票证对象。3. 将身份验证票证对象加密成字符串,写入 Cookies。4. 重定向到原始请求 URL。1. 简单演示web.config<?xml version="1.0"?>&lt...

diaodai2269的博客 157

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

学习Forms身份验证

Forms身份验证基本原理 要采用Forms身份验证,先要在应用程序根目录中的Web.config中做相应的设置: <authentication mode="forms"> <forms name=".ASPXAUTH " loginUrl="/login.aspx" timeout="30" path= "/"></forms>...

dkenp04020的专栏 282

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Asp.Net中基于Forms验证的角色验证授权--转

Asp.Net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活。 Forms 验证方式对基于用户的验证授权提供了很好的支持,可以通过一个登录页面验证用户的身份,将此用户的身份发回到客户端的Cookie,之后此用户再访问这个web应用就会连同这个身份Cookie一起发送到服务端。服务端上的授权设置就可以根据不同目...

dengying0469的博客 175

Asp.net身份验证Membership与授权——身份验证配置(1)

用户的身份验证和授权是从用户处获取用户凭据如用户名和密码,并通过某些授权机构验证那些凭据的过程。如果这些凭据有效,则视为通过身份验证上,在身份得到验证后,并确定该身份是否可以访问特定资源。几乎所有的web站点和基于浏览器的系统中都会使用的功能,例如:新建、修改、删除用户和角色,为用户分配角色,管理角色中的用户等等。身份验证是确认用户身份的过程,就是解决是谁的问题,在用户通过身份验证后,可以确定该用

了空 2828
上一篇: [.NET 基于角色安全性验证] 之四:ASP.NET 2.0 成员资格和角色管理授权
下一篇: 有关 Session 操作的几个误区
yangfcf
博客等级 码龄19年 10粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值