请介绍一下.net基于负责人(principal)和身份(identity)的安全机制。

ponycsdn 2003-08-25 03:24:01
搞不明白是怎么回事。书上介绍的太少了,就几句话。请大虾给指点一下。给介绍本书也行。先谢过了!
...全文
65 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
alaisalaix 2003-08-26
  • 打赏
  • 举报
回复
参考Msdn文档:“基于角色的安全性”,下文作了简单介绍

托管代码可通过 Principle 对象发现用户的标识或角色,该对象包含对 Identity 对象的引用。将标识和用户对象同用户与组帐户这样常见的概念进行比较,可能会有所帮助。在多数网络环境中,用户帐户表示人员或程序,而组帐户表示特定类别的用户及其拥有的权限。同样,.NET 框架中的标识对象表示用户,而角色表示成员条件与安全性上下文。在 .NET 框架中,用户对象同时封装标识对象和角色。.NET 框架应用程序根据用户的标识或角色成员条件(后者更常见)来向用户授予权限。

标识对象
标识对象封装有关正在验证的用户或实体的信息。在最基本的级别上,标识对象包含名称和身份验证类型。名称可以是用户名或 Windows 帐户名,而身份验证类型可以是所支持的登录协议(如 Kerberos V5)或自定义值。.NET 框架定义了一个 GenericIdentity 对象和一个更专用的 WindowsIdentity 对象;前者可用于大多数自定义登录方案,而后者可用于在希望应用程序依赖于 Windows 身份验证的情况中。此外,您还可以定义自己的标识类来封装自定义用户信息。

IIdentity 接口定义用于访问名称和身份验证类型(如 Kerberos V5 或 NTLM)的属性。所有 Identity 类均实现 IIdentity 接口。Identity 对象同执行当前线程所用的 Windows NT 进程标记之间不需要有什么关系。但是,如果 Identity 对象是 WindowsIdentity 对象,则假定标识表示 Windows NT 安全标记。

用户对象
用户对象表示运行代码的安全性上下文。实现基于角色的安全性的应用程序根据同用户对象的关联角色授予权限。同标识对象类似,.NET 框架提供 GenericPrincipal 对象和 WindowsPrincipal 对象。您还可以定义自己的自定义用户类。

IPrincipal 定义一个属性和一种方法,前者用于访问关联的 Identity 对象,而后者用于确定 Principal 对象所标识的用户是否为给定角色的成员。所有 Principal 类都实现 IPrincipal 接口以及任何必需的附加属性和方法。例如,公共语言运行库提供了 WindowsPrincipal 类,该类实现将 Windows NT 或 Windows 2000 组成员条件映射到角色的附加功能。

Principal 对象在应用程序域 (AppDomain) 中绑定到调用上下文 (CallContext) 对象。默认的调用上下文总是用每个新的 AppDomain 创建的,因此总是存在可用于接受 Principal 对象的调用上下文。创建新线程的同时也为该线程创建 CallContext 对象。Principal 对象引用从创建线程自动复制到新线程的 CallContext 中。如果运行库无法确定哪个 Principal 对象属于线程的创建者,它将遵循 Principal 和 Identity 对象创建的默认策略。

可配置的应用程序域特定策略定义了一些规则,用以决定同新的应用程序域关联的 Principal 对象类型。在安全策略的允许范围内,运行库可创建 Principal 和 Identity 对象来反射同当前执行线程关联的操作系统标记。默认情况下,运行库使用 Principal 和 Identity 对象表示未经身份验证的用户。运行库不创建这些默认的 Principal 和 Identity 对象,除非代码试图访问它们。

创建应用程序域的受信任代码可设置应用程序域策略,以控制默认 Principal 和 Identity 对象的构造。此应用程序域特定的策略适用于该应用程序域中的所有执行线程。非托管、受信任的宿主本身就具有设置此策略的能力,但托管代码必须具有控制域策略的 System.Security.Permissions.SecurityPermission 才能设置此策略。

在不同的应用程序域之间、但在同一进程内(因此在同一台计算机上)传输 Principal 对象时,远程结构将同调用方的上下文关联的 Principal 对象引用复制到接受人的上下文中。
ponycsdn 2003-08-25
  • 打赏
  • 举报
回复
不是我想要得。
gweidian 2003-08-25
  • 打赏
  • 举报
回复
http://www.codeproject.com/aspnet/formsroleauth.asp

62,074

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧