Enterprise Single Sign-On (SSO) 对象模型中的许多对象都公开了 IPropertyBag 接口,该接口允许修改指定对象的行为。 如果在 SSO 对象上调用 QueryInterface,则可以检索 IPropertyBag 接口,并使用它来更改当前对象的行为。
更改指定 SSO 接口的行为
在指定的接口上使用 QueryInterface 检索 IPropertyBag 实例。
使用 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 信息发送到哪个服务器的标准行为如下所示:
查找当前用户的注册表。 可以使用命令行工具或 GUI 为当前用户设置服务器名称。
在注册表中查找所有用户。 可以使用命令行工具或 GUI 为所有用户设置服务器名称。
如果在注册表中找不到 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 还允许你通过轮询方法来检查任务是否完成。