COM+ 基于角色的安全性和 .NET Framework

.NET Framework 提供了将托管代码与 COM+ 安全服务集成的机制。此功能依赖于与执行代码关联的 Windows NT 标记作为标识的基础。

基于角色的安全性

基于角色的安全性允许您定义应用程序的角色,这样,可以基于这些角色中的成员资格,在组件、方法或接口级别上对应用程序进行授权。COM+ 和 .NET Framework 都允许您定义应用程序级别的角色。.NET Framework 和 COM+ 基于角色的安全机制是相互独立的,在单个应用程序内只能使用一种机制。

COM+ 安全性依赖于 Windows NT 帐户和进程/线程模拟。如果托管代码提供身份验证服务,那么在调用任何 COM 对象之前,它必须获得 Windows NT 安全标记并进行模拟。

应用程序和组件访问控制

COM+ 允许您在应用程序级别或类级别启用安全性。通过使用 ApplicationAccessControlAttribute 属性设置应用程序级别安全性,如以下示例代码中所示。

[assembly: ApplicationAccessControl (AccessChecksLevel=AccessChecksLevelOption. ApplicationComponent)]

可使用 ApplicationApplicationComponent 属性为应用程序配置访问检查的粒度。前者仅在应用程序级别启用访问检查。不在组件、接口或方法级别进行访问检查。如果调用方是在应用程序中定义的至少一个角色的成员,则对任何对象、接口或方法的调用都将成功。后者可在每个级别启用访问检查。使用 ApplicationComponent 要有用得多,因为它指示在组件、接口和方法级别应用基于角色的访问检查。

使用 ApplicationComponent 属性将只启用组件级别的访问检查。要实际确保对特定的组件执行访问检查,必须使用 ComponentAccessControlAttribute 属性。

可通过使用 ComponentAccessControlAttribute 属性启用组件级别的安全性。该属性可应用于类(如以下示例代码中所示)、接口或方法。

[ComponentAccessControl(true)]
public class CreditAccount : ServicedComponent
{
}

在设置组件的安全性之前,必须对承载该组件的应用程序启用安全性。只有在对程序集应用 ApplicationAccessControlAttribute 属性并将 ApplicationAccessControlAttribute 属性设置为 ApplicationComponent 时,才会进行访问检查。

启用安全控制的级别确定了何时检查调用方的角色成员资格。下表描述了如何根据启用的是应用程序安全性还是组件安全性来检查调用方角色成员资格。

应用程序安全性 组件安全性 何时检查角色成员资格

启用

禁用

每次调用方访问应用程序时都检查角色成员资格。

启用

启用

除了应用程序级别访问检查之外,还对启用了类级别安全性的任何类检查角色成员资格。组件级别的设置在类、接口和方法级别启用基于角色的安全性。

禁用

启用/禁用

对应用程序中的所有类禁用安全性。

将角色添加到应用程序

您可以通过使用 SecurityRoleAttribute 属性将角色添加到应用程序并将角色与组件关联,如以下示例代码中所示。

[SecurityRole("Teller", Description="Bank teller role")]
public class CreditAccount : ServicedComponent
{
}

通过此属性,您可为应用程序、组件、接口或方法创建角色并将角色分配给成员资格要求。将此属性作为一个整体应用于程序集时,可确保角色存在于 COM+ 目录中。将此属性应用于组件时,可确保角色存在于应用程序配置中,并将目标组件与该角色关联。

如果 SetEveryoneAccess 属性设置为 true,则将角色 Everyone 作为成员添加。默认值为 false,意味着没有任何用户分配给角色。相反,必须手动配置它们。

将在程序集、类、方法和接口级别支持安全角色。与其他方法属性一样,安全配置当前不在接口定义和方法实现之间共享。

SecurityCallContext 类提供对 COM+ 安全调用上下文的访问,它类似于 Visual Basic 中的 SecurityCallContext 对象,但又不完全相同。新实例不是以编程方式创建的,而是通过 CurrentCall 属性获得的。下表中描述的其余属性调用 SecurityCallContext 对象的方法。

属性 备注

Callers

在 COM+ 中从 SecurityCallContext 对象检索 Callers 项,并将该项作为 SecurityCallers 对象返回。

CurrentCall

返回对与当前调用关联的 SecurityCallContext 对象的引用。

DirectCaller

在 COM+ 中从 SecurityCallContext 对象检索 DirectCaller 项,并将该项作为 SecurityIdentity 对象返回。

MinAuthenticationLevel

在 COM+ 中从 SecurityCallContext 对象检索 MinAuthenticationLevel 项。

NumCallers

在 COM+ 中从 SecurityCallContext 对象检索 NumCallers 项。

OriginalCaller

下 COM+ 中从 SecurityCallContext 对象检索 OriginalCaller 项,并将该项作为 SecurityIdentity 对象返回。

请参见

参考

SecurityRoleAttribute
System.EnterpriseServices

概念

可用的 COM+ 服务摘要

Footer image

版权所有 (C) 2007 Microsoft Corporation。保留所有权利。