Tokens y servicios de token

Un token se utiliza cuando la seguridad de ArcGIS Server se configura en la opción Autenticación administrada por ArcGIS. Un token representa la identidad de un usuario para un servicio Web de ArcGIS. Un servicio de token, que es un servicio Web, emite un token para una aplicación de cliente. Una aplicación de cliente debe proporcionar un token válido a un servicio Web de ArcGIS protegido para acceder a él.

Autenticación administrada por ArcGIS basada en tokens

La siguiente secuencia de eventos se produce siempre que una aplicación del cliente intenta acceder a un servicio Web de ArcGIS protegido:

  1. El cliente realiza una solicitud a un servicio Web de ArcGIS protegido.
  2. El servicio Web de ArcGIS informa que se requiere un token y brinda la URL del servicio de token.
  3. El cliente solicita un token al servicio de token al proporcionar un nombre de usuario y una contraseña válidos.
  4. El servicio de token valida el nombre de usuario y la contraseña y, si son válidos, devuelve un token al cliente.
  5. El cliente realiza una solicitud al servicio Web de ArcGIS protegido e incluye el token junto con la solicitud.
  6. El servicio ArcGIS valida el token, luego devuelve al cliente la respuesta para la solicitud del servicio.

Consumir servicios SIG protegidos mediante tokens

Cuando se habilita el servicio de token y éste es requerido para acceder a los servicios Web de ArcGIS, el software cliente debe ser capaz de obtener y utilizar el token, como en el proceso que se describe arriba. Las aplicaciones del cliente de ESRI, como ArcGIS Desktop, gestionan automáticamente el proceso de adquisición de tokens del servicio de token y la presentación de los tokens al servicio Web de ArcGIS protegido. A continuación se describe el comportamiento de los clientes de ArcGIS cuando se conectan a un servicio de Internet de ArcGIS Server que requiere la autenticación basada en token.

NotaNota:

En las aplicaciones Web, el usuario final de la aplicación no introduce credenciales para acceder al servicio de ArcGIS en el navegador. Las credenciales para acceder al servicio Web de ArcGIS se especifican cuando se construye la aplicación Web en el Administrador de ArcGIS Server o Eclipse/NetBeans IDE. Esta credencial se utiliza para todos los usuarios de la aplicación Web. La aplicación Web se puede proteger para requerir un inicio de sesión pero este inicio de sesión se valida en forma separada. La seguridad del nivel de la aplicación Web se puede configurar mediante el Administrador de ArcGIS Server. Si utiliza programación personalizada, es posible pasar las credenciales desde el usuario final hacia el servicio ArcGIS Web. Consulte la ayuda del desarrollador de ArcGIS Web para obtener más información.

Configurar un servicio de token

Un servicio de token es un servicio Web que se instala como parte de ArcGIS Server. Se comunica con los almacenamientos principales y de seguridad que mantienen la información de usuario y de rol para autenticar las solicitudes de tokens entrantes. Una vez que se autentican las credenciales de usuario, se emite un token y se puede utilizar para consumir un servicio Web de ArcGIS protegido.

Antes de comenzar un servicio de token en la instancia de ArcGIS Server, debe configurarlo. Para configurar un servicio de token, debe navegar a la página Configuración en el panel Seguridad en el administrador y hacer clic en la pestaña Seguridad para los servicios SIG. Elija la opción Autenticación del servicio de token de ArcGIS y haga clic en Configurar para configurar y comenzar un servicio de token en la instancia de ArcGIS Server.

Para obtener más información sobre los valores de inactividad de token y claves compartidas, consulte "Tiempo de espera de tokens" y "Clave compartida para el servicio de token" a continuación.

Se requiere conexión segura (HTTPS/SSL) para el servicio de token

Por defecto, se requiere una conexión segura que utilice HTTPS (Capa de sockets seguros o SSL) cuando se solicita un token al servicio de token. HTTPS cifra el nombre de usuario y la contraseña durante la transmisión. El cliente debe utilizar HTTPS cuando solicite un token, ya sea a través del uso del método estándar donde se incluye el nombre de usuario y la contraseña en la cadena de caracteres de consulta (utilizada por ArcGIS Desktop, los controles Web ADF y otros clientes), o a través de la página Web GetToken.html.

Sólo para fines de evaluación internos, se puede deshabilitar el requisito de HTTPS, para que se puedan obtener tokens mediante HTTP no protegidos. Tenga en cuenta que las contraseñas enviadas mediante HTTP pueden ser interceptadas por cualquier persona que se conecte a la red.

Tiempo de espera de tokens

Cuando el servicio de token está habilitado, puede establecer el tiempo de espera del token en el administrador; para ello, navegue a la página Configuración en el panel Seguridad y haga clic en Configurar en la pestaña Seguridad para los servicios SIG. Para mantener la seguridad del token, cada token está asociado con una fecha de expiración. El usuario final puede ver un mensaje de error de tiempo de espera o de otro error si utiliza un token que expiró.

Los tokens con fechas de expiración más cortas son más seguros, ya que un token comprometido sólo se puede utilizar dentro de una ventana de tiempo más pequeña. Sin embargo, una fecha de expiración corta significaría que las aplicaciones tengan que reciclar tokens con mayor frecuencia, lo que agrega una sobrecarga.

El servicio de token instalado con ArcGIS Server requiere que proporcione dos fechas de expiración durante la configuración:

Los desarrolladores de JavaScript que deseen consumir servicios protegidos pueden solicitar un token con una fecha de expiración específica mediante el uso de la página Web GetToken.

Para obtener más información sobre cómo solicitar tokens, consulte "Solicitar tokens" a continuación.

Clave compartida para el servicio de token

La clave compartida para el servicio de token se utiliza para cifrar el token. El token se cifra con el nombre de usuario y otra información y se envía al cliente. Cuando el cliente envía una solicitud de un servicio Web de ArcGIS, incluye el token. El servidor utiliza entonces la clave para descifrar el token. El servidor verifica la identidad del cliente antes de permitirle el acceso al servicio Web de ArcGIS. La clave compartida asegura que el servidor cree el token.

Debido a que la clave es fundamental para asegurar la identidad y autorización del cliente, debe configurarse con un valor único y con la longitud correcta. Para configurar la clave compartida, navegue a la página Configuración en el panel Seguridad y haga clic en Configurar en la pestaña Seguridad para los servicios SIG. En el cuadro de diálogo Configure el servicio de token local que aparece, establezca el valor para la propiedad Clave compartida para cifrar token. La clave debe tener 16 caracteres (si tiene menos de 16, no se usará). Se recomienda utilizar un conjunto de caracteres aleatorios para la clave. Se puede utilizar cualquier carácter, incluidos los caracteres que no son alfanuméricos. La clave debe configurarse con un valor que no sea fácil de descifrar, en caso de que alguna persona intercepte un token. Debido a que no es necesario que los usuarios utilicen o recuerden la clave, la complejidad de la clave no representa los mismos problemas que con las contraseñas.

El token se cifra con la clave a través del método de cifrado conocido como Estándar de cifrado avanzado (AES), también conocido como Rijndael. Los 16 caracteres de la clave representan los 128 bits utilizados para el cifrado.

Para obtener más información sobre el cifrado y el AES, consulte las referencias de seguridad o a alguna persona en la organización que tenga experiencia en seguridad y criptografía.

Página Web GetToken

Con el servicio de token, se ofrece una página HTML para habilitar las solicitudes manuales de tokens. Generalmente, esto se solicita sólo cuando se construyen aplicaciones Web con el API de ArcGIS Server para JavaScript o para evaluaciones y resolución de problemas. Los clientes como las aplicaciones ADF Web y ArcGIS Desktop recuperan automáticamente los tokens y no necesitan esta página. La página GetToken se ubica en la instancia de ArcGIS Server en https://<servidor web>:<puerto>/arcgis/tokens/gettoken.html (o si ha exportado el servicio de token y lo ha implementado en un servidor Web, sustituya <servidor web> con el nombre del dominio del servidor Web y reemplace arcgis/tokens con la ruta de contexto a la aplicación implementada).

Para utilizar la página GetToken, introduzca la siguiente información:

Formato de solicitud de token

Para obtener un token del servidor, debe hacer una solicitud de URL. Los clientes que trabajan con tokens, como ArcGIS Desktop, ADF Web, API Web, y los clientes móviles utilizan este enfoque, como lo hace la página GetToken descrita en la sección anterior.

Solicitar un token utilizando el extremo del token

Puede solicitar un token utilizando el extremo del token. Por ejemplo, la siguiente URL se puede utilizar para obtener un token de un servidor:

https://myserver.example.com/arcgis/tokens?request=gettoken&username=myuser&password=secret1&clientid=ref.myserver.example.com&expiration=1440&f=json&callback=myfunction

Esta solicitud obtendría un token para el usuario myuser para una aplicación Web que se ejecuta en el mismo servidor (myserver.example.com), con un período de validez de un día (1440 minutos).

En la cadena de caracteres de consulta se pueden especificar los siguientes parámetros:

  • request: el valor de este parámetro es siempre gettoken (request=gettoken). Requerido.

  • username: el nombre de usuario para un usuario del sistema. Requerido.

  • password: la contraseña para el usuario del sistema. Requerido.

    NotaNota:

    HTTPS/SSL cifra el nombre de usuario y la contraseña durante la transmisión de token. Para obtener más información, consulte la sección Conexión segura (HTTPS/SSL) arriba.

  • clientid: parámetro opcional que identifica al cliente. Utilice un carácter "." entre el tipo y el valor. Si no se especifica el clientid, el token utilizará una configuración de interrupción de token de corta duración.

    Valores:

    • ip: dirección IP del cliente.

      Ejemplo: clientid=ip.10.14.102.85

    • ref: la URL base de la aplicación Web donde se usará el token. Debe especificar este parámetro si el valor del parámetro del cliente es referrer.

      Ejemplo: clientid=ref.http://myserver/mywebapp

    • requestip: si el valor se especifica como requestip (IP de la solicitud), se generará el token para la IP desde la que se originó la solicitud.

      Ejemplo: clientid=requestip

  • expiration: parámetro opcional que especifica por cuanto tiempo será válido el token según el tiempo dado. El valor está en minutos. Si no se incluye este parámetro, la expiración usa la configuración de la fecha de expiración del token de corta duración.

  • f: este parámetro opcional, nuevo para ArcGIS Server 10.0 Service Pack 1 (SP1), especifica el formato de salida. Acepta el valor "json" para que devuelva el resultado en un formato json. Si no se especifica este parámetro, el token se generará en un formato de texto.

    Ejemplo: {"token":"hjSXkAQl2uczsyE9T3NDvhcso6WVYWSAqBcn1GFB-L8.","expires":"1289513369381"}

    El tiempo de expiración está representado en milisegundos a partir del 1 de enero de 1970.

  • callback: parámetro opcional que especifica el nombre de la función de devolución de llamada. Cuando se incluye la devolución de llamada, la salida siempre se devuelve en formato json.

Solicitar un token utilizando el extremo generateToken

En ArcGIS Server 10.0 Service Pack 1 (SP1), ahora puede solicitar un token utilizando el extremo generateToken. Por ejemplo, la siguiente URL se puede utilizar para obtener un token de un servidor:

https://myserver.example.com/arcgis/tokens/generateToken?username=myuser&password=mypass&client=referer|ip|requestip&referer=referer&ip=ipaddress&expiration=expiration&f=json&callback=myfunction

En la cadena de caracteres de consulta se pueden especificar los siguientes parámetros:

  • username: el nombre de usuario para el que se genera el token. Requerido.

  • password: la contraseña para el nombre de usuario. Requerido.

    NotaNota:

    HTTPS/SSL cifra el nombre de usuario y la contraseña durante la transmisión de token. Para obtener más información, consulte la sección Conexión segura (HTTPS/SSL) arriba.

  • client: parámetro opcional que identifica al cliente. Si no se especifica el clientid, el token utilizará una configuración de interrupción de token de corta duración.

    Valores:

    • referer: la URL base de la aplicación Web donde se usará el token. Debe especificar este parámetro si el valor del parámetro del cliente es referrer.

      Ejemplo: referer=http://myserver/mywebapp

    • ip: la dirección IP del equipo desde el que se utilizará el token. Este parámetro se debe especificar si el valor del parámetro client es ip.

      Ejemplo: ip=10.14.102.85

    • requestip: si el valor se especifica como requestip (IP de la solicitud), se generará el token para la IP desde la que se originó la solicitud.

  • expiration: parámetro opcional que especifica por cuanto tiempo será válido el token según el tiempo dado. El valor está en minutos. La expiración no puede ser mayor que el tiempo máximo permitido para un token de larga duración.

    Ejemplo: expiration=60

    NotaNota:

    Si no se incluyen los parámetros de client y expiration, se generará un token de corta duración y expiration usará la configuración de interrupción de token de corta duración.

  • f: parámetro opcional que especifica el formato de salida. Acepta el valor "json" para que devuelva el resultado en un formato json. Si no se especifica este parámetro, el token se generará en un formato de texto.

    Ejemplo: {"token":"hjSXkAQl2uczsyE9T3NDvhcso6WVYWSAqBcn1GFB-L8.","expires":"1289513369381"}

    El tiempo de expiración está representado en milisegundos a partir del 1 de enero de 1970.

  • callback: parámetro opcional que especifica el nombre de la función de devolución de llamada. Cuando se incluye el parámetro de devolución de llamada, la salida siempre se devuelve en formato json.


3/6/2012