8.8.3. Interfaz adicional para uso de recursos externos
Se puede acceder a un proveedor OpenID implementado por "1C:Enterprise" utilizando el protocolo estándar OpenID 2.0, teniendo en cuenta algunas características:
- Las solicitudes de autenticación interactiva y no interactiva (el parámetro openid.mode es igual a checkid_immediate o checkid_setup) a los parámetros openid.claimed_id y openid.identity se debe especificar el valor https://specs.openid.net/auth/2.0/identifier_select. Establecer este valor significa que el identificador del usuario lo determina el proveedor.
- Las solicitudes de autenticación no interactiva con otros valores para los parámetros openid.claimed_id y openid.identity dan como resultado una solicitud de autenticación interactiva, durante la cual el proveedor determina los valores de openid.claimed_id y openid.identity.
El proveedor de OpenID implementa un formulario para ingresar un nombre de usuario y una contraseña para la autenticación interactiva.
El sistema también proporciona una serie de comandos que simplifican el uso del proveedor OpenID por parte de sistemas de terceros, cuya descripción se proporciona a continuación. Al describir los comandos, se utilizan las siguientes abreviaturas:
- ProviderIB - base de información del proveedor OpenID;
- RPID - la base de información de una parte dependiente de OpenID.
Los parámetros de las solicitudes se transmiten con codificación UTF-8.
Solicitud de un documento XRDS de un proveedor de OpenID
Descripción:
Obtiene un documento XRDS que describe los atributos de un proveedor de OpenID.
Sintaxis:
https://example.com/ProviderIB/e1cib/oid2op
Valor de retorno:
Un documento XRDS que describe los atributos de un proveedor de OpenID.
Solicitud del documento XRDS de la parte dependiente de OpenID
Descripción:
Obtiene documentos XRDS que describen los atributos de la parte dependiente de OpenID.
Sintaxis:
https://example.com/RPIB/e1cib/oid2rp
Valor de retorno:
Documento XRDS que describe los atributos de la parte dependiente de OpenID.
Solicitud de autenticación
Descripción:
Realiza la solicitud de autenticación.
Sintaxis:
https://example.com/ProviderIB/e1cib/oid2op?cmd=auth
Nombre de usuario tal como se define en la base del proveedor de OpenID.
openid.auth.pwd obligatorio
Contraseña del usuario.
openid.auth.2FCode opcional
Código del segundo factor de autenticación.
opeind.auth.short opcional
Si los parámetros se establecen en el valor true, la autenticación se realiza en el margen de una sesión de navegador web, pero no más que el valor del parámetro lifetime del archivo default.vrd que describe la publicación de la base de información del proveedor de OpenID.
Se requiere verificar la respuesta a esta solicitud (el parámetro está establecido en el valor true). Solo tiene sentido si se especifica el parámetro openid.return_to.
openid.return_to opcional
Contiene la URL a la que se pasa después de procesar la solicitud.
Valor de retorno:
Si no se especifica el parámetro openid.return_to, se devuelve un documento vacío con un código de estado HTTP:
- 200 - la autenticación pasó con éxito;
- 400 - la autenticación falló;
- 402 - la autenticación con nombre de inicio de sesión y contraseña fue exitosa. Se requiere introducir el código del segundo factor. La respuesta debe tener un encabezado con el nombre 2FAType, que puede contener uno de los siguientes valores:
- secretCode - para la autenticación se debe ingresar un código secreto;
- external - el segundo factor se ejecuta en el lado del proveedor.
En el momento de recibir dicho código de respuesta, el proveedor de OpenID ya ha enviado la solicitud para realizar el segundo factor de autenticación al proveedor del segundo factor de autenticación.
Se supone que el proveedor de OpenID verificará la corrección del nombre de usuario y la contraseña, pero no creará una sesión de usuario cuando detecte la necesidad de realizar el segundo factor de autenticación. La sesión se creará en la próxima llamada al verificar nuevamente el nombre de usuario, la contraseña y el segundo factor.
Después de recibir una respuesta 402, se debe hacer lo siguiente:
- En el caso de autenticación mediante un código (secretCode) - añadir el código secreto como un parámetro adicional a la solicitud.
- En caso de autenticación del lado del proveedor (external) - no añadir nada. El servidor enviará una solicitud de verificación de autenticación y verificará el segundo factor.
Si se especifica el parámetro openid.return_to, se realiza una redirección a la dirección especificada en el parámetro. En caso de autenticación exitosa, se añaden los siguientes parámetros a la URL:
- openid.auth.user con el nombre de usuario como valor;
- openid.auth.uid con un identificador de una sola vez como valor, para validar la respuesta dada. Este parámetro se especifica si el parámetro openid.auth.check se especifica en la solicitud de autenticación.
Si falla la autenticación, se navega a la URL especificada sin añadir ningún parámetro.
Solicitud de autenticación de un proveedor de OpenID
Descripción:
Se realiza una solicitud de autenticación.
Sintaxis:
https://example.com/ProviderIB/e1cib/oid2op/2FACheck?user=xxx
Parámetros:
user obligatorio
El nombre de usuario (xxx) cuya autenticación se necesita verificar.
Valor de retorno:
Se devuelve un documento vacío con un código de estado HTTP:
- 200 - la autenticación fue exitosa, el usuario fue autenticado utilizando el segundo factor;
- 400 - la autenticación falló por una de las siguientes razones:
- No está especificado el parámetro user;
- Antes de esta solicitud, no había ninguna solicitud de autenticación habitual;
- La autenticación falló;
- El tiempo de autenticación se ha agotado.
Solicitud del proveedor de OpenID para verificar la autenticación activa
Descripción:
Se está verificando la autenticación.
Sintaxis:
https://example.com/ProviderIB/e1cib/oid2op?cmd=lookup
Parámetros:
Contiene la URL a la que se pasa después de procesar la solicitud.
openid.auth.check opcional
Se requiere verificar la respuesta a esta solicitud (el parámetro está establecido en el valor true). Solo tiene sentido si se especifica el parámetro openid.return_to.
Valor de retorno:
Redirige a la URL especificada en el parámetro openid.return_to. En caso de autenticación exitosa, se añaden los siguientes parámetros a la URL:
- openid.auth.user con el nombre de usuario como valor;
- openid.auth.uid con un identificador de una sola vez como valor, para validar la respuesta dada. Este parámetro se especifica si el parámetro openid.auth.check se especifica en la solicitud de autenticación.
Si falla la autenticación, se navega a la URL especificada sin añadir ningún parámetro.
Comprobar la respuesta del proveedor de OpenID
Descripción:
Comprueba la respuesta de un proveedor de OpenID para las solicitudes cmd=auth y cmd=lookup si el parámetro openid.auth.check se pasa en la solicitud con el valor true.
Sintaxis:
https://example.com/ProviderIB/e1cib/oid2op?cmd=check
Parámetros:
openid.auth.user obligatorio
Nombre de usuario que se obtiene del parámetro de la solicitud del mismo nombre.
openid.auth.uid obligatorio
Valor del identificador único de respuesta del proveedor de OpenID obtenido del parámetro de solicitud del mismo nombre.
Valor de retorno:
Se devuelve un documento del tipo text/plain con el siguiente contenido:
- is_valid:true - la respuesta está realmente formada por el proveedor OpenID utilizado. En este caso, el código de estado HTTP será igual a 200.
- is_valid:false - el proveedor de OpenID utilizado no generó una respuesta validada. En este caso, el código de estado HTTP será igual a 400.
Solicitud para cancelar la autenticación de la parte dependiente
Descripción:
Cancela la autenticación si no se conoce la URL del proveedor de OpenID. Finaliza la sesión actual, cancela la autenticación en el proveedor OpenID, reinicia el cliente web. El cliente web emitirá una solicitud para cancelar la autenticación para el proveedor de OpenID.
Sintaxis:
https://example.com/RPIB/e1cib/oid2op?cmd=logout
Solicitud para cancelar la autenticación para el proveedor de OpenID
Descripción:
Cancela la autenticación en el proveedor de OpenID especificado.
Sintaxis:
https://example.com/ProviderIB/e1cib/oid2op?cmd=logout
Parámetros:
openid.return_to opcional
Contiene la URL a la que se pasa después de procesar la solicitud.
Valor de retorno:
Si está especificado el parámetro openid.return_to, se realiza una redirección a la URL especificada, de lo contrario, se devuelve una respuesta vacía con el código de estado de HTTP igual a 200.