Set_Conversation_Security_Type (CPI-C)
调用程序发出 Set_Conversation_Security_Type 调用 (函数名称 cmscst) ,以指定合作伙伴逻辑单元 (LU) 验证对调用程序的访问权限所需的信息。
语法
CM_ENTRY Set_Conversation_Security_Type(
unsigned char FAR *conversation_ID,
CM_INT32 FAR *conversation_security_type,
CM_INT32 FAR *return_code
);
参数
conversation_ID
提供的参数。 指定会话的标识符。 此参数的值由 Initialize_Conversation 返回。
conversation_security_type
提供的参数。 指定合作伙伴 LU 验证对调用程序的访问权限所需的信息。 根据在配置期间为调用的程序建立的会话安全性,使用以下值之一:
CM_SECURITY_NONE
指示调用的程序不使用会话安全性。
CM_SECURITY_PROGRAM
指示调用的程序使用会话安全性,因此需要用户标识符和密码。
CM_SECURITY_SAME
指示用户 ID 在分配请求上发送到伙伴 LU 中的节点服务。 此设置还用于指定调用的程序(使用有效的用户标识符和密码调用)反过来调用另一个程序 (,如 TP) 之间的通信 中所示。 例如,假设程序 A 使用有效的用户标识符和密码调用程序 B,而程序 B 反过来又调用程序 C。如果程序 B 指定CM_SECURITY_SAME值,CPI-C 将发送程序 C 的 LU、程序 A 中的用户标识符和已验证的指示器。 如果程序 C 配置为接受已验证的指示器) ,此指示器会告知程序 C 不需要密码 (。
使用 CM_SECURITY_SAME 时,应用程序必须始终调用 Set_Conversation_Security_User_ID 和 Set_Conversation_Security_Password ,以便为 security_user_ID 和 security_password 参数提供值。 根据 SNA 服务器与对等 LU 之间协商的属性, Allocate 函数将按以下优先顺序发送 3 种附加 (FMH-5) 消息之一:
如果 LU 已协商已验证安全性,则 SNA 服务器发送的附加将不包括Set_Conversation_Security_Password指定的security_password参数字段的内容。
如果 LU 已协商持久性验证安全性,则 SNA 服务器发送的附加将包含由 Set_Conversation_Security_Password 指定的 security_password 参数,但前提是 Attach 是自 LU-LU 会话开始以来由 Set_Conversation_Security_User_ID 设置的指定security_user_ID参数的第一个,并且将在应用程序或任何其他应用程序发出的所有后续附加 (上省略 security_password 参数使用此 LU-LU 模式三元) 。
应用程序无法判断在 LU 之间协商了哪种安全模式,也无法判断它所发出的 Allocate 函数是否是该 LU-LU 模式三元组的第一个函数。 因此,当 conversation_security_type 设置为 CM_SECURITY_SAME 时,应用程序必须始终调用 Set_Conversation_Security_User_ID 和 Set_Conversation_Security_Password 来设置security_user_ID和security_password参数。
有关持久验证和已验证的安全性的详细信息,请参阅 SNA 格式指南“FM 标头 5:附加 (LU 6.2) ”部分。
如果要使用 CPI-C 自动登录功能,则必须将此参数设置为 CM_SECURITY_PROGRAM。 有关详细信息,请参阅本主题后面的“备注”部分。
return_code
从此调用返回的代码。 本主题后面列出了有效的返回代码。
返回代码
CM_OK
主返回代码;调用已成功执行。
CM_PROGRAM_STATE_CHECK
主返回代码;会话未处于 INITIALIZE 状态。
CM_PROGRAM_PARAMETER_CHECK
主返回代码; 由 conversation_ID 或 conversation_security_type 指定的值无效。
CM_PRODUCT_SPECIFIC_ERROR
主返回代码;发生特定于产品的错误,并且已记录在产品错误日志中。
状态更改
会话必须处于 INITIALIZE 状态。
没有状态更改。
注解
此调用从 Initialize_Conversation 指定的侧信息替代初始安全类型。 发出分配后,无法发出此调用。
如果会话安全类型设置为 CM_SECURITY_NONE,则分配会话时将忽略用户标识符和密码。
CM_SECURITY_SAME会话安全类型适用于具有相同用户 ID 集且接受在一个节点上执行的用户验证以验证所有节点的用户的节点之间。 本例中不使用密码,但用户 ID 的初始验证除外。
Host Integration Server 支持 CPI-C 应用程序的自动登录。 此功能需要网络管理员进行特定配置。 必须在 LAN 端从 SNA 服务器的客户端调用 CPI-C 应用程序。 客户端必须登录到 Microsoft Windows 域,但可以是支持 SNA 服务器 CPI-C API 的任何平台。
客户端应用程序编码为使用程序级安全性,具有特殊的硬编码 CPI-C 用户名 MS$SAME 和密码 MS$SAME。 当此会话分配从客户端流向 SNA 服务器时,SNA 服务器会查找与客户端登录所用的 Windows 帐户对应的主机帐户和密码,并将主机帐户信息替换为它发送给主机的 APPC 附加消息。