Configurar el servicio de token

El Servicio de token autentica usuarios cuando se utiliza la Autenticación ASP.NET (en otras palabras, cuando se utiliza SQL Server o un proveedor personalizado para los almacenamientos de usuario y rol). Un token funciona como una clave para acceder a un servicio protegido y sólo se otorga a los usuarios autenticados. El token es una cadena de información cifrada que contiene el nombre de usuario, el tiempo de expiración y otra información. El token se le otorga al usuario autenticado a través de los servicios Web disponibles en <instancia de ArcGIS Server>/Tokens.

Los tokens ofrecen un nivel de seguridad para los servicios Web de SIG pero no son tan seguros como otros métodos, como la Autenticación de Windows integrada. La seguridad del sistema con tokens depende del control del acceso a los tokens. Las solicitudes de tokens requieren una conexión segura (HTTPS) por defecto, pero usted también puede requerir HTTPS para todas las solicitudes que utilicen el token. Esto significa requerir HTTPS para la carpeta que contiene los servicios SIG protegidos. Puede requerir HTTPS para una carpeta de servicios abriendo las propiedades de la carpeta en el Administrador o en ArcCatalog y marcando la casilla Requiere acceso Web cifrado.

El servicio de token es un servicio Web que se instala con los componentes de las aplicaciones Web de ArcGIS durante la instalación de ArcGIS Server. En la versión actual del software, el servicio de token se habilita automáticamente cuando se necesita. El servicio de token se habilita cuando especifica que los usuarios se almacenarán en Microsoft SQL Server o en un proveedor de pertenencia personalizado (consulte Información general sobre la configuración de usuarios y roles). El servicio de token no se habilita o no se utiliza cuando especifica que se utilicen las cuentas de usuario de Windows para autenticar los usuarios de los servicios SIG, a menos que utilice SQL Server o un proveedor personalizado para los roles y habilite los tokens para la autenticación de los usuarios.

Cuando habilita el servicio de token, puede establecer el tiempo de espera máximo permisible para los tokens. Esta configuración se describe en Fecha de expiración de los tokens. También puede configurar la clave de cifrado con un valor único para la instalación; para obtener más información, consulte Clave compartida para servicio de token. Estos son los únicos pasos de configuración disponibles para el servicio de token.

Cuando se requieren tokens para un servicio SIG, el software cliente usa el servicio SIG de esta manera:

  1. El cliente realiza la solicitud del servicio SIG.
  2. El servidor SIG informa que se requiere un token y brinda la URL del servicio de token.
  3. El cliente solicita un token al servicio de token introduciendo un nombre de usuario y contraseña válidos.
  4. El servicio de token valida el nombre de usuario y la contraseña con la base de datos (o proveedor de pertenencia personalizado) y, si son válidos, devuelve un token al cliente.
  5. El cliente realiza la solicitud del servicio SIG e incluye el token junto con la solicitud.
  6. El servidor SIG valida el token y envía la respuesta para la solicitud del servicio al cliente.

¿Qué sucede si desea permitir que los usuarios tengan acceso a los servicios sin necesidad de un token o inicio de sesión? Puede permitir el acceso anónimo a los servicios o carpetas utilizando el rol Todos (consulte Establecer permisos para un servicio o carpeta).

Cuando se habilita y solicita el servicio de token para acceder a los servicios SIG, el software cliente debe ser capaz de obtener y usar el token, como en el proceso que se describe arriba. Los clientes de Esri obtienen y utilizan los tokens automáticamente. Cuando se conecta a un servicio de ArcGIS Server en Internet que requiere inicio de sesión, el comportamiento del cliente es el siguiente:

Tenga en cuenta que cuando utiliza un token en las aplicaciones Web, el usuario final de la aplicación en el navegador no introduce credenciales para el servicio SIG. La información del inicio de sesión para el servicio debe especificarse de antemano en el Administrador o en el entorno del desarrollador. Se usan las mismas credenciales para todos los usuarios de la aplicación Web. La propia aplicación Web se puede proteger para solicitar un inicio de sesión, pero este se valida por separado, basada en la configuración de seguridad para la aplicación Web en el Administrador u otros medios. Si utiliza programación personalizada, es posible pasar las credenciales desde el usuario final hacia el servicio SIG. Consulte la Ayuda del desarrollador para obtener más información. Si utiliza la autenticación de IIS (usuarios almacenados en Windows), las credenciales pasan automáticamente desde la aplicación hacia los servicios Web subyacentes.

El Administrador permite establecer varios parámetros para el servicio de token: la ventana de expiración para tokens (de corta y larga duración) y la clave compartida para el cifrado. A continuación se explica cada uno de estos ajustes.

Fecha de expiración de los tokens

Cuando el servicio de token está habilitado, puede establecer la fecha de expiración del token en el Administrador mediante Seguridad-Configuración. La fecha de expiración del token determina el período en el que será válido el token. El usuario final verá una fecha de expiración u otro mensaje de error si utiliza un token que expiró.

Las fechas de expiración más cortas ofrecen mayor seguridad pero pueden hacer que los usuarios legítimos obtengan errores de fecha de expiración mientras utilizan los servicios, si la aplicación no detecta esto y obtiene un nuevo token (los clientes de escritorio y ADF pueden obtener nuevos tokens). Los tokens tienen una configuración de fecha de expiración para limitar el uso no autorizado. Si un hacker logra monitorear la comunicación entre un usuario autorizado y el servidor, el hacker puede capturar el token. Si intercepta el token, la fecha de expiración limitará su período de uso. Para mayor seguridad, puede establecer la fecha de expiración de los tokens con un período más corto. La desventaja de una fecha de expiración más corta es que el desarrollador deberá insertar un nuevo token en la aplicación antes de que el token expire.

Si está creando una aplicación personalizada, puede detectar la fecha de expiración del token y proveer un mensaje apropiado u obtener un nuevo token. Consulte la Ayuda del desarrollador para obtener más información.

En la página Seguridad > Configuración se definen dos ventanas de expiración de token:

Una buena manera de evitar que los tokens se capturen y utilicen sin autorización es requerir el uso de HTTPS (SSL) para todas las comunicaciones con los servicios SIG. Para lograrlo, debe requerir comunicaciones protegidas (SSL) para las aplicaciones Web de ArcGIS o de los servicios. Para obtener más instrucciones sobre cómo requerir HTTPS (SSL) para una aplicación en IIS, consulte Configurar SSL.

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 demás información, y se envía al cliente. Cuando el cliente envía una solicitud de un servicio SIG, incluye el token. El servidor utiliza entonces la clave para descifrar el token. El servidor verifica la identidad del cliente antes de permitirle acceder al servicio SIG. 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. El Administrador configurará la clave con un valor aleatorio cuando se habilite el servicio de token. Si lo desea, puede configurar la clave usted mismo. Para configurar la clave compartida, vaya a Seguridad > Configuración en el Administrador, y, debajo del encabezado Servicio de token, haga clic en el botón Configuración. En el cuadro de diálogo Configuración que aparece, establezca el valor de la clave Compartida. 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, incluso 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 el token. Debido a que los usuarios no deben usar o recordar la clave, la complejidad de la clave no representa un problema como puede serlo con las contraseñas.

El token se cifra con la clave a través del método de cifrado 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 estándar 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 la solicitud manual de tokens. Generalmente, esto se solicita sólo cuando se construyen aplicaciones Web con el API JavaScript de ArcGIS o para evaluaciones y resolución de problemas. Los clientes como las aplicaciones Web ADF y ArcGIS Desktop recuperan automáticamente los tokens y no necesitan esta página. La página GetToken está ubicada en el servidor Web en https://<servidor web>/ArcGIS/Tokens/gettoken.html (o, si instaló un nombre de instancia que no sea el predeterminado, sustituya el nombre por ArcGIS).

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

Si le preocupa el posible mal uso de la página GetToken, puede quitarla o limitar el acceso utilizando el Administrador de IIS o los permisos del sistema de archivos. Tenga en cuenta que aunque la página GetToken no esté disponible, se pueden realizar solicitudes de tokens al servicio de token a la carpeta, con la solicitud de gettoken, utilizando el formato requerido que se describe en la próxima secció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 (HTTPS/SSL) segura a continuación.

  • 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: la 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. Este parámetro se debe especificar si el valor del parámetro client es referrer.

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

    • requestip: si el valor se especifica como requestip (IP de solicitud), se genera el token para la IP desde donde 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 en 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 esta función está incluida, la salida siempre se devuelve en un 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 (HTTPS/SSL) segura a continuación.

  • 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. Este parámetro se debe especificar si el valor del parámetro client 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 solicitud), se genera el token para la IP desde donde 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 superar el tiempo máximo permitido para el token de larga duración.

    Ejemplo: expiration=60

    NotaNota:

    Si no se incluyen los parámetros client y expiration, se generará un token de corta duración y la expiración utilizará la configuración de la fecha de expiración del 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 el parámetro callback está incluido, la salida siempre se devuelve en un formato json.

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 usar HTTPS cuando solicite un token, ya sea a través del método estándar donde se incluyen el nombre de usuario y la contraseña en la cadena de caracteres de consulta (usada por ArcGIS Desktop, los controles ADF Web 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. El uso de HTTP para los tokens debería utilizarse sólo en un servidor de desarrollo donde las políticas de la organización prohíban la instalación del servidor Web IIS en el equipo de desarrollo. Bajo estas circunstancias, se realiza el desarrollo mediante un servidor Web basado en archivos en Visual Studio (Cassini), que no es compatible con el uso de SSL/HTTPS. Cuando IIS esté disponible, debe utilizar SSL para proteger los nombres de usuario y contraseñas contra la captura y uso no autorizado. Para obtener más información sobre cómo configurar SSL, consulte Configurar SSL.

Para configurar el servicio de token para que admita solicitudes de tokens con HTTP no protegidas, siga estos pasos:

  1. Abra el archivo <raíz del servidor Web>\ArcGIS\Tokens\web.config con un editor de texto o de XML (si la instancia de ArcGIS no se encuentra en la ubicación predeterminada, C:\Inetpub\wwwroot\ArcGIS, vaya a la ubicación de la instancia de ArcGIS).
  2. Busque las siguientes etiquetas dentro de la sección <appSettings>: si no están las etiquetas, agréguelas.
     <appSettings> 	<add key="RequireSSL" value="True" />	 	<add key="TokenServiceURL" value="XYZ" /> <appSettings> 
  3. Establezca el valor de la clave RequireSSL como False y cambie el valor de TokenServiceURL de https a http. Después, guarde el archivo. No es necesario reiniciar IIS, debido a que cualquier cambio en el archivo web.config debería reiniciar la aplicación Servicio de token.
  4. Repita los pasos anteriores para los archivos web.config en <raíz del servidor Web>\ArcGIS\rest y <raíz del servidor Web>\ArcGIS\Services.

Recuerde restaurar el requisito de SSL cuando sea necesario. Para volver a habilitar el requisito de SSL en el servicio de token, restaure la configuración de RequireSSL a True, configure TokenServiceURL para que utilice https y guarde el archivo. Realice esta operación para cada archivo web.config en las carpetas Tokens, REST y Services.

Permitir el acceso al servicio de token a través de Internet

Como se mencionó anteriormente, los clientes ArcGIS Desktop, ArcGIS Explorer y ADF Web necesitan acceder al servicio de token para poder solicitar un token para los servicios protegidos. Si permite el acceso a una instancia de ArcGIS Server a través de Internet, deberá cambiar las URL para acceder al servicio de token de manera tal que se pueda encontrar en Internet.

Cuando se instala ArcGIS Server, este almacena el nombre del equipo en la URL para acceder al servicio de token. Esto dará resultado en una configuración de intranet, donde se pueda decidir el nombre del equipo. Sin embargo, cuando permite el acceso a ese equipo a través de Internet, los clientes no decidirán el nombre del equipo.

Para solucionar esta situación, debe cambiar los tres archivos web.config en las carpetas Tokens, REST y Services de la instancia de ArcGIS Server (<raíz Web>\<nombre de la instancia de ArcGIS>). Abra cada uno de los archivos web.config en un editor de texto y sigas estos pasos:

  1. dentro del elemento appSettings, busque el elemento con la clave: TokenServiceURL.
  2. Cambie el valor de esta clave de https://<nombre del equipo>/ArcGIS/tokens a https://<nombre de dominio público>/ArcGIS/tokens.

7/10/2012