编程组件安全性

在包含组件的 COM+ 应用程序中使用基于角色的安全性时,可以从组件内部访问编程安全功能。 可以检查角色成员身份以确定是否执行了特定代码部分,可以使用安全调用上下文对象访问安全信息,并且可以确定是否为当前调用启用了安全性。 可以使用对 SecurityCallContext 对象的引用(适用于 Microsoft Visual Basic 应用程序)或指向 ISecurityCallContext 接口(适用于 C 和 Microsoft Visual C++ 应用程序的指针)来执行所有这些任务。

有关基于角色的编程安全性的详细信息,请参阅本节中的以下主题:

模拟和 COM 安全功能

如果在不使用基于角色的安全性的 COM+ 应用程序中使用组件,则编程角色检查和安全调用上下文信息不可用。 但是,可以使用 COM 提供的编程安全功能。 有关详细信息,请参阅 COM 中的安全性。

尽管可以使用 COM 提供的大多数安全功能,但无法从 COM+ 应用程序的组件调用 CoInitializeSecurity,因为 COM+ 应用程序的代理项调用了 CoInitializeSecurity。 但是,可以调用其他安全功能,例如 CoQueryClientBlanket,用于检索有关客户端的信息。

具体而言,当需要使用客户端的标识来访问某些资源(例如,访问受安全描述符保护的文件,或传播客户端的标识到数据库)时,可以编程方式执行模拟。 有关何时以及如何执行此作的更多详细信息,请参阅 客户端模拟和委派

测试安全功能

如果在组件中使用 COM+ 编程安全性,则必须在准备好测试组件的安全功能时将组件集成到 COM+ 应用程序中。 如果使用 COM+ 编程安全性的组件在未集成到 COM+ 应用程序中的情况下运行,则会引发异常。 因此,如果要确保此类组件也能够成功集成到不属于 COM+ 环境的应用程序中,则必须确保正确处理这些异常。

记录安全要求

如果要为使用基于角色的安全性的 COM+ 应用程序编写独立组件,则需要记录组件,以便在组件集成到 COM+ 应用程序时适当配置安全性。 例如,应标识必须添加的角色,并说明应为每个角色分配哪些方法和接口。 此外,如果调用了 IsCallerInRole(“Teller”)等方法,则应描述只有 Tellers 有权访问的功能。 还应指定是否需要角色来帮助保护对整个组件的访问。

客户端身份验证

客户端模拟和委派

库应用程序安全性

多层应用程序安全性

Role-Based 安全管理

在 COM+ 中使用软件限制策略