调用程序发出 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
指示在向合作伙伴 LU 中的节点服务分配请求上发送用户 ID。 此设置还用于指定调用的程序(使用有效的用户标识符和密码调用),进而调用另一个程序(如 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)消息之一:
如果 RU 已协商已验证安全性,SNA 服务器发送的附加将不包括由Set_Conversation_Security_Password指定的security_password参数字段的内容。
如果 LU 协商了持久性验证安全性,则 SNA 服务器发送的附加将包含由Set_Conversation_Security_Password指定的security_password参数,但前提是附加是自 LU-LU 会话开始以来由Set_Conversation_Security_User_ID设置的指定security_user_ID参数的第一个,并且将忽略所有后续附加(由应用程序或使用的任何其他应用程序颁发的)security_password参数此 LU-LU 模式三重项)。
应用程序无法判断 RU 之间已协商了哪种安全模式,也不能判断它正在发出的 分配 函数是否为该 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 应用程序的自动登录。 此功能需要网络管理员的特定配置。 必须从 SNA 服务器的客户端在 LAN 端调用 CPI-C 应用程序。 客户端必须登录到 Microsoft Windows 域,但可以是支持 SNA Server CPI-C API 的任何平台。
客户端应用程序编码为使用程序级别安全性,具有特殊的硬编码 CPI-C 用户名 MS$SAME 和密码 MS$SAME。 当此会话分配从客户端流向 SNA 服务器时,SNA 服务器将查找与登录客户端所依据的 Windows 帐户对应的主机帐户和密码,并将主机帐户信息替换为它发送到主机的 APPC 附加消息。