Next Topic

Previous Topic

Book Contents

Seguridad del servicio Web API VSA

General

El servicio Web API VSA es accesible, en forma predeterminada, desde cualquier dirección IP del mundo utilizando cualquier credencial de usuario de VSA válida. En esta configuración predeterminada, para la autenticación desde cualquier máquina se consideran combinaciones de nombre de usuario / contraseña válidas.

En cualquier configuración, el hash.dll suministrado por el VSA debe usarse para encriptar la contraseña para su envío. Los detalles de implementación para el hash.dll se encuentran en el código de origen de muestra suministrado.

Una vez que la solicitud de autenticación emite una SessionID, esta SessionID debe enviarse con cada invocación de servicio y sólo es válida cuando se recibe desde la dirección IP desde la que fue emitida. La SessionID emitida caduca después de un período de inactividad.

La seguridad puede aumentarse preparando y distribuyendo un archivo AccesRules.xml. Este archivo se usa por el servicio Web API VSA para definir las reglas de acceso en base a las direcciones IP desde las que se reciben las solicitudes. El filtrado de IP es un mecanismo que se usa comúnmente en los sistemas inter empresariales para asegurar que las solicitudes se cumplan sólo desde los servidores del socio.

El archivo AccesRules.xml se divide en tres secciones:

  • Reglas de acceso predeterminadas
  • Rangos de IP
  • Mapeo de usuario

Nota: 127.0.0.1 (localhost) siempre tiene acceso para cualquier cuenta, sin considerar la configuración.

Estructura XML

<AccessRules>
	<DefaultAccessRules>
		<GrantAnyIPToUndefinedUsers/>
		<GrantAllIPRangesToUndefinedUsers/>
		<DenyAccessToUndefinedUsers/>
	</DefaultAccessRules>
	<IPRanges>
		<IPRange RangeID="" FromIPAddress="" ToIPAddress="" RangeDescription=""/>
		<IPRange RangeID="" FromIPAddress="" ToIPAddress="" RangeDescription=""/>
	</IPRanges>
	<UserMapping>
		<User UserName="" RangeID="" GrantAllRanges="" GrantAnyIP="" DenyAccess=""/>
		<User UserName="" RangeID="" GrantAllRanges="" GrantAnyIP="" DenyAccess=""/>
	</UserMapping>
</AccessRules>

Reglas de acceso predeterminadas

Los elementos de esta sección definen las reglas de acceso para aquellas cuentas que no están direccionadas en forma específica en la sección Mapeo de usuario.

<GrantAnyIPToUndefinedUsers/> verdadero/falso

verdadero: Cualquier usuario que no esté en UserMapping obtiene acceso desde cualquier dirección IP.

<GrantAllIPRangesToUndefinedUsers/> verdadero/falso

verdadero: Cualquier usuario que no esté en UserMapping obtiene acceso desde cualquier dirección IP contenida en IPRanges.

<DenyAccessToUndefinedUsers/> verdadero/falso

verdadero: Cualquier usuario que no esté en UserMapping al que se le denega el acceso.

Rangos de IP

Esta sección se usa para definir máquinas específicas o rangos de máquinas, por IP, que se usan para asignar acceso a usuarios.

RangeID="entero"

Un entero arbitrario, asignado por el usuario que se usa para referirse al Rango en UserMapping.

FromIPAddress="cadena"

La dirección IP de inicio, inclusiva. Las primeras tres posiciones del cuarteto deben coincidir con ToIPAddress.

ToIPAddress=" cadena"

La dirección IP final, inclusiva. Las primeras tres posiciones del cuarteto deben coincidir con FromIPAddress.

RangeDescription=" cadena"

Descripción del Rango IP. Por ejemplo: "Servidores de producción"

Mapeo de usuario

UserName="cadena"

El nombre de admin del VSA. El servicio Web API VSA usa la misma encriptación de credenciales y contraseña que el VSA. Por lo tanto, si cambia su contraseña en VSA, asegúrese de cambiarla también en su implementación de cliente de servicio Web API VSA.

RangeID="entero"

Se usa para señalar a un Rango IP definido en la sección Rangos IP. El usuario puede tener múltiples elementos de UserMapping para expresar todos los Rangos IP desde los que tiene acceso. No se usa cuando se usan uno de los siguientes atributos Otorgar / Denegar.

GrantAllRanges="verdadero/falso"

verdadero: El usuario tiene acceso desde cualquier rango definido en la sección Rangos IP.

GrantAnyIP=" verdadero/falso"

verdadero: El usuario tiene acceso desde cualquier dirección IP.

DenyAccess=" verdadero/falso"

verdadero: El usuario no tiene acceso.

XML de configuración de acceso de muestra

<AccessRules>
	<DefaultAccessRules>
		<GrantAnyIPToUndefinedUsers>falso</GrantAnyIPToUndefinedUsers>
		<GrantAllIPRangesToUndefinedUsers>falso</GrantAllIPRangesToUndefinedUsers>
		<DenyAccessToUndefinedUsers>verdadero</DenyAccessToUndefinedUsers>
	</DefaultAccessRules>
	<IPRanges>
		<IPRange RangeID="1" FromIPAddress="192.168.214.01" ToIPAddress="192.168.214.10" RangeDescription="Centro de servidores Web de producción del Socio X"/>
		<IPRange RangeID="2" FromIPAddress="192.168.15.102" ToIPAddress="192.168.15.102" RangeDescription="Máquina desarrolladora senior"/>
		<IPRange RangeID="3" FromIPAddress="192.168.15.105" ToIPAddress="192.168.15.109" RangeDescription="Máquinas de demo de ventas"/>
		<IPRange RangeID="4" FromIPAddress="192.168.210.35" ToIPAddress="192.168.210.35" RangeDescription="Máquina de QA integral"/>
	</IPRanges>
	<UserMapping>
		<Usuario UserName="B2BMasterAdmin" RangeID="1" GrantAllRanges="false" GrantAnyIP="falso" DenyAccess="falso"/>
		<Usuario UserName="DevTestAccount" RangeID="2" GrantAllRanges="falso" GrantAnyIP="falso" DenyAccess="falso"/>
		<Usuario UserName="SalesTestAccount" RangeID="3" GrantAllRanges="falso" GrantAnyIP="falso" DenyAccess="falso"/>
		<Usuario UserName="SalesTestAccount2" RangeID="3" GrantAllRanges="falso" GrantAnyIP="falso" DenyAccess="falso"/>
		<Usuario UserName="QAMasterAdmin" RangeID="4" GrantAllRanges="falso" GrantAnyIP="falso" DenyAccess="falso"/>
		<Usuario UserName="SalesTravellingTestAccount" RangeID="" GrantAllRanges="falso" GrantAnyIP="verdadero" DenyAccess="falso"/>
		<Usuario UserName="Bob" RangeID="" GrantAllRanges="verdadero" GrantAnyIP="falso" DenyAccess="falso"/>
		<Usuario UserName="Sally" RangeID="" GrantAllRanges="falso" GrantAnyIP="falso" DenyAccess="verdadero"/>
	</UserMapping>
</AccessRules>