编程组件安全性

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

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

模拟和 COM 安全功能

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

虽然可以使用 COM 提供的大多数安全功能,但不能从属于 COM+ 应用程序的组件调用 CoInitializeSecurity,因为 CoInitializeSecurity 是由 COM+ 应用程序运行的代理调用的。 但是,可以调用其他安全功能,例如 CoQueryClientBlanket,用于检索有关客户端的信息。

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

测试安全功能

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

记录安全要求

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

客户端身份验证

客户端模拟和委托

库应用程序安全性

多层应用程序安全性

基于角色的安全管理

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