共用方式為


分配

動詞 ALLOCATE 是由調用交易程式(TP)所發出。 它會在本機邏輯單元(LU)和夥伴單元(LU)之間分配會話,並搭配RECEIVE_ALLOCATE,在呼叫的 TP 和被呼叫的 TP 之間建立通話。 成功執行此動詞之後,APPC 會產生交談標識碼(conv_id)。 conv_id是所有其他APPC交談動詞命令的必要參數。

下列結構描述 ALLOCATE 動詞動詞所使用的動詞控件區塊。

語法

  
struct allocate {  
    unsigned short   opcode;  
    unsigned char    opext;  
    unsigned char    reserv2;  
    unsigned short   primary_rc;  
    unsigned long    secondary_rc;  
    unsigned char    tp_id[8];  
    unsigned long    conv_id;  
    unsigned char    conv_type;  
    unsigned char    synclevel;  
    unsigned char    reserv3[2];  
    unsigned char    rtn_ctl;  
    unsigned char    reserv4;  
    unsigned long    conv_group_id;  
    unsigned long    sense_data;  
    unsigned char    plu_alias[8];  
    unsigned char    mode_name[8];  
    unsigned char    tp_name[64];  
    unsigned char    security;  
    unsigned char    reserv5[11];  
    unsigned char    pwd[10];  
    unsigned char    user_id[10];  
    unsigned short   pip_dlen;  
    unsigned char FAR * pip_dptr;  
    unsigned char    reserv7;  
    unsigned char    fqplu_name[17];  
    unsigned char    reserv8[8];  
    unsigned long    proxy_user;  
    unsigned long    proxy_domain;  
    unsigned char    reserv9[16];  
};   

成員

opcode
提供的參數。 指定動詞操作代碼,AP_B_ALLOCATE。

opext
提供的參數。 指定動詞作業延伸模組,AP_BASIC_CONVERSATION。 如果已設定AP_EXTD_VCB位,這表示使用動詞控件區塊的擴充版本。 在此情況下, ALLOCATE 結構包含同步點支援或特殊許可權 Proxy 功能支援。

reserv2
保留欄位。

primary_rc
傳回的參數。 指定 APPC 在指令完成時設定的主要傳回碼。 有效的傳回碼會根據所發出的APPC動詞而有所不同。 如需此動詞的有效錯誤碼,請參閱 Return Codes。

secondary_rc
傳回的參數。 指定APPC在動詞完成時所設定的次要傳回碼。 有效的返回代碼會根據所發出的APPC指令而有所不同。 如需這個動詞的有效錯誤碼,請參閱傳回碼。

tp_id
提供的參數。 識別本機 TP。 此參數的值是由 TP_STARTED 傳回。

conv_id
傳回的參數。 識別兩個TP之間的交談內容。

conv_type
提供的參數。 僅供ALLOCATE使用,以指定要配置的交談類型,交談類型可以是AP_BASIC_CONVERSATION或AP_MAPPED_CONVERSATION。

如果 ALLOCATE 建立映射交談,本機 TP 必須使用基本交談動詞,並提供自己的映射層,以將數據記錄轉換為邏輯記錄,再將邏輯記錄轉換回數據記錄。 合作夥伴 TP 可以發出基本交談動詞並提供對應層,或者可以使用對應對話動詞(如果夥伴 TP 正在使用支援對應交談動詞的 APPC 實作)。 如需詳細資訊,請參閱 IBM SNA 手冊(s)。

synclevel
提供的參數。 指定交談的同步處理層級。 它會判斷 TP 是否可以要求確認接收數據,以及確認收到數據。

  • AP_NONE指定不會在此交談中使用確認處理。

  • AP_CONFIRM_SYNC_LEVEL指定 TP 可以使用此交談中的確認處理。

  • AP_SYNCPT指定 TP 可以使用此交談中的同步點層級 2 確認處理。

    reserv3
    保留欄位。

    rtn_ctl
    提供的參數。 指定本機 LU 在本機 TP 的工作階段要求上運作時,應該將控制權傳回至本機 TP。 如需會話的相關訊息,請參閱 關於交易程式

  • AP_IMMEDIATE 指定 LU 配置一個已贏得競爭的會話(若有立即可用),並將控制權傳回 TP。

  • AP_WHEN_SESSION_ALLOCATED指定在配置會話之前,LU 不會將控制權傳回 TP,或遇到本主題中傳回碼中所述的其中一個錯誤。 (如果會話限制為零,LU 會立即傳回控制權。)如果會話無法使用,TP 會等待一個會話。

  • AP_WHEN_SESSION_FREE 指定如果有一個可以使用或可以啟動的競爭者或非競爭者會話,LU 將配置該會話,並將控制權傳回給 TP。 如果發生錯誤(如本主題中的傳回碼所述),呼叫會立即返回,並在 primary_rcsecondary_rc 欄位中顯示錯誤。

  • AP_WHEN_CONWINNER_ALLOCATED 指定 LU 會在配置爭用獲勝者的會話或遇到本主題中傳回碼中所述的某一個錯誤之前,不會傳回控制。 (如果會話限制為零,LU 會立即傳回控制權。)如果會話無法使用,TP 會等候可用的會話。

  • AP_WHEN_CONV_GROUP_ALLOCATED指定在配置 conv_group_id指定的會話之前,LU 不會將控制權傳回 TP,或遇到本主題中傳回碼中所述的其中一個錯誤。 如果會話無法使用,TP 會等候它變成免費狀態。

備註

AP_IMMEDIATE 是 rtn_ctl 的值中唯一一個永遠不會導致新會話啟動的選項。 對於除了AP_IMMEDIATE以外的值,如果無法立即使用適當的會話,主機整合伺服器會嘗試啟動一個新的會話。 這會啟動隨選連線。

reserv4
保留欄位。

conv_group_id
提供/傳回的參數。 指定會話應該從中配置之交談群組的標識碼。 只有當 rtn_ctl 設定為 WHEN_CONV_GROUP_ALLOC 時,才需要 conv_group_id。 當rtn_ctl 指定不同的值,而當primary_rc 為 AP_OK 時,這將作為一個傳回的值。

sense_data
傳回的參數。 指出配置錯誤(重試或無重試),並包含感知數據。

plu_alias
提供的參數。 指定本機 TP 已知夥伴 LU 的別名。

plu_alias必須符合設定期間建立的夥伴 LU 名稱。

參數是8位元組的 ASCII 字元字串。 它可以包含下列 ASCII 字元:

  • 大寫字母

  • 數位 0 到 9

  • 空格

  • 特殊字元 $、#、%和@

    此字串的第一個字元不能是空格。

    如果此參數的值少於八個字節,請使用 ASCII 空格(0x20)將它放在右邊。

    如果您想要使用 fqplu_name 參數指定夥伴 LU,請使用二進位零填入此參數。

    對於使用 TP、5250 模擬器以及 APPC 應用程式的用戶或使用群組,系統管理員可以指派預設的本地和遠端 LU。 在此情況下,欄位會保留空白或 Null,而且當使用者或群組成員啟動 APPC 程式時,就會存取預設 RU。 如需預設 LUs 的詳細資訊,請參閱 Microsoft 主機整合伺服器說明。

    mode_name
    提供的參數。 指定組態期間定義的一組網路特性名稱。

    mode_name的值必須符合設定期間與夥伴 LU 相關聯的模式名稱。

    參數是8位元組 EBCDIC 字元字串。 它可以由 A EBCDIC 字元集型態的字元組成:

  • 大寫字母

  • 數位 0 到 9

  • 特殊字元 $、#、 和@

    字串中的第一個字元必須是大寫字母或特殊字元。

    請勿在對應的交談中使用 SNASVCMG。 SNASVCMG 是 APPC 內部使用的預留 mode_name 。 不建議在基本交談中使用這個名稱。

    tp_name
    提供的參數。 指定叫用的 TP 名稱。 叫用 TP 中 ALLOCATE 所指定的tp_name值必須符合叫用 TP 中RECEIVE_ALLOCATE所指定的tp_name值。

    參數是64位元組 EBCDIC 字元字串,且區分大小寫。 tp_name 參數可以包含下列 EBCDIC 字元:

  • 大寫和小寫字母

  • 數位 0 到 9

  • 特殊字元 $、#、@和句号 (.)

    如果 tp_name 小於 64 個字節,請使用 EBCDIC 空格 (0x40) 將它放在右側。

    SNA 慣例是服務 TP 名稱最多可以有四個字元。 第一個字元是0x00與0x3F之間的十六進位位元組。 其他字元來自 AE EBCDIC 字元集類型。

    安全
    提供的參數。 提供合作夥伴 LU 驗證所叫用 TP 存取權所需的資訊。

    根據在設定期間為調用的TP所建立的通訊安全性,使用下列其中一個值:

  • AP_NONE用於不使用交談安全性的已叫用 TP。

  • AP_PGM 應用於一個使用通訊安全性的叫用 TP,因此要求使用者標識碼和密碼。 透過 user_idpwd 參數提供這項資訊。

  • AP_PROXY_PGM 是為使用交談安全性並要求使用者標識碼和密碼的特權代理所叫用的 TP。 必須設定 proxy_userproxy_domain 的指標,使其指向包含要模擬之用戶名稱和網域名稱的 Unicode 字串。 應用程式不需要設定 user_idpwd 欄位。

  • AP_PROXY_SAME 用於被特殊授權的代理與提供有效使用者識別碼和密碼的情況下叫用的 TP,該 TP 隨後會叫用另一個 TP。 必須為 proxy_userproxy_domain 設定指標,以指向包含要模擬的用戶名稱和域名的 Unicode 字串。 應用程式不需要設定 user_idpwd 欄位。

    例如,假設 TP A 會叫用具有特殊許可權 Proxy 所提供的有效使用者標識碼和密碼的 TP B,而 TP B 接著會叫用 TP C。如果 TP B 指定值AP_PROXY_SAME,APPC 會將 TP C 的使用者識別碼從 TP A 和已驗證的指標傳送給 TP C 的 LU。 此指標會告知 TP C 不需要密碼(如果 TP C 設定為接受已驗證的指標)。

  • 使用交談安全性的 AP_PROXY_STRONG 特權代理叫用的 TP,因此需要特權代理機制提供的使用者標識碼和密碼。 必須為 proxy_userproxy_domain 設定指標,以指向包含要模擬用戶的用戶名稱和網域名稱的 Unicode 字串。 應用程式不需要設定 user_idpwd 欄位。 AP_PROXY_STRONG與AP_PROXY_PGM不同,因為AP_PROXY_STRONG不允許純文本密碼。 如果遠端系統不支援加密的密碼(強式交談安全性),則此呼叫會失敗。

  • AP_SAME 為已使用有效使用者 ID 和密碼叫用的 TP,然後再叫用另一個 TP。

    例如,假設 TP A 會叫用具有有效使用者識別碼和密碼的 TP B,而 TP B 接著會叫用 TP C。如果 TP B 指定值AP_SAME,APPC 會將 TP C 的使用者識別碼從 TP A 和已驗證的指標傳送給 TP C 的 LU。 此指標會告知 TP C 不需要密碼(如果 TP C 設定為接受已驗證的指標)。

    ALLOCATE 動詞命令中使用AP_SAME時,您的應用程式必須一律在動詞控件區塊中提供 user_idpwd 參數的值。 根據 SNA 伺服器與對等 LU 之間協商的屬性,ALLOCATE 動詞將按照優先順序發送三種 Attach(FMH-5)訊息中的其中一種:

  1. 如果 LU 已交涉「已驗證」安全性,則 SNA 伺服器所傳送的 Attach 將不會包含 VCB 中指定的 pwd 參數內容。

  2. 如果邏輯單元 (LU) 已交涉「持續驗證」安全性,則 SNA 伺服器所傳送的 Attach 會包含在 VCB 中指定的 pwd 參數,但只有當這個 Attach 是自 LU-LU 會話開始以來第一個指定 user_id 參數的時候,在後續所有的 Attach(無論是由您的應用程式或使用此 LU-LU 模式三元組發出的任何其他應用程式)中才會省略 pwd 參數。

  3. 如果 LUs 尚未交涉上述任一項,則 SNA 伺服器所傳送的 Attach 會在所有 Attach 中同時省略 user_idpwd 兩個參數。

    您的應用程式無法判斷 LU 之間已協商的安全模式,也無法判斷它所發出的 ALLOCATE 動詞是否為該 LU-LU-模式組合中的第一個。 因此,當安全性設定為 AP_SAME 時,您的應用程式必須一律在 VCB 中設定user_idpwd 參數位段。

    如需了解有關繼續驗證與已驗證的安全性的詳細資訊,請參閱 SNA 格式指南的〈FM 標頭 5:附加(LU 6.2)〉一節。

  • AP_STRONG使用交談安全性的叫用 TP,因此需要使用者標識碼和密碼。 透過 user_idpwd 參數提供這項資訊。 AP_STRONG與AP_PGM不同,因為AP_STRONG不允許純文本密碼。 如果遠端系統不支援加密的密碼(強式交談安全性),則此呼叫會失敗。

    如果要使用APPC自動登入功能, 安全性 必須設定為AP_PGM。 如需詳細資訊,請參閱備註部分。

    reserv5
    保留欄位。

    pwd
    提供的參數。 指定與 user_id相關聯的密碼。

    只有在安全性設定為 AP_PGM 或 AP_SAME 時,才需要 pwd 參數。 它必須符合設定期間所建立 user_id 的密碼。

    pwd 參數是 10 位元組 EBCDIC 字元字串,且區分大小寫。 它可以包含下列 EBCDIC 字元:

  • 大寫和小寫字母

  • 數位 0 到 9

  • 特殊字元 $、#、@和句号 (.)

    如果密碼少於 10 個字節,請使用 EBCDIC 空格 (0x40) 將它放在右側。

    如果要使用 APPC 自動登入功能, pwd 字元字串必須硬式編碼為 MS$SAME。 如需詳細資訊,請參閱備註部分。

    user_id
    提供的參數。 指定存取合作夥伴 TP 所需的使用者識別碼。 只有在安全性參數設定為 AP_PGM 或 AP_SAME 時,才需要它。

    user_id參數是10位元組的EBCDIC字元字串,而且區分大小寫。 它必須符合為合作夥伴 TP 設定的其中一個使用者識別碼。

    參數可以包含下列 EBCDIC 字元:

  • 大寫和小寫字母

  • 數位 0 到 9

  • 特殊字元 $、#、@和句号 (.)

    如果 user_id 小於 10 個字節,請使用 EBCDIC 空格 (0x40) 將它放在右邊。

    如果要使用 APPC 自動登入功能, user_id 字元字串必須硬式編碼為 MS$SAME。 如需詳細資訊,請參閱備註部分。

    pip_dlen
    提供的參數。 指定要傳遞至夥伴 TP 的程式初始化參數 (PIP) 長度。 範圍是從 0 到 32767。

    pip_dptr
    提供的參數。 指定包含 PIP 資料的緩衝區位址。 只有當 pip_dlen 大於零時才使用此參數。

    PIP 資料可以包含合作夥伴 TP 或遠端作系統所需的初始化參數或環境設定資訊。 PIP 資料必須遵循一般數據流 (GDS) 格式。 如需詳細資訊,請參閱 SNA LU6.2 參考:IBM 發佈的對等通訊協定

    針對 Windows,數據緩衝區可以位於靜態數據區域或全域配置區域中。 數據緩衝區必須完全符合此區域。

    reserv7
    保留欄位。

    fqplu_name
    提供的參數。 指定夥伴 LU 的完整名稱。 必須與遠端節點中所定義的本地 LU 的完整名稱相匹配。 參數包含 NETID 的兩個類型 A EBCDIC 字元字串,以及夥伴 LU 的 LU 名稱。 這些名稱會以 EBCDIC 句號 (.. ) 分隔。

    如果未指定 plu_alias,則必須提供此名稱。 它可以包含下列 EBCDIC 字元:

  • 大寫字母

  • 數位 0 到 9

  • 特殊字元 $、#、 和@

    如果此參數的值小於 17 個字節,請使用 EBCDIC 空格(0x40)將它放在右邊。

    reserv8
    保留欄位。

    proxy_user
    提供的參數。 指定指向 Unicode 字串的 LPWSTR,其中包含使用具特殊權限代理功能進行冒充的使用者名稱。 只有在 opext 字段上設定AP_EXTD_VCB位時,才能使用此字段,指出延伸的 VCB。

    proxy_domain
    提供的參數。 指定一個 LPWSTR 指向一個 Unicode 字串,其中包含要使用特權代理功能模擬的使用者的網域名稱。 只有在 opext 字段上設定AP_EXTD_VCB位時,才能使用此字段,指出延伸的 VCB。

    reserv9
    保留欄位。

回傳代碼

AP_OK
主要傳回碼;已順利執行動詞。

無法成功的存取點
主要返回碼。本機提供的參數 rtn_ctl 指定了即時(AP_IMMEDIATE)返回控制權給 TP,但本地 LU 沒有可用的競爭勝出連線。

AP_PARAMETER_CHECK
主要回傳碼:由於參數錯誤,動作未執行。

AP_BAD_RETURN_CONTROL

次要傳回碼;為 rtn_ctl 指定的值無效。

AP_BAD_SECURITY

次要傳回碼;為 安全性 指定的值無效。

同步級別錯誤 (AP_BAD_SYNC_LEVEL)

次要傳回碼;為 sync_level 指定的值無效。

AP_BAD_TP_ID

次要傳回碼;為 tp_id 指定的值無效。

AP管道長度不正確

次要傳回碼; pip_dlen 的值大於 32767。

AP_UNKNOWN_PARTNER_MODE

次要傳回碼;針對 mode_name 指定的值無效。

AP_BAD_PARTNER_LU_ALIAS

次要傳回碼;APPC 無法辨識提供的 partner_lu_alias

AP_BAD_CONV_TYPE(用於基本對話)

次要傳回碼;針對 conv_type 指定的值無效。

AP_NO_USE_OF_SNASVCMG(適用於映射的會話)

次要傳回碼;SNASVCMG 不是 mode_name的有效值。

AP_INVALID_DATA_SEGMENT

次要傳回碼;PIP 數據比配置的數據區段長,或 PIP 數據緩衝區的地址錯誤。

AP_ALLOCATION_ERROR
主要傳回碼;APPC 無法分配對話。 交談狀態設定為 RESET。

此程式碼可透過 ALLOCATE 之後發出的動詞傳回。

AP_ALLOCATION_FAILURE_NO_RETRY

次要返回碼;由於存在永久性條件,例如配置錯誤或會話協定錯誤,因此無法分配交談。 若要判斷錯誤,系統管理員應該檢查錯誤記錄檔。 在更正錯誤之前,請勿重試配置。

AP_配置失敗_重試

次級返回碼;由於暫時性狀況,例如連接失敗,因此無法配置交談。 失敗的原因會記錄在系統錯誤記錄檔中。 重試分配。

AP_COMM子系統異常終止
主要傳回碼;表示下列其中一個條件:

  • 此交談所使用的節點遇到 ABEND。

  • TP 與 PU 2.1 節點之間的連線已中斷(LAN 錯誤)。

  • TP 電腦上的 SnaBase 遇到 ABEND。

    系統管理員應該檢查錯誤記錄檔,以判斷 ABEND 的原因。

    AP_COMM子系統未載入
    主要返回碼;在處理指令時,必需的元件無法被載入或終止。 因此,無法進行通訊。 請連絡系統管理員以採取更正動作。

    當此傳回碼與 ALLOCATE 搭配使用時,表示找不到任何通訊系統來支援本機 LU。 (例如,以 TP_STARTED 指定的本機 LU 別名不正確或尚未設定。請注意,如果 lu_aliasmode_name 少於八個字元,您必須確定這些欄位會填滿右邊的空格。 如果這些參數未填滿空格,就會傳回此錯誤,因為沒有節點可以滿足 ALLOCATE 要求。

    ALLOCATE 針對使用主機整合伺服器設定多個節點的系統產生此傳回碼時,有兩個次要傳回碼,如下所示:

    0xF0000001

    次要返回代碼;未啟動任何節點。

    0xF0000002

    次要傳回碼;至少有一個節點已啟動,但在 TP_STARTED 發出時,本地 LU 未在任何活動中的節點上設定。 問題可能是下列其中一項:

  • 未啟動具有本機 LU 的節點。

  • 未設定本地 LU(邏輯單元)。

    AP_無效動詞區段
    主要返回代碼;VCB 延伸超出數據區段的結尾。

    AP_STACK_TOO_SMALL
    主要傳回碼;應用程式的堆疊大小太小,無法執行命令。 增加應用程式的堆疊大小。

    AP_CONV_BUSY
    主要傳回碼;在任何交談時,一次只能有一個未完成的交談動詞。 如果本機 TP 有多個線程,而且多個線程使用相同的 conv_id發出 APPC 呼叫,就可能發生此情況。

    AP_THREAD_BLOCKING
    主要傳回碼;呼叫執行緒已經在阻塞呼叫中。

    AP_UNEXPECTED_DOS_ERROR(意外的DOS錯誤)
    主要傳回碼;當本機 TP 處理 APPC 呼叫時,作業系統將錯誤傳回至 APPC。 作業系統的傳回碼會透過secondary_rc傳回。 它會以 Intel 的位元組交換次序顯示。 如果問題持續發生,請洽詢系統管理員。

備註

ALLOCATE 可以建立基本或映射的交談。

當 TP 發出此動詞時,交談狀態為 RESET。 成功執行之後(primary_rc AP_OK),狀態會變更為 SEND。 如果動詞未執行,狀態會維持不變。

ALLOCATE 的數個參數是 EBCDIC 或 ASCII 字串。 TP 可以使用一般服務動詞 (CSV) CONVERT ,將字元串從一個字元集轉譯為另一個字元。

若要立即傳送 ALLOCATE 要求,叫用 TP 可以在 ALLOCATE 之後立即發出 FLUSHCONFIRM。 否則, ALLOCATE 要求會隨著本機 LU 傳送緩衝區中的其他數據累積,直到緩衝區已滿為止。

藉由在 ALLOCATE 之後發出 CONFIRM,叫用 TP 可以立即判斷配置是否成功(如果 synclevel 設定為 AP_CONFIRM_SYNC_LEVEL)。

一般而言, ALLOCATE 動詞 的 mode_name 參數值必須符合針對所叫用 TP 節點所設定的模式名稱,並在設定期間與夥伴 LU 相關聯。

如果叫用的 TP 節點上與夥伴 LU 相關聯的其中一個模式是隱含模式,則當與夥伴 LU 相關聯的模式名稱與 mode_name的值不相符時,在兩個 LUN 之間建立的會話將會是隱含模式。

主機整合伺服器支援稱為密碼替代的功能。 這是 IBM i 作業系統支援的安全功能,可對附加訊息中在兩個節點之間傳輸的任何密碼進行加密。 每當有使用者啟動 APPC 交易程式並指定使用者身分和密碼時,密碼就會通過附加功能傳送。 例如,每當任何人登入IBM i時,就會發生這種情況。

將 BIND 要求的位元組 23 中的位 5 設定為 1 來表示密碼替代的支援(這表示支援密碼替代)。 如果遠端系統在 BIND 回應中設定此位,SNA 伺服器會自動加密 FMH-5 附加訊息中包含的 LU 6.2 交談安全性密碼。 使用主機整合伺服器的APPC應用程式會自動利用這項功能,方法是將VCB的安全性欄位設定為 ALLOCATE要求中的 AP_PGM或AP_STRONG。

如果 APPC 應用程式想要強制加密的密碼流動,應用程式可以在 ALLOCATE 要求中為 VCB 中的安全性欄位指定AP_STRONG。 此選項依據 IBM i V3R1 中的定義實作,並記錄在 IBM i CPI-C 程式設計人員參考中,稱為 CM_SECURITY_PROGRAM_STRONG,其中 LU 6.2 pwd(password)欄位會在透過實體網路傳輸之前加密。

目前只有IBM i V3R1 或更新版本支持密碼替代功能。 如果遠端系統不支援此功能,SNA 伺服器會使用10060006感知碼解除系結會話。 這兩個節點會交涉它們是否在BIND交換中支援這項功能。 主機整合伺服器會在 BIND 裡設定位元,並在 BIND 中添加一些隨機資料以進行加密。 如果遠端節點支持密碼替代,它會在BIND回應中設定相同的位,並新增一些隨機數據以進行解密。

主機整合伺服器支援自動登入APPC應用程式。 這項功能需要網路管理員的特定設定:必須在主機整合伺服器的用戶端的 LAN 端叫用 APPC 應用程式。 客戶端必須登入 Windows 網域,但用戶端可以在主機整合伺服器 APPC API 所支援的任何作系統上執行。

用戶端應用程式會編碼為使用「程式」層級安全性,並具有特殊的硬式編碼 APPC 用戶名稱 MS$SAME 和密碼 MS$SAME。 當此工作階段配置從用戶端流向 SNA 伺服器時,伺服器會查閱與用戶端登入的 Windows 帳戶相對應的主機帳戶和密碼,並將主機帳戶資訊插入它傳送給主機的 APPC 附加訊息中。

備註

遠端節點若設定密碼替代位而未新增隨機數據,則屬不合法。

根據IBM,某些LU 6.2密碼替代的實作不支援密碼替代功能,但確實會將密碼替代位元回傳到主機整合伺服器,而不指定任何隨機資料。 當他們這樣做時,SNA 伺服器會將具有感知碼 10060006 的會話解除系結。此感知程式代碼會解譯為:

  • 1006 = 遺漏必要字段或參數。

  • 0006 = 省略控件向量的必要子字段。

    主機整合伺服器也應該記錄事件 17:「APPC 工作階段啟用失敗:已傳送 BIND 負回應」。

    正確的解決方案是修正失敗的實作。 不過,在短期因應措施中,可以設定下列主機整合伺服器服務登錄設定:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\snaservr\parameters\NOPWDSUB: REG_SZ: 是

    在登錄中指定此參數時,將會停用密碼替代支援。

    主機整合伺服器已進行數項更新,可讓具特殊許可權的APPC應用程式代表任何定義的 Windows 使用者使用單一 Sign-On 功能開啟APPC交談。 這稱為具特殊許可權的 Proxy 功能。 擴充功能已新增至 APPC ALLOCATE 動詞命令,以叫用此功能。

    APPC 應用程式在屬於特殊 Windows 群組的成員之 Windows 使用者帳戶中啟動後,會獲得高階權限。 設定主機安全性網域時,SNA 管理員會定義第二個 Windows 群組,以搭配主機整合伺服器的主機安全性功能使用。 如果實際運行用戶端的使用者帳戶是這個第二個 Windows 群組的成員,則該用戶端有權限以主機帳戶快取中所定義的任何使用者帳戶起始 APPC 交談。

    下列說明特殊許可權 Proxy 功能的運作方式:

    主機整合伺服器系統管理員會建立名為APP的主機安全性網域。 SNA 管理員現在會建立兩個 Windows 群組。 第一個群組稱為APP,第二個群組稱為APP_PROXY,以此作為範例。 指派給APP群組的用戶已啟用單一登錄。 指派給APP_PROXY群組的使用者是具特殊許可權的 Proxy。 系統管理員使用 SNA 管理員中 [主機安全性網域] 屬性對話方塊上的 [使用者] 按鈕,將 Windows 使用者 AppcUser 新增至APP_PROXY群組。

    系統管理員接著會在主機整合伺服器上設定APPC應用程式,以作為名為APPCAPP的 Windows 服務執行,且該服務已設定為在AppcUser用戶帳戶下運作。 當 APPCAPP 執行時,它會使用擴充的 VCB 格式,透過 ALLOCATE 動詞開啟 APPC 會話,並指定所需使用者的 Windows 使用者名稱 UserA(例如)。

    SNA 服務會看到來自主機安全性網域應用程式成員之連線的會話要求。 用戶端/伺服器介面會告訴 SNA 服務實際用戶端是 AppcUser。

    SNA 服務會檢查 AppcUser 是否為APP_PROXY群組的成員。 因為 AppcUser 是 APP_PROXY 的成員,所以 SNA 服務會在 APPC 附加 (FMH-5) 命令中插入 UserA 的使用者名稱/密碼,並將其傳送給合作夥伴 TP。

    為了支援具特殊許可權的 Proxy 功能,APPC 應用程式必須實作下列程式邏輯:

    APPC 應用程式必須判斷它想要模擬的 Windows 使用者識別碼和網域名稱。

    APPC 應用程式必須先設定下列參數,才能呼叫 ALLOCATE 動詞命令:

    藉由在 opext 字段中設定AP_EXTD_VCB旗標,啟用擴充 ALLOCATE 動詞控件區塊結構的用法。

    將安全性設定為AP_PROXY_SAME、AP_PROXY_PGM或AP_PROXY_STRONG。

    設定 proxy_userproxy_domain 指標,以指向要模擬之使用者的使用者名稱和域名的 Unicode 字串。

備註

應用程式不需要在 ALLOCATE VCB 中設定user_idpwd 字段。

當 APPC 應用程式執行上述步驟併發出 ALLOCATE 動詞命令時,主機整合伺服器會在指定 Windows 使用者的主機安全性網域中執行查閱,並在傳送至遠端系統的 FMH-5 附加訊息中設定使用者識別符和密碼欄位。