ALLOCATE
El ALLOCATE
verbo lo emite el programa de transacciones de invocación (TP). Asigna una sesión entre la unidad lógica local (LU) y la LU asociada y (junto con RECEIVE_ALLOCATE) establece una conversación entre el TP invocado y el TP invocado. Una vez que este verbo se ejecuta correctamente, APPC genera un identificador de conversación (conv_id). El conv_id es un parámetro necesario para todos los demás verbos de conversación appC.
En la estructura siguiente se describe el bloque de control de verbo utilizado por el verbo ALLOCATE .
Sintaxis
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];
};
Miembros
opcode
Parámetro proporcionado. Especifica el código de operación de verbo, AP_B_ALLOCATE.
opext
Parámetro proporcionado. Especifica la extensión de la operación de verbo, AP_BASIC_CONVERSATION. Si se establece el bit de AP_EXTD_VCB, esto indica que se usa una versión extendida del bloque de control de verbos. En este caso, la estructura ALLOCATE incluye compatibilidad con punto de sincronización o compatibilidad con características de proxy con privilegios.
reserv2
Campo reservado.
primary_rc
Parámetro devuelto. Especifica el código de retorno principal que establece APPC al finalizar el verbo. Los códigos de retorno válidos varían en función del verbo APPC que se emita. Consulte la sección de códigos de retorno para obtener los códigos de error válidos para este verbo.
secondary_rc
Parámetro devuelto. Especifica el código de retorno secundario que establece APPC al finalizar el verbo. Los códigos de retorno válidos varían en función del verbo APPC que se emita. Consulte la sección de códigos de retorno para obtener los códigos de error válidos para este verbo.
tp_id
Parámetro proporcionado. Identifica el TP local. El valor de este parámetro lo devolvió TP_STARTED.
conv_id
Parámetro devuelto. Identifica la conversación establecida entre los dos CSP.
conv_type
Parámetro proporcionado. Solo se usa en ALLOCATE para especificar el tipo de conversación que se va a asignar y es AP_BASIC_CONVERSATION o AP_MAPPED_CONVERSATION.
Si ALLOCATE establece una conversación asignada, el TP local debe emitir verbos de conversación básica y proporcionar su propia capa de asignación para convertir registros de datos en registros lógicos y registros lógicos en registros de datos. El TP de asociado puede emitir verbos de conversación básica y proporcionar la capa de asignación, o bien puede usar verbos mapped-conversation (si el TP de asociado usa una implementación de APPC que admite verbos de conversación asignada). Para obtener más información, consulte los manuales de IBM SNA.
synclevel
Parámetro proporcionado. Especifica el nivel de sincronización de la conversación. Determina si los TP pueden solicitar confirmación de recepción de datos y confirmar la recepción de datos.
AP_NONE especifica que el procesamiento de confirmación no se usará en esta conversación.
AP_CONFIRM_SYNC_LEVEL especifica que los TP pueden usar el procesamiento de confirmación en esta conversación.
AP_SYNCPT especifica que los CSP pueden usar el procesamiento de confirmación de punto de sincronización 2 en esta conversación.
reserv3
Campo reservado.rtn_ctl
Parámetro proporcionado. Especifica cuándo la LU local, que actúa en una solicitud de sesión del TP local, debe devolver el control al TP local. Para obtener información sobre las sesiones, vea Acerca de los programas de transacción.AP_IMMEDIATE especifica que la LU asigna una sesión ganadora de contención, si hay una disponible inmediatamente y devuelve el control al TP.
AP_WHEN_SESSION_ALLOCATED especifica que la LU no devuelve el control al TP hasta que asigna una sesión o encuentra uno de los errores documentados en Códigos de retorno de este tema. (Si el límite de sesión es cero, la LU devuelve el control inmediatamente). Si una sesión no está disponible, el TP espera uno.
AP_WHEN_SESSION_FREE especifica que la LU asigna una sesión de contención-ganador o de pérdida de contención, si hay una disponible o puede activarse, y devuelve el control al TP. Si se produce un error, (como se documenta en Códigos de retorno en este tema), la llamada se devolverá inmediatamente con el error en los campos primary_rc y secondary_rc .
AP_WHEN_CONWINNER_ALLOCATED especifica que la LU no devuelve el control hasta que asigna una sesión de ganador de contención o encuentra uno de los errores documentados en Códigos de retorno de este tema. (Si el límite de sesión es cero, la LU devuelve el control inmediatamente). Si una sesión no está disponible, el TP espera uno.
AP_WHEN_CONV_GROUP_ALLOCATED especifica que la LU no devuelve el control al TP hasta que asigna la sesión especificada por conv_group_ido encuentra uno de los errores documentados en Códigos de retorno de este tema. Si una sesión no está disponible, el TP espera a que se libere.
Nota:
AP_IMMEDIATE es el único valor de rtn_ctl que nunca hace que se inicie una nueva sesión. En el caso de los valores distintos de AP_IMMEDIATE, si una sesión adecuada no está disponible inmediatamente, Host Integration Server intenta iniciar una. Esto hace que se active la conexión a petición.
reserv4
Campo reservado.
conv_group_id
Parámetro proporcionado o devuelto. Especifica el identificador del grupo de conversación desde el que se debe asignar la sesión. El conv_group_id solo es necesario si rtn_ctlestá establecido en WHEN_CONV_GROUP_ALLOC. Cuandortn_ctl especifica un valor diferente y el primary_rc es AP_OK, se trata de un valor devuelto.
sense_data
Parámetro devuelto. Indica un error de asignación (reintento o sin reintento) y contiene datos de detección.
plu_alias
Parámetro proporcionado. Especifica el alias por el que se conoce la LU del asociado con el TP local.
El plu_alias debe coincidir con el nombre de una LU de asociado establecida durante la configuración.
El parámetro es una cadena de caracteres ASCII de 8 bytes. Puede constar de los caracteres ASCII siguientes:
Letras mayúsculas
Números del 0 al 9
Espacios
Caracteres especiales $, #, %y @
El primer carácter de esta cadena no puede ser un espacio.
Si el valor de este parámetro es de menos de ocho bytes, adjínelo a la derecha con espacios ASCII (0x20).
Si desea especificar la LU del asociado con el parámetro fqplu_name , rellene este parámetro con ceros binarios.
Para un usuario o grupo mediante CSP, 5250 emuladores o aplicaciones APPC, el administrador del sistema puede asignar LU locales y remotas predeterminadas. En este caso, el campo se deja en blanco o null y se obtiene acceso a las LU predeterminadas cuando el usuario o el miembro del grupo inicia un programa APPC. Para obtener más información sobre las LU predeterminadas, vea Ayuda de Microsoft Host Integration Server.
mode_name
Parámetro proporcionado. Especifica el nombre de un conjunto de características de red definidas durante la configuración.El valor de mode_name debe coincidir con el nombre de un modo asociado a la LU del asociado durante la configuración.
El parámetro es una cadena de caracteres EBCDIC de 8 bytes. Puede constar de caracteres del tipo A juego de caracteres EBCDIC:
Letras mayúsculas
Números del 0 al 9
Caracteres especiales $, #y @
El primer carácter de la cadena debe ser una letra mayúscula o un carácter especial.
No use SNASVCMG en una conversación asignada. SNASVCMG es una mode_name reservada que APPC usa internamente. No se recomienda usar este nombre en una conversación básica.
tp_name
Parámetro proporcionado. Especifica el nombre del TP invocado. El valor de tp_name especificado por ALLOCATE en el TP invocado debe coincidir con el valor de tp_name especificado por RECEIVE_ALLOCATE en el TP invocado.El parámetro es una cadena de caracteres EBCDIC de 64 bytes y distingue mayúsculas de minúsculas. El parámetro tp_name puede constar de los siguientes caracteres EBCDIC:
Letras mayúsculas y minúsculas
Números del 0 al 9
Caracteres especiales $, #, @, y punto (.)
Si tp_name es inferior a 64 bytes, use espacios EBCDIC (0x40) para rellenarlo a la derecha.
La convención de SNA es que un nombre de TP de servicio puede tener hasta cuatro caracteres. El primer carácter es un byte hexadecimal entre 0x00 y 0x3F. Los demás caracteres proceden del juego de caracteres AE EBCDIC.
security
Parámetro proporcionado. Proporciona la información que la LU del asociado requiere para validar el acceso al TP invocado.En función de la seguridad de conversación establecida para el TP invocado durante la configuración, use uno de los valores siguientes:
AP_NONE para un TP invocado que no usa seguridad de conversación.
AP_PGM para un TP invocado que usa la seguridad de la conversación y, por tanto, requiere un identificador de usuario y una contraseña. Proporcione esta información a través de los parámetros user_id y pwd .
AP_PROXY_PGM para un TP invocado con proxy con privilegios que usa la seguridad de la conversación y, por tanto, requiere un identificador de usuario y una contraseña. Los punteros deben configurarse para proxy_user y proxy_domain para que apunten a cadenas Unicode que contengan el nombre de usuario y el nombre de dominio del usuario que se van a suplantar. La aplicación no necesita establecer los campos user_id y pwd .
AP_PROXY_SAME para un TP que se ha invocado mediante proxy con privilegios con un identificador de usuario y una contraseña válidos proporcionados por el proxy, que a su vez invoca otro TP. Los punteros deben configurarse para proxy_user y proxy_domain para que apunten a cadenas Unicode que contengan el nombre de usuario y el nombre de dominio del usuario que se van a suplantar. La aplicación no necesita establecer los campos user_id y pwd .
Por ejemplo, suponga que TP A invoca TP B con un identificador de usuario y una contraseña válidos proporcionados por el proxy con privilegios y TP B a su vez invoca TP C. Si TP B especifica el valor AP_PROXY_SAME, APPC enviará al LU para TP C el identificador de usuario de TP A y un indicador ya comprobado. Este indicador indica a TP C que no requiera la contraseña (si tp C está configurado para aceptar un indicador ya comprobado).
AP_PROXY_STRONG para un TP invocado con proxy con privilegios que usa la seguridad de la conversación y, por tanto, requiere un identificador de usuario y una contraseña proporcionados por el mecanismo de proxy con privilegios. Los punteros deben configurarse para proxy_user y proxy_domain para que apunten a cadenas Unicode que contengan el nombre de usuario y el nombre de dominio del usuario que se van a suplantar. La aplicación no necesita establecer los campos user_id y pwd . AP_PROXY_STRONG difiere de AP_PROXY_PGM en que AP_PROXY_STRONG no permite contraseñas de texto no cifrado. Si el sistema remoto no admite contraseñas cifradas (seguridad segura de conversación), se produce un error en esta llamada.
AP_SAME para un TP que se ha invocado con un identificador de usuario y una contraseña válidos, que a su vez invoca otro TP.
Por ejemplo, suponga que TP A invoca TP B con un identificador de usuario y una contraseña válidos, y TP B a su vez invoca TP C. Si TP B especifica el valor AP_SAME, APPC enviará al LU para TP C el identificador de usuario de TP A y un indicador ya comprobado. Este indicador indica a TP C que no requiera la contraseña (si tp C está configurado para aceptar un indicador ya comprobado).
Cuando se usa AP_SAME en un verbo ALLOCATE , la aplicación siempre debe proporcionar valores para los parámetros user_id y pwd en el bloque de control de verbos. Según las propiedades negociadas entre el servidor SNA y la LU del mismo nivel, el verbo ALLOCATE enviará uno de los tres tipos de mensajes Attach (FMH-5), en este orden de prioridad:
Si las LU han negociado la seguridad "ya comprobada", la asociación enviada por el servidor SNA no incluirá el contenido del campo de parámetro pwd especificado en el VCB.
Si las LU han negociado la seguridad de "comprobación persistente", el attach enviado por el servidor SNA incluirá el parámetro pwd especificado en el VCB, pero solo cuando Attach es el primero para el parámetro user_id especificado desde el inicio de la sesión lu-LU y omitirá el parámetro pwd en todos los adjuntos subsiguientes (emitidos por la aplicación o cualquier otra aplicación que use este triplet en modo LU-LU).
Si las LU no han negociado ninguna de las anteriores, el attach enviado por el servidor SNA omitirá los parámetros user_id y pwd en todos los attaches.
La aplicación no puede saber qué modo de seguridad se ha negociado entre las LU, ni puede indicar si el verbo ALLOCATE que está emitiendo es el primero para ese triplet en modo LU-LU. Por lo tanto, la aplicación siempre debe establecer los campos de parámetro user_id y pwd en el VCB cuando la seguridad se establece en AP_SAME.
Para obtener más información sobre la comprobación persistente y la seguridad ya comprobada, consulte la guía de formatos de SNA, sección "Fm Header 5: Attach (LU 6.2)".
AP_STRONG para un TP invocado que usa la seguridad de la conversación y, por tanto, requiere un identificador de usuario y una contraseña. Proporcione esta información a través de los parámetros user_id y pwd . AP_STRONG difiere de AP_PGM en que AP_STRONG no permite contraseñas de texto no cifrado. Si el sistema remoto no admite contraseñas cifradas (seguridad segura de conversación), se produce un error en esta llamada.
Si se va a usar la característica de inicio de sesión automático de APPC, la seguridad debe establecerse en AP_PGM. Para obtener información detallada, consulte la sección Comentarios.
reserv5
Campo reservado.pwd
Parámetro proporcionado. Especifica la contraseña asociada a user_id.El parámetro pwd solo es necesario si la seguridad está establecida en AP_PGM o AP_SAME. Debe coincidir con la contraseña de user_id que se estableció durante la configuración.
El parámetro pwd es una cadena de caracteres EBCDIC de 10 bytes y distingue mayúsculas de minúsculas. Puede constar de los siguientes caracteres EBCDIC:
Letras mayúsculas y minúsculas
Números del 0 al 9
Caracteres especiales $, #, @, y punto (.)
Si la contraseña es inferior a 10 bytes, use espacios EBCDIC (0x40) para rellenarla a la derecha.
Si se va a usar la característica de inicio de sesión automático de APPC, la cadena de caracteres pwd debe codificarse de forma rígida en MS$SAME. Para obtener información detallada, consulte la sección Comentarios.
user_id
Parámetro proporcionado. Especifica el identificador de usuario necesario para acceder al TP del asociado. Solo es necesario si el parámetro de seguridad está establecido en AP_PGM o AP_SAME.El parámetro user_id es una cadena de caracteres EBCDIC de 10 bytes y distingue mayúsculas de minúsculas. Debe coincidir con uno de los identificadores de usuario configurados para el TP del asociado.
El parámetro puede constar de los siguientes caracteres EBCDIC:
Letras mayúsculas y minúsculas
Números del 0 al 9
Caracteres especiales $, #, @, y punto (.)
Si user_id es inferior a 10 bytes, use espacios EBCDIC (0x40) para rellenarlo a la derecha.
Si se va a usar la característica de inicio de sesión automático de APPC, la cadena de caracteres user_id debe codificarse de forma rígida en MS$SAME. Para obtener información detallada, consulte la sección Comentarios.
pip_dlen
Parámetro proporcionado. Especifica la longitud de los parámetros de inicialización del programa (PIP) que se pasarán al TP del asociado. El intervalo va de 0 a 32767.pip_dptr
Parámetro proporcionado. Especifica la dirección del búfer que contiene datos PIP. Use este parámetro solo si pip_dlen es mayor que cero.Los datos de PIP pueden constar de parámetros de inicialización o información de configuración ambiental requerida por un TP de asociado o un sistema operativo remoto. Los datos de PIP deben seguir el formato de flujo de datos general (GDS). Para obtener más información, consulte Referencia de SNA LU6.2: Protocolos del mismo nivel publicados por IBM.
Para Windows, el búfer de datos puede residir en un área de datos estática o en un área asignada globalmente. El búfer de datos debe caber completamente dentro de esta área.
reserv7
Campo reservado.fqplu_name
Parámetro proporcionado. Especifica el nombre completo de la LU del asociado. Debe coincidir con el nombre completo de la LU local definida en el nodo remoto. El parámetro consta de dos cadenas de caracteres EBCDIC de tipo para netID y el nombre de LU del LU asociado. Los nombres están separados por un punto EBCDIC (.).Este nombre debe proporcionarse si no se especifica ningún plu_alias . Puede constar de los siguientes caracteres EBCDIC:
Letras mayúsculas
Números de 0 a 9
Caracteres especiales $, #y @
Si el valor de este parámetro es inferior a 17 bytes, adítelo a la derecha con espacios EBCDIC (0x40).
reserv8
Campo reservado.proxy_user
Parámetro proporcionado. Especifica un LPWSTR que apunta a una cadena Unicode que contiene el nombre de usuario que se va a suplantar mediante la característica de proxy con privilegios. Este campo solo se puede usar cuando el bit de AP_EXTD_VCB se establece en el campo opext , lo que indica un VCB extendido.proxy_domain
Parámetro proporcionado. Especifica un LPWSTR que apunta a una cadena Unicode que contiene el nombre de dominio del usuario que se va a suplantar mediante la característica de proxy con privilegios. Este campo solo se puede usar cuando el bit de AP_EXTD_VCB se establece en el campo opext , lo que indica un VCB extendido.reserv9
Campo reservado.
Códigos de retorno
AP_OK
Código de retorno principal; el verbo se ha ejecutado correctamente.
AP_UNSUCCESSFUL
Código de retorno principal; el parámetro proporcionado rtn_ctl el retorno inmediato (AP_IMMEDIATE) del control al TP y el LU local no tenía una sesión de contención-ganador disponible.
AP_PARAMETER_CHECK
Código de retorno principal; el verbo no se ha ejecutado debido a un error en un parámetro.
AP_BAD_RETURN_CONTROL
Código de retorno secundario; el valor especificado para rtn_ctl no era válido.
AP_BAD_SECURITY
Código de retorno secundario; el valor especificado para la seguridad no era válido.
AP_BAD_SYNC_LEVEL
Código de retorno secundario; el valor especificado para sync_level no era válido.
AP_BAD_TP_ID
Código de retorno secundario; el valor especificado para tp_id no era válido.
AP_PIP_LEN_INCORRECT
Código de retorno secundario; el valor de pip_dlen era mayor que 32767.
AP_UNKNOWN_PARTNER_MODE
Código de retorno secundario; el valor especificado para mode_name no era válido.
AP_BAD_PARTNER_LU_ALIAS
Código de retorno secundario; APPC no reconoció el partner_lu_alias proporcionado.
AP_BAD_CONV_TYPE (para una conversación básica)
Código de retorno secundario; el valor especificado para conv_type no era válido.
AP_NO_USE_OF_SNASVCMG (para una conversación asignada)
Código de retorno secundario; SNASVCMG no es un valor válido para mode_name.
AP_INVALID_DATA_SEGMENT
Código de retorno secundario; los datos pip eran más largos que el segmento de datos asignado o la dirección del búfer de datos PIP era incorrecta.
AP_ALLOCATION_ERROR
Código de retorno principal; APPC no ha podido asignar una conversación. El estado de la conversación se establece en RESET.
Este código se puede devolver a través de un verbo emitido después de ALLOCATE.
AP_ALLOCATION_FAILURE_NO_RETRY
Código de retorno secundario; la conversación no se puede asignar debido a una condición permanente, como un error de configuración o un error de protocolo de sesión. Para determinar el error, el administrador del sistema debe examinar el archivo de registro de errores. No vuelva a intentar la asignación hasta que se haya corregido el error.
AP_ALLOCATION_FAILURE_RETRY
Código de retorno secundario; No se pudo asignar la conversación debido a una condición temporal, como un error de vínculo. El motivo del error se registra en el registro de errores del sistema. Vuelva a intentar la asignación.
AP_COMM_SUBSYSTEM_ABENDED
Código de retorno principal; indica una de las condiciones siguientes:
El nodo utilizado por esta conversación encontró una anulación.
La conexión entre el TP y el nodo PU 2.1 se interrumpió (un error de LAN).
El proceso SnaBase que se ejecuta en el equipo del TP encontró una anulación.
El administrador del sistema debe examinar el registro de errores a fin de determinar el motivo de la anulación.
AP_COMM_SUBSYSTEM_NOT_LOADED
Código de retorno principal; no se pudo cargar o finalizar un componente necesario durante el procesamiento del verbo. Por tanto, no se pudo establecer la comunicación. Consulte al administrador del sistema para aplicar una acción correctiva.Cuando este código de retorno se usa con ALLOCATE, puede indicar que no se puede encontrar ningún sistema de comunicaciones para admitir la LU local. (Por ejemplo, el alias de LU local especificado con TP_STARTED es incorrecto o no se ha configurado). Tenga en cuenta que si lu_alias o mode_name tiene menos de ocho caracteres, debe asegurarse de que estos campos estén llenos de espacios a la derecha. Este error se devuelve si estos parámetros no se rellenan con espacios, ya que no hay ningún nodo disponible que pueda satisfacer la solicitud ALLOCATE .
Cuando ALLOCATE genera este código de retorno para el sistema configurado con varios nodos mediante Host Integration Server, hay dos códigos de retorno secundarios de la siguiente manera:
0xF0000001
Código de retorno secundario; no se ha iniciado ningún nodo.
0xF0000002
Código de retorno secundario; se ha iniciado al menos un nodo, pero la LU local (cuando se emite TP_STARTED ) no está configurada en ningún nodo activo. El problema podría ser cualquiera de los siguientes:
No se inicia el nodo con la LU local.
La LU local no está configurada.
AP_INVALID_VERB_SEGMENT
Código de retorno principal; el bloque de control de verbo (VCB) se ha extendido más allá del final del segmento de datos.AP_STACK_TOO_SMALL
Código de retorno principal; el tamaño de la pila de la aplicación es demasiado pequeño para ejecutar el verbo. Aumente el tamaño de pila de la aplicación.AP_CONV_BUSY
Código de retorno principal; solo puede haber un verbo de conversación pendiente a la vez en cualquier conversación. Esto puede ocurrir si el TP local tiene varios subprocesos y más de un subproceso emite llamadas APPC con la misma conv_id.AP_THREAD_BLOCKING
Código de retorno principal; el subproceso que llama ya está en una llamada de bloqueo.AP_UNEXPECTED_DOS_ERROR
Código de retorno principal; el sistema operativo devolvió un error a APPC al procesar una llamada de APPC desde el TP local. El código de retorno del sistema operativo se devuelve a través de secondary_rc. Aparece en el orden de intercambio de bytes de Intel. Si el problema persiste, consulte con el administrador del sistema.
Comentarios
ALLOCATE puede establecer una conversación básica o asignada.
El estado de la conversación es RESET cuando el TP emite este verbo. Después de la ejecución correcta (primary_rc se AP_OK), el estado cambia a SEND. Si el verbo no se ejecuta, el estado permanece sin cambios.
Varios parámetros de ALLOCATE son cadenas EBCDIC o ASCII. Un TP puede usar el verbo de servicio común (CSV) CONVERT para traducir una cadena de un juego de caracteres al otro.
Para enviar la solicitud ALLOCATE inmediatamente, el TP de invocación puede emitir FLUSH o CONFIRM inmediatamente después de ALLOCATE. De lo contrario, la solicitud ALLOCATE se acumula con otros datos en el búfer de envío de la LU local hasta que el búfer está lleno.
Al emitir CONFIRM después de ALLOCATE, el TP de invocación puede determinar inmediatamente si la asignación se realizó correctamente (si synclevel se establece en AP_CONFIRM_SYNC_LEVEL).
Normalmente, el valor del parámetro mode_name del verbo ALLOCATE debe coincidir con el nombre de un modo configurado para el nodo del TP invocado y asociado durante la configuración con la LU del asociado.
Si uno de los modos asociados a la LU del asociado en el nodo del TP invocado es un modo implícito, la sesión establecida entre las dos LU será del modo implícito cuando ningún nombre de modo asociado a la LU del asociado coincida con el valor de mode_name.
Host Integration Server admite una característica denominada sustitución de contraseñas. Se trata de una característica de seguridad compatible con el sistema operativo IBM i que cifra cualquier contraseña que fluya entre dos nodos en un mensaje Attach. Una contraseña fluye en attach cada vez que alguien invoca un programa de transacciones APPC que especifica un identificador de usuario y una contraseña. Por ejemplo, esto sucede siempre que alguien inicie sesión en un IBM i.
La compatibilidad con la sustitución de contraseñas se indica estableciendo el bit 5 en byte 23 de la solicitud BIND en 1 (lo que indica que se admite la sustitución de contraseñas). Si el sistema remoto establece este bit en la respuesta BIND, el servidor SNA cifra automáticamente la contraseña de seguridad de conversación LU 6.2 incluida en el mensaje FMH-5 Attach. Las aplicaciones APPC que usan Host Integration Server aprovechan automáticamente esta característica estableciendo el campo de seguridad del VCB en AP_PGM o AP_STRONG en la solicitud ALLOCATE .
Si una aplicación APPC quiere forzar el flujo de una contraseña cifrada, la aplicación puede especificar AP_STRONG para el campo de seguridad del VCB en la solicitud ALLOCATE . Esta opción se implementa como se define en IBM i V3R1 y se documenta en la referencia del programador de IBM i CPI-C como CM_SECURITY_PROGRAM_STRONG, donde el campo LU 6.2 pwd (contraseña) se cifra antes de que fluya a través de la red física.
Actualmente, las características de sustitución de contraseñas solo son compatibles con IBM i V3R1 o posterior. Si el sistema remoto no admite esta característica, el servidor SNA desenlacerá la sesión con el código de sentido de 10060006. Los dos nodos negocian si admiten o no esta característica en el intercambio BIND. Host Integration Server establece un poco en BIND y también agrega algunos datos aleatorios en BIND para el cifrado. Si el nodo remoto admite la sustitución de contraseñas, establece el mismo bit en la respuesta BIND y agrega algunos datos aleatorios (diferentes) para el descifrado.
Host Integration Server admite el inicio de sesión automático para aplicaciones APPC. Esta característica requiere una configuración específica por parte del administrador de red: la aplicación APPC debe invocarse en el lado LAN desde un cliente de Host Integration Server. El cliente debe iniciar sesión en un dominio de Windows, pero el cliente puede ejecutarse en cualquier sistema operativo compatible con las API de APPC de Host Integration Server.
La aplicación cliente se codifica para usar la seguridad de nivel de "programa", con un nombre de usuario APPC codificado de forma rígida especial MS$SAME y la contraseña MS$SAME. Cuando esta asignación de sesión fluye desde el cliente al servidor SNA, el servidor busca la cuenta de host y la contraseña correspondientes a la cuenta de Windows en la que el cliente ha iniciado sesión y sustituye la información de la cuenta host en el mensaje de asociación de APPC que envía al host.
Nota
No es válido que el nodo remoto establezca el bit que especifica la sustitución de contraseñas y no agregue los datos aleatorios.
Según IBM, hay implementaciones de sustitución de contraseñas lu 6.2 que no admiten la sustitución de contraseñas, pero que devuelven el bit de sustitución de contraseñas a Host Integration Server, sin especificar datos aleatorios. Al hacerlo, el servidor SNA DESENLACErá la sesión con el código de sentido 10060006.Este código de sentido se interpreta como:
1006 = Falta el campo o el parámetro requeridos.
0006 = Se omitió un subcampo necesario de un vector de control.
Host Integration Server también debe registrar un evento 17 (error de activación de sesión de APPC: BIND respuesta negativa enviada).
La solución correcta es que la implementación con errores se corrija. Sin embargo, como solución alternativa a corto plazo, se puede establecer la siguiente configuración del Registro del servicio Host Integration Server:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\snaservr\parameters\NOPWDSUB: REG_SZ: SÍ
Cuando se especifica este parámetro en el Registro, se deshabilitará la compatibilidad con la sustitución de contraseñas.
Se han realizado varias actualizaciones en Host Integration Server para permitir que una aplicación APPC con privilegios abra una conversación de APPC mediante la característica Single Sign-On en nombre de cualquier usuario de Windows definido. Esto se conoce como la característica de proxy con privilegios. Se ha agregado una extensión al verbo APPC ALLOCATE para invocar esta característica.
Una aplicación APPC pasa a tener privilegios al iniciarse en una cuenta de usuario de Windows que sea miembro de un grupo especial de Windows. Cuando se configura un dominio de seguridad de host, el Administrador de SNA definirá un segundo grupo de Windows para usarlo con las características de seguridad de host de Host Integration Server. Si la cuenta de usuario con la que se ejecuta el cliente real es miembro de este segundo grupo de Windows, el cliente tiene privilegios para iniciar una conversación appC en nombre de cualquier cuenta de usuario definida en la caché de cuentas de host.
A continuación se muestra cómo funciona la característica de proxy con privilegios:
El administrador de Host Integration Server crea un dominio de seguridad de host denominado APP. El Administrador de SNA ahora crea dos grupos de Windows. El primer grupo se denomina APP y el segundo se llama APP_PROXY para este ejemplo. Los usuarios asignados al grupo APP están habilitados para el inicio de sesión único. Los usuarios asignados al grupo de APP_PROXY son servidores proxy con privilegios. El administrador agrega el usuario de Windows AppcUser al grupo de APP_PROXY mediante el botón Usuarios del cuadro de diálogo Dominio de seguridad de host del Administrador de SNA.
A continuación, el administrador configura una aplicación APPC en Host Integration Server para que se ejecute como un servicio de Windows denominado APPCAPP y ese servicio se ha configurado para funcionar en la cuenta de usuario de AppcUser. Cuando se ejecuta APPCAPP, abre una sesión de APPC a través de un verbo ALLOCATE con el formato VCB extendido y especifica el nombre de usuario de Windows del usuario deseado, UserA (por ejemplo).
El servicio SNA ve la solicitud de sesión procedente de una conexión que es miembro de la aplicación de dominio de seguridad de host. La interfaz cliente/servidor indica al servicio SNA que el cliente real es AppcUser.
El servicio SNA comprueba si AppcUser es miembro del grupo de APP_PROXY. Dado que AppcUser es miembro de APP_PROXY, el servicio SNA inserta el nombre de usuario/contraseña para UserA en el comando APPC Attach (FMH-5) y lo envía al TP del asociado.
Para admitir la característica de proxy con privilegios, la aplicación APPC debe implementar la siguiente lógica de programa:
La aplicación APPC debe determinar el identificador de usuario de Windows y el nombre de dominio que desea suplantar.
La aplicación APPC debe establecer los parámetros siguientes antes de llamar al verbo ALLOCATE :
Habilite el uso de la estructura extendida del bloque de control de verbo ALLOCATE estableciendo la marca AP_EXTD_VCB en el campo opext .
Establezca la seguridad en AP_PROXY_SAME, AP_PROXY_PGM o AP_PROXY_STRONG.
Configure los punteros para proxy_user y proxy_domain para que apunten a cadenas Unicode que contienen el nombre de usuario y el nombre de dominio del usuario que se van a suplantar.
Nota:
La aplicación no necesita configurar los campos user_id y pwd en el VCB ALLOCATE .
Cuando la aplicación APPC realiza los pasos anteriores y emite el verbo ALLOCATE , el servidor host Integration Server realizará una búsqueda en el dominio de seguridad del host para el usuario de Windows especificado y establecerá los campos id. de usuario y contraseña en el mensaje FMH-5 Attach enviado al sistema remoto.