Condividi tramite


MC_ALLOCATE

Il verbo MC_ALLOCATE viene emesso dal programma di transazione di richiamo (TP). Alloca una sessione tra l'unità logica locale (LU) e l'unità logica del partner e (insieme a RECEIVE_ALLOCATE) stabilisce una conversazione tra il TP richiamato e il TP richiamato. Dopo l'esecuzione di questo verbo, APPC genera un identificatore di conversazione (conv_id). Il conv_id è un parametro obbligatorio per tutti gli altri verbi di conversazione APPC.

La struttura seguente descrive il blocco di controllo verbo (VCB) utilizzato dal verbo MC_ALLOCATE .

Sintassi

  
struct mc_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    reserv3;  
    unsigned char    synclevel;  
    unsigned char    reserv4[2];  
    unsigned char    rtn_ctl;  
    unsigned char    reserv5;  
    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    reserv6[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];  
};   

Membri

Opcode
Parametro fornito. Specifica il codice dell'operazione verbo; AP_M_ALLOCATE.

opext
Parametro fornito. Specifica l'estensione dell'operazione verbo, AP_MAPPED_CONVERSATION. Se il bit AP_EXTD_VCB è impostato, viene utilizzata una versione estesa del blocco di controllo verbo. In questo caso, la struttura MC_ALLOCATE include il supporto delle funzionalità proxy con privilegi o supporto per il punto di sincronizzazione.

reserv2
Campo riservato.

primary_rc
Parametro restituito. Specifica il codice restituito primario impostato da APPC al completamento del verbo. I codici restituiti validi variano a seconda del verbo APPC rilasciato. Per questo verbo, vedere Codici restituiti per i codici di errore validi.

secondary_rc
Parametro restituito. Specifica il codice restituito secondario impostato da APPC al completamento del verbo. I codici restituiti validi variano a seconda del verbo APPC rilasciato. Per questo verbo, vedere Codici restituiti per i codici di errore validi.

tp_id
Parametro fornito. Identifica il tp locale. Il valore di questo parametro è stato restituito da TP_STARTED.

conv_id
Parametro restituito. Identifica la conversazione stabilita tra i due TP.

reserv3
Campo riservato.

synclevel
Parametro fornito. Specifica il livello di sincronizzazione della conversazione. Determina se i TP possono richiedere la conferma della ricezione dei dati e confermare la ricezione dei dati.

  • AP_NONE specifica che l'elaborazione della conferma non verrà usata in questa conversazione.

  • AP_CONFIRM_SYNC_LEVEL specifica che i TP possono usare l'elaborazione della conferma in questa conversazione.

  • AP_SYNCPT specifica che i provider di servizi di transazione possono usare l'elaborazione della conferma del livello 2 del punto di sincronizzazione in questa conversazione.

    reserv4
    Campo riservato.

    reserv5
    Campo riservato.

    rtn_ctl
    Parametro fornito. Specifica quando l'lu locale, che agisce su una richiesta di sessione dal tp locale, deve restituire il controllo al tp locale. Per informazioni sulle sessioni, vedere Panoramica dei programmi di transazione.

  • AP_IMMEDIATE specifica che l'unità lu alloca una sessione con conflitti, se disponibile immediatamente, e restituisce il controllo al tp.

  • AP_WHEN_SESSION_ALLOCATED specifica che l'lu non restituisce il controllo al tp finché non alloca una sessione o rileva uno degli errori documentati in Codici restituiti in questo argomento. Se il limite di sessione è zero, l'unità lu restituisce immediatamente il controllo. Se una sessione non è disponibile, il tp attende uno.

  • AP_WHEN_SESSION_FREE specifica che l'lu alloca una sessione di contesa o di contesa, se disponibile o in grado di essere attivata e restituisce il controllo al TP. Se si verifica un errore, come documentato in Codici restituiti in questo argomento, la chiamata restituirà immediatamente con l'errore nei campi primary_rc e secondary_rc .

  • AP_WHEN_CONWINNER_ALLOC specifica che il lu non restituisce il controllo fino a quando non alloca una sessione vincitore di conflitti o rileva uno degli errori documentati in Codici restituiti in questo argomento. Se il limite di sessione è zero, l'unità lu restituisce immediatamente il controllo. Se una sessione non è disponibile, il tp attende uno.

  • AP_WHEN_CONV_GROUP_ALLOC specifica che l'lu non restituisce il controllo al tp finché non alloca la sessione specificata da conv_group_ido rileva uno degli errori documentati in Codici restituiti in questo argomento. Se una sessione non è disponibile, il tp attende che diventi gratuito.

Annotazioni

AP_IMMEDIATE è l'unico valore per rtn_ctl che non causa mai l'avvio di una nuova sessione. Per i valori diversi da AP_IMMEDIATE, se non è immediatamente disponibile una sessione appropriata, Microsoft® Host Integration Server tenta di avviarne uno. Ciò determina l'attivazione della connessione su richiesta.

conv_group_id
Parametro fornito/restituito. Specifica l'identificatore del gruppo di conversazioni da cui deve essere allocata la sessione. Il conv_group_id è necessario solo se rtn_ctlè impostato su WHEN_CONV_GROUP_ALLOC. Quandortn_ctl specifica un valore diverso e il primary_rc viene AP_OK, si tratta di un valore restituito.

sense_data
Parametro restituito. Indica un errore di allocazione (ripetizione o nessun tentativo) e contiene dati di senso.

plu_alias
Parametro fornito. Specifica l'alias in base al quale il lu partner è noto al tp locale.

Il plu_alias deve corrispondere al nome di un lu partner stabilito durante la configurazione.

Il parametro è una stringa di caratteri ASCII a 8 byte. Può essere costituito dai seguenti caratteri ASCII:

  • Lettere maiuscole

  • Numerali da 0 a 9

  • Spazi

  • Caratteri speciali $, #, %e @

    Il primo carattere di questa stringa non può essere uno spazio.

    Se il valore di questo parametro è inferiore a otto byte, aggiungerlo a destra con spazi ASCII (0x20).

    Se si vuole specificare il lu partner con il parametro fqplu_name , compilare questo parametro con zeri binari.

    Per un utente o un gruppo che usa provider di servizi di configurazione, 5250 emulatori e/o applicazioni APPC, l'amministratore di sistema può assegnare unità LU locali e remote predefinite. In questo caso, il campo viene lasciato vuoto o null e l'accesso alle unità di archiviazione predefinite viene eseguito quando l'utente o il membro del gruppo avvia un programma APPC.

    mode_name
    Parametro fornito. Specifica il nome di un set di caratteristiche di rete definite durante la configurazione.

    Il valore di mode_name deve corrispondere al nome di una modalità associata all'lu partner durante la configurazione.

    Il parametro è una stringa di caratteri EBCDIC a 8 byte. Può essere costituito da caratteri del tipo set di caratteri EBCDIC:

  • Lettere maiuscole

  • Numerali da 0 a 9

  • Caratteri speciali $, #, e @

    Il primo carattere nella stringa deve essere una lettera maiuscola o un carattere speciale.

    Non usare SNASVCMG in una conversazione mappata. SNASVCMG è un mode_name riservato usato internamente da APPC.

    tp_name
    Parametro fornito. Specifica il nome del tp richiamato. Il valore di tp_name specificato da MC_ALLOCATE nel tp di chiamata deve corrispondere al valore di tp_name specificato da RECEIVE_ALLOCATE nel tp richiamato.

    Il parametro è una stringa di caratteri EBCDIC a 64 byte e fa distinzione tra maiuscole e minuscole. Il parametro tp_name può essere costituito dai caratteri EBCDIC seguenti:

  • Lettere maiuscole e minuscole

  • Numerali da 0 a 9

  • Caratteri speciali $, #, @e punto (.)

    Se tp_name è inferiore a 64 byte, usare spazi EBCDIC (0x40) per riempirlo a destra.

    La convenzione SNA è che un nome TP del servizio può avere fino a quattro caratteri. Il primo carattere è un byte esadecimale tra 0x00 e 0x3F. Gli altri caratteri provengono dal set di caratteri EBCDIC di tipo AE.

    sicurezza
    Parametro fornito. Fornisce le informazioni richieste dall'lu partner per convalidare l'accesso al tp richiamato. Vedere la sezione Valori possibili per il parametro Security in questo argomento.

    Reserv6
    Campo riservato.

    Pwd
    Parametro fornito. Specifica la password associata a user_id.

    Il parametro pwd è obbligatorio solo se la sicurezza è impostata su AP_PGM o AP_SAME. Deve corrispondere alla password per user_id stabilita durante la configurazione.

    Il parametro pwd è una stringa di caratteri EBCDIC a 10 byte e fa distinzione tra maiuscole e minuscole. Può essere costituito dai seguenti caratteri EBCDIC:

  • Lettere maiuscole e minuscole

  • Numerali da 0 a 9

  • Caratteri speciali $, #, @e punto (.)

    Se la password è inferiore a 10 byte, usare spazi EBCDIC (0x40) per riempirla a destra.

    Se la funzionalità di accesso automatico APPC deve essere usata, la stringa di caratteri pwd deve essere hardcoded in MS$SAME. Per informazioni dettagliate, vedere la sezione Osservazioni.

    user_id
    Parametro fornito. Specifica l'identificatore utente necessario per accedere al tp del partner. È necessario solo se il parametro di sicurezza è impostato su AP_PGM o AP_SAME.

    Il parametro user_id è una stringa di caratteri EBCDIC a 10 byte e fa distinzione tra maiuscole e minuscole. Deve corrispondere a uno degli identificatori utente configurati per il tp del partner.

    Il parametro può essere costituito dai caratteri EBCDIC seguenti:

  • Lettere maiuscole e minuscole

  • Numerali da 0 a 9

  • Caratteri speciali $, #, @e punto (.)

    Se user_id è inferiore a 10 byte, usare spazi EBCDIC (0x40) per riempirlo a destra.

    Se è necessario usare la funzionalità di accesso automatico appC, la stringa di caratteri user_id deve essere hardcoded in MS$SAME. Per informazioni dettagliate, vedere la sezione Osservazioni.

    pip_dlen
    Parametro fornito. Specifica la lunghezza dei parametri di inizializzazione del programma (PIP) da passare al tp del partner. L'intervallo è compreso tra 0 e 32767.

    pip_dptr
    Parametro fornito. Specifica l'indirizzo del buffer contenente i dati PIP. Usare questo parametro solo se pip_dlen è maggiore di zero.

    I dati PIP possono essere costituiti da parametri di inizializzazione o informazioni di configurazione ambientale richieste da un partner TP o da un sistema operativo remoto. I dati PIP devono seguire il formato generale del flusso di dati (GDS). Per altre informazioni, vedere i manuali IBM SNA.

    Per Microsoft Windows, il buffer di dati può risiedere in un'area dati statica o in un'area allocata a livello globale. Il buffer di dati deve rientrare interamente all'interno di questa area.

    reserv7
    Campo riservato.

    fqplu_name
    Parametro fornito. Specifica il nome completo dell'unità lu partner. Deve corrispondere al nome completo dell'unità lu locale definita nel nodo remoto. Il parametro è costituito da due stringhe di caratteri EBCDIC di tipo per NETID e il nome LU del lu partner. I nomi sono separati da un punto EBCDIC (.).

    Questo nome deve essere specificato se non viene specificato alcun plu_alias . Può essere costituito dai seguenti caratteri EBCDIC:

  • 18 Lettere maiuscole

  • Numerali da 0 a 9

  • Caratteri speciali $, #, e @

    Se il valore di questo parametro è inferiore a 17 byte, aggiungerlo a destra con spazi EBCDIC (0x40).

    reserv8
    Campo riservato.

    proxy_user
    Parametro fornito. Specifica un LPWSTR che punta a una stringa Unicode contenente il nome utente da rappresentare usando la funzionalità proxy con privilegi. Questo campo può essere utilizzato solo quando il bit AP_EXTD_VCB è impostato sul campo opext , che indica un VCB esteso.

    proxy_domain
    Parametro fornito. Specifica un LPWSTR che punta a una stringa Unicode contenente il nome di dominio dell'utente da rappresentare usando la funzionalità proxy con privilegi. Questo campo può essere utilizzato solo quando il bit AP_EXTD_VCB è impostato sul campo opext , che indica un VCB esteso.

    reserv9
    Campo riservato.

Valori possibili per il parametro di sicurezza

In base alla sicurezza della conversazione stabilita per il tp richiamato durante la configurazione, usare uno dei valori seguenti:

  • AP_NONE per un tp richiamato che non usa alcuna sicurezza di conversazione.

  • AP_PGM per un tp richiamato che usa la sicurezza delle conversazioni e richiede quindi un identificatore utente e una password. Fornire queste informazioni tramite i parametri user_id e pwd .

  • AP_PROXY_PGM per un tp richiamato con proxy con privilegi che usa la sicurezza delle conversazioni e quindi richiede un identificatore utente e una password. I puntatori devono essere configurati per proxy_user e proxy_domain in modo che puntino a stringhe Unicode contenenti il nome utente e il nome di dominio dell'utente da rappresentare. L'applicazione non deve impostare i campi user_id e pwd .

  • AP_PROXY_SAME per un tp che è stato richiamato usando un proxy con privilegi con un identificatore utente e una password validi forniti dal proxy, che a sua volta richiama un altro TP. I puntatori devono essere configurati per proxy_user e proxy_domain in modo che puntino a stringhe Unicode contenenti il nome utente e il nome di dominio dell'utente da rappresentare. L'applicazione non deve impostare i campi user_id e pwd .

    Si supponga, ad esempio, che TP A richiami TP B con un identificatore utente e una password validi forniti dal proxy con privilegi e TP B a sua volta richiama TP C. Se TP B specifica il valore AP_PROXY_SAME, APPC invierà l'lu per TP C l'identificatore utente da TP A e un indicatore già verificato. Questo indicatore indica a TP C di non richiedere la password (se TP C è configurato per accettare un indicatore già verificato).

  • AP_PROXY_STRONG per un tp richiamato con proxy con privilegi che usa la sicurezza delle conversazioni e quindi richiede un identificatore utente e una password forniti dal meccanismo proxy con privilegi. I puntatori devono essere configurati per proxy_user e proxy_domain in modo che puntino a stringhe Unicode contenenti il nome utente e il nome di dominio dell'utente da rappresentare. L'applicazione non deve impostare i campi user_id e pwd . AP_PROXY_STRONG differisce da AP_PROXY_PGM in quanto AP_PROXY_STRONG non consente password non crittografate. Se il sistema remoto non supporta le password crittografate (sicurezza avanzata delle conversazioni), questa chiamata non riesce.

  • AP_SAME per un TP richiamato con un identificatore utente e una password validi, che a sua volta richiama un altro TP.

    Si supponga, ad esempio, che TP A richiami TP B con un identificatore utente e una password validi e TP B richiama a sua volta TP C. Se TP B specifica il valore AP_SAME, APPC invierà l'lu per TP C l'identificatore utente da TP A e un indicatore già verificato. Questo indicatore indica a TP C di non richiedere la password (se TP C è configurato per accettare un indicatore già verificato).

    Quando AP_SAME viene usato in un verbo MC_ALLOCATE , l'applicazione deve sempre fornire valori per i parametri user_id e pwd nel blocco di controllo verbo. A seconda delle proprietà negoziate tra Host Integration Server e lu peer, il verbo MC_ALLOCATE invierà uno dei tre tipi di messaggi Attach (FMH-5), in questo ordine di precedenza:

    1. Se le unità organizzative hanno negoziato la sicurezza "già verificata", il collegamento inviato da Host Integration Server non includerà il contenuto del campo del parametro pwd specificato in VCB.

    2. Se le unità di archiviazione hanno negoziato la sicurezza di "verifica persistente", il attach inviato da Host Integration Server includerà il parametro pwd specificato in VCB, ma solo quando attach è il primo per il parametro user_id specificato dall'inizio della sessione di LU-LU e ometterà il parametro pwd in tutti i collegamenti successivi (rilasciati dall'applicazione o da qualsiasi altra applicazione che usa questo triplo in modalità LU-LU).

    3. Se le unità organizzative non hanno negoziato nessuno dei due elementi precedenti, il collegamento inviato da Host Integration Server ometterà sia i parametri user_id che pwd in tutti i attaches.

      L'applicazione non è in grado di indicare quale modalità di sicurezza è stata negoziata tra le unità di archiviazione, né può indicare se il verbo MC_ALLOCATE viene emesso è il primo per il tripletto in modalità LU-LU. Pertanto, l'applicazione deve sempre impostare i campi dei parametri user_id e pwd nel vcb quando la sicurezza è impostata su AP_SAME.

      Per altre informazioni sulla verifica permanente e sulla sicurezza già verificata, vedere la Guida ai formati SNA, sezione "Intestazione FM 5: Attach (LU 6.2)".

  • AP_STRONG per un TP richiamato che usa la sicurezza delle conversazioni e quindi richiede un identificatore utente e una password. Fornire queste informazioni tramite i parametri user_id e pwd . AP_STRONG differisce da AP_PGM in quanto AP_STRONG non consente password non crittografate. Se il sistema remoto non supporta le password crittografate (sicurezza avanzata delle conversazioni), questa chiamata non riesce.

    Se la funzionalità di accesso automatico appC deve essere usata, la sicurezza deve essere impostata su AP_PGM. Per informazioni dettagliate, vedere la sezione Osservazioni.

Codici di ritorno

AP_OK
Codice restituito primario; verbo eseguito correttamente.

AP_UNSUCCESSFUL
Codice restituito primario; il parametro fornito rtn_ctl restituito immediato (AP_IMMEDIATE) di controllo al tp e l'unità di aggiornamento locale non dispone di una sessione di contesa disponibile.

AP_PARAMETER_CHECK
Codice restituito primario; il verbo non è stato eseguito a causa di un errore di parametro.

AP_BAD_RETURN_CONTROL

Codice restituito secondario; il valore specificato per rtn_ctl non è valido.

AP_BAD_SECURITY

Codice restituito secondario; il valore specificato per la sicurezza non è valido.

AP_BAD_SYNC_LEVEL

Codice restituito secondario; il valore specificato per sync_level non è valido.

AP_BAD_TP_ID

Codice restituito secondario; il valore specificato per tp_id non è valido.

AP_PIP_LEN_INCORRECT

Codice restituito secondario; il valore di pip_dlen è maggiore di 32767.

AP_UNKNOWN_PARTNER_MODE

Codice restituito secondario; il valore specificato per mode_name non è valido.

AP_BAD_PARTNER_LU_ALIAS

Codice restituito secondario; APPC non riconosce il partner_lu_alias fornito.

AP_NO_USE_OF_SNASVCMG

Codice restituito secondario; SNASVCMG non è un valore valido per mode_name.

AP_INVALID_DATA_SEGMENT

Codice restituito secondario; i dati PIP erano più lunghi del segmento di dati allocato o l'indirizzo del buffer di dati PIP non era corretto.

AP_ALLOCATION_ERROR
Codice restituito primario; AppC non è riuscito ad allocare una conversazione. Lo stato della conversazione è impostato su RESET.

Questo codice può essere restituito tramite un verbo emesso dopo MC_ALLOCATE.

AP_ALLOCATION_FAILURE_NO_RETRY

Codice restituito secondario; La conversazione non può essere allocata a causa di una condizione permanente, ad esempio un errore di configurazione o un errore del protocollo di sessione. Per determinare l'errore, l'amministratore di sistema deve esaminare il file di log degli errori. Non ritentare l'allocazione fino a quando l'errore non è stato corretto.

AP_ALLOCATION_FAILURE_RETRY

Codice restituito secondario; Impossibile allocare la conversazione a causa di una condizione temporanea, ad esempio un errore di collegamento. Il motivo dell'errore viene registrato nel log degli errori di sistema. Ripetere l'allocazione.

AP_COMM_SUBSYSTEM_ABENDED
Codice restituito primario; indica una delle condizioni seguenti:

  • Il nodo usato da questa conversazione ha rilevato un ABEND.

  • La connessione tra il tp e il nodo pu 2.1 è stata interrotta (errore LAN).

  • La SnaBase nel computer del TP ha incontrato un ABEND.

    L'amministratore di sistema deve esaminare il log degli errori per determinare il motivo di ABEND.

    AP_COMM_SUBSYSTEM_NOT_LOADED
    Codice restituito primario; Impossibile caricare o terminare un componente necessario durante l'elaborazione del verbo. Pertanto, la comunicazione non poteva avvenire. Contattare l'amministratore di sistema per un'azione correttiva.

    Quando questo codice restituito viene usato con MC_ALLOCATE, può indicare che non è stato possibile trovare alcun sistema di comunicazione per supportare l'lu locale. Ad esempio, l'alias LU locale specificato con TP_STARTED non è corretto o non è stato configurato. Si noti che se lu_alias o mode_name è inferiore a otto caratteri, è necessario assicurarsi che questi campi siano riempiti con spazi a destra. Questo errore viene restituito se questi parametri non vengono riempiti di spazi, poiché non è disponibile alcun nodo in grado di soddisfare la richiesta di MC_ALLOCATE .

    Quando MC_ALLOCATE produce questo codice restituito per un sistema Host Integration Server configurato con più nodi, esistono due codici restituiti secondari come indicato di seguito:

    0xF0000001

    Codice restituito secondario; nessun nodo è stato avviato.

    0xF0000002

    Codice restituito secondario; almeno un nodo è stato avviato, ma l'lu locale (quando viene emesso TP_STARTED) non è configurato in alcun nodo attivo. Il problema potrebbe essere uno dei seguenti:

  • Il nodo con l'unità lu locale non viene avviato.

  • L'unità lu locale non è configurata.

    AP_INVALID_VERB_SEGMENT
    Codice restituito primario; VCB è stato esteso oltre la fine del segmento di dati.

    AP_STACK_TOO_SMALL
    Codice restituito primario; le dimensioni dello stack dell'applicazione sono troppo piccole per eseguire il verbo. Aumentare le dimensioni dello stack dell'applicazione.

    AP_CONV_BUSY
    Codice restituito primario; può essere presente un solo verbo di conversazione in sospeso alla volta in qualsiasi conversazione. Ciò può verificarsi se il tp locale ha più thread e più thread eseguono chiamate APPC usando lo stesso conv_id.

    AP_THREAD_BLOCKING
    Codice restituito primario; il thread chiamante è già in una chiamata di blocco.

    AP_UNEXPECTED_DOS_ERROR
    Codice restituito primario; il sistema operativo ha restituito un errore ad APPC durante l'elaborazione di una chiamata APPC dal tp locale. Il codice restituito del sistema operativo viene restituito tramite il secondary_rc. Viene visualizzato nell'ordine di scambio dei byte Intel. Se il problema persiste, rivolgersi all'amministratore di sistema.

Osservazioni:

MC_ALLOCATE stabilisce una conversazione mappata.

Lo stato della conversazione è RESET quando il tp emette questo verbo. Al termine dell'esecuzione (primary_rc viene AP_OK ), lo stato passa a SEND. Se il verbo non viene eseguito, lo stato rimane invariato.

Diversi parametri di MC_ALLOCATE sono stringhe EBCDIC o ASCII. Un tp può usare CSV CONVERT per convertire una stringa da un set di caratteri all'altro.

Per inviare immediatamente la richiesta di MC_ALLOCATE , il tp di richiamo può emettere MC_FLUSH o MC_CONFIRM immediatamente dopo MC_ALLOCATE. In caso contrario, la richiesta di MC_ALLOCATE si accumula con altri dati nel buffer di invio dell'unità lu locale fino a quando il buffer non è pieno.

Eseguendo MC_CONFIRM dopo MC_ALLOCATE, il tp di richiamo può determinare immediatamente se l'allocazione è riuscita (se il livello di sincronizzazione è impostato su AP_CONFIRM_SYNC_LEVEL).

In genere, il valore del parametro mode_name del verbo di MC_ALLOCATE deve corrispondere al nome di una modalità configurata per il nodo tp richiamato e associato durante la configurazione con l'lu partner.

Se una delle modalità associate all'lu partner nel nodo tp richiamato è una modalità implicita, la sessione stabilita tra le due unità di elaborazione sarà della modalità implicita quando nessun nome di modalità associato all'lu partner corrisponde al valore di mode_name.

Host Integration Server supporta una funzionalità denominata sostituzione delle password. Si tratta di una funzionalità di sicurezza supportata dalla versione più recente del sistema operativo IBM i (V3R1) che crittografa qualsiasi password che scorre tra due nodi in un messaggio Attach. Una password passa a un oggetto Attach ogni volta che un utente richiama un programma di transazione APPC che specifica un identificatore utente e una password. Ad esempio, questo si verifica ogni volta che chiunque accede a un IBM i.

Il supporto per la sostituzione delle password è indicato impostando il bit 5 in byte 23 della richiesta BIND su 1 (che indica che la sostituzione delle password è supportata). Se il sistema remoto imposta questo bit nella risposta BIND, Host Integration Server crittografa automaticamente la password di sicurezza della conversazione LU 6.2 inclusa nel messaggio di collegamento FMH-5. Le applicazioni APPC host integration server sfruttano automaticamente questa funzionalità impostando il campo di sicurezza di VCB su AP_PGM o AP_STRONG nella richiesta di MC_ALLOCATE .

Se un'applicazione APPC vuole forzare il flusso di una password crittografata, l'applicazione può specificare AP_STRONG per il campo di sicurezza nel VCB nella richiesta di MC_ALLOCATE . Questa opzione viene implementata come definito in IBM i V3R1 ed è documentata nel riferimento programmatore IBM i CPI-C come CM_SECURITY_PROGRAM_STRONG, in cui il campo LU 6.2 pwd (password) viene crittografato prima che passi attraverso la rete fisica.

La funzionalità di sostituzione delle password è attualmente supportata solo da IBM i V3R1 o versione successiva. Se il sistema remoto non supporta questa funzionalità, Host Integration Server annulla l'associazione della sessione con il codice di senso di 10060006. I due nodi negoziano se supportano o meno questa funzionalità nello scambio BIND. Host Integration Server imposta un bit in BIND e aggiunge anche alcuni dati casuali in BIND per la crittografia. Se il nodo remoto supporta la sostituzione delle password, imposta lo stesso bit nella risposta BIND e aggiunge alcuni dati casuali (diversi) per la decrittografia.

Host Integration Server supporta l'accesso automatico per le applicazioni APPC. Questa funzionalità richiede una configurazione specifica da parte dell'amministratore di rete: l'applicazione APPC deve essere richiamata sul lato LAN da un client di Host Integration Server. Il client deve essere connesso a un dominio Windows, ma può essere qualsiasi piattaforma che supporti le API APPC host integration server.

L'applicazione client viene codificata per usare la sicurezza a livello di "programma", con un nome utente APPC hardcoded speciale MS$SAME e la password MS$SAME. Quando questa allocazione di sessione passa dal client all'host integration server, il server Host Integration Server cerca l'account host e la password corrispondenti all'account di Windows con cui il client è connesso e sostituisce le informazioni sull'account host nel messaggio di collegamento appC inviato all'host.

Annotazioni

Non è valido per il nodo remoto impostare il bit specificando la sostituzione delle password e non aggiungere i dati casuali.

Secondo IBM, esistono implementazioni di sostituzione delle password LU 6.2 che non supportano la sostituzione delle password, ma eseguono l'eco del bit di sostituzione delle password in Host Integration Server, senza specificare dati casuali. A tale scopo, Host Integration Server unBINDrà la sessione con il codice di senso 10060006.Questo codice di senso viene interpretato come:

  • 1006 = Campo obbligatorio o parametro mancante.

  • 0006 = È stato omesso un sottocampo obbligatorio di un vettore di controllo.

    Host Integration Server deve anche registrare un evento 17 (errore di attivazione della sessione APPC: risposta negativa BIND inviata).

    La soluzione corretta consiste nel correggere l'implementazione non riuscita. Tuttavia, come soluzione alternativa a breve termine, è possibile impostare l'impostazione seguente del Registro di sistema del servizio Host Integration Server SNA: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\snaservr\parameters\NOPWDSUB: REG_SZ: SÌ

    Quando questo parametro viene specificato nel Registro di sistema, il supporto per la sostituzione delle password di Host Integration Server verrà disabilitato.

    Sono stati apportati diversi aggiornamenti a Host Integration Server per consentire a un'applicazione APPC con privilegi di aprire una conversazione APPC usando la funzionalità Single Sign-On per conto di qualsiasi utente windows definito. Questa operazione viene definita funzionalità proxy con privilegi. È stata aggiunta un'estensione al verbo APPC MC_ALLOCATE per richiamare questa funzionalità.

    Un'applicazione APPC diventa privilegiata tramite l'avvio in un account utente di Windows membro di un gruppo di Windows speciale. Quando viene configurato un dominio di sicurezza host, SNA Manager definirà un secondo gruppo di Windows da usare con le funzionalità di sicurezza host di Host Integration Server. Se l'account utente con cui è in esecuzione il client effettivo è membro di questo secondo gruppo di Windows, il client ha il privilegio di avviare una conversazione APPC per conto di qualsiasi account utente definito nella cache dell'account host.

    Di seguito viene illustrato il funzionamento della funzionalità proxy con privilegi:

    L'amministratore di Host Integration Server crea un dominio di sicurezza host denominato APP. SNA Manager crea ora due gruppi di Windows. Il primo gruppo viene chiamato APP e il secondo viene chiamato APP_PROXY per questo esempio. Gli utenti assegnati al gruppo APP sono abilitati per Single Sign-On. Gli utenti assegnati al gruppo di APP_PROXY sono proxy con privilegi. L'amministratore aggiunge l'utente di Windows AppcUser al gruppo APP_PROXY usando il pulsante Utenti nella finestra di dialogo Proprietà dominio di sicurezza host in Gestione SNA.

    L'amministratore configura quindi un'applicazione APPC nel server Host Integration Server per l'esecuzione come servizio di Windows denominato APPCAPP e tale servizio è stato configurato per funzionare con l'account utente AppcUser. Quando appcapp viene eseguita, apre una sessione APPC tramite un verbo ALLOCATE usando il formato VCB esteso e specifica il nome utente di Windows dell'utente desiderato, UserA (ad esempio).

    Il servizio SNA vede la richiesta di sessione proveniente da una connessione membro dell'APP dominio di sicurezza host. L'interfaccia client/server indica al servizio SNA che il client effettivo è AppcUser.

    Il servizio SNA verifica se AppcUser è membro del gruppo APP_PROXY. Poiché AppcUser è membro di APP_PROXY, il servizio SNA inserisce il nome utente/password per UserA nel comando APPC Attach (FMH-5) e lo invia al tp del partner.

    Per supportare la funzionalità proxy con privilegi, l'applicazione APPC deve implementare la logica di programma seguente:

    L'applicazione APPC deve determinare l'ID utente e il nome di dominio di Windows che desidera rappresentare.

    L'applicazione APPC deve impostare i parametri seguenti prima di chiamare il verbo MC_ALLOCATE :

    Abilitare l'uso della struttura del blocco di controllo verbo MC_ALLOCATE estesa impostando il flag AP_EXTD_VCB nel campo opext .

    Impostare la sicurezza su AP_PROXY_SAME, AP_PROXY_PGM o AP_PROXY_STRONG.

    Configurare i puntatori per proxy_user e proxy_domain in modo che puntino a stringhe Unicode contenenti il nome utente e il nome di dominio dell'utente da rappresentare.

Annotazioni

L'applicazione non deve configurare i campi user_id e pwd nel MC_ALLOCATE VCB.

Quando l'applicazione APPC esegue i passaggi precedenti e rilascia il verbo MC_ALLOCATE , il server Host Integration Server eseguirà una ricerca nel dominio di sicurezza host per l'utente windows specificato e imposta i campi ID utente e password nel messaggio di collegamento FMH-5 inviato al sistema remoto.