如何更改单个 Sign-On 接口的行为

Enterprise Single Sign-On (SSO) 对象模型中的许多对象都公开了 IPropertyBag 接口,该接口允许修改指定对象的行为。 如果在 SSO 对象上调用 QueryInterface,则可以检索 IPropertyBag 接口,并使用它来更改当前对象的行为。

更改指定 SSO 接口的行为

  1. 在指定的接口上使用 QueryInterface 检索 IPropertyBag 实例。

  2. 使用 IPropertyBag.Write 设置接口的属性、类型和值。

    下表描述了 IPropertyBag propName 和 ptrVar 参数的有效值。

属性名称 (propName) 类型 ptrValue 可用于
当前SSO服务器 VT_BSTR 要向其发送信息的服务器的名称 全部
交易 VT_UNKNOWN

VT_EMPTY
一个 DTC ITransaction 指针,或使用 NULL 来清除范围。 ISSOConfigStore::SetConfigInfo
ISSOConfigStore::GetConfigInfo
ISSOConfigStore::DeleteConfigInfo

ISSOAdmin::CreateApplication
ISSOAdmin::DeleteApplication
ISSOAdmin::UpdateApplication
ISSOAdmin::CreateFieldInfo

ISSOMapper::GetFieldInfo
应用筛选标志 VT_I4

VT_UI4
用于控制要筛选的应用程序的标志。 ISSOMapper::GetApplications

ISSOMapper2::GetApplications2
AppFilterFlagsMask VT_I4

VT_UI4
用于控制要筛选的应用程序的标志掩码。 ISSOMapper::GetApplications

ISSOMapper2::GetApplications2
AsyncCall VT_BOOL 若要使用异步 RPC 进行调用,则为 True;如果为 false,则使用同步 RPC。 ISSOConfigOM::GetServerStatus

ISSOAdmin::GetGlobalInfo
  • CurrentSSOServer:确定将 SSO 信息发送到哪个服务器的标准行为如下所示:

    1. 查找当前用户的注册表。 可以使用命令行工具或 GUI 为当前用户设置服务器名称。

    2. 在注册表中查找所有用户。 可以使用命令行工具或 GUI 为所有用户设置服务器名称。

    3. 如果在注册表中找不到 SSO 服务器名称,请使用当前计算机。

      将 CurrentSSOServer 设置为指定服务器会替代指定接口的上一个进程。 设置 CurrentSSOServer 后,接口上的所有后续方法调用都将发送到指定的服务器。

  • 事务:指定一个 DTC 事务,用于限定 SSO 对象模型执行的操作范围。 必须在ptrValue中传入 DTC ITransaction 指针,或者传入“null”以清除当前事务范围。

  • AppFilterFlags/AppFilterMask:控制从 ISSOMapper.GetApplications 和 ISSOMapper2.GetApplications 返回的应用程序类型。 如果应用程序标志与筛选器标志及其掩码匹配,则返回结果。 执行应用程序筛选的一种方法是将 AppFilterFlagsMask 设置为SSO_FLAG_APP_FILTER_BY_TYPE,然后将 AppFilterFlags 设置为以下一个或多个:

    单点登录_应用类型_个人

    SSO_APP_TYPE_GROUP

    单点登录应用类型配置存储

    SSO_APP_TYPE_HOST_GROUP (SSO应用类型主机组)

    SSO_APP_TYPE_PS_ADAPTER

    SSO_APP_TYPE_PS_GROUP_ADAPTER

  • AsyncCall:如果为 true,则 SSO 将使用异步远程过程调用(RPC)执行该方法。 该方法将在进行时返回E_PENDING。 任何其他返回值都指示方法已完成。 AsyncCall 还允许你通过轮询方法来检查任务是否完成。