Next Topic

Previous Topic

Book Contents

Seguridad del servicio web API para el VSA

General

De manera predeterminada, puede accederse al servicio web API para el VSA desde cualquier dirección IP del mundo mediante cualquier credencial de usuario del 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, se debe usar el hash.dll suministrado por el VSA para cifrar la contraseña para su envío. Los detalles de implementación del hash.dll se encuentran en el código fuente de muestra proporcionado.

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.

Para aumentar la seguridad, se puede preparar e implementar un archivo AccesRules.xml. El servicio web API para el VSA usa este archivo para definir reglas de acceso basadas en 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 AccessRules.xml se divide en tres secciones:

Nota: 127.0.0.1 (localhost) siempre tiene acceso a cualquier cuenta, independientemente de 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/> true/false

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

<GrantAllIPRangesToUndefinedUsers/> true/false

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

<DenyAccessToUndefinedUsers/> true/false

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="integer"

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

FromIPAddress="string"

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

ToIPAddress=" string"

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

RangeDescription=" string"

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

Mapeo de usuario

UserName="string"

El nombre del administrador del VSA. El servicio web API para el VSA usa el mismo cifrado de credenciales y contraseña que el VSA. Por lo tanto, si cambia su contraseña en el VSA, asegúrese de cambiarla también en su implementación de cliente del servicio web API para el VSA.

RangeID="integer"

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="true/false"

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

GrantAnyIP=" true/false"

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

DenyAccess=" true/false"

verdadero: El usuario no tiene acceso.

XML de configuración de acceso de muestra

<AccessRules>
	<DefaultAccessRules>
		<GrantAnyIPToUndefinedUsers>false</GrantAnyIPToUndefinedUsers>
		<GrantAllIPRangesToUndefinedUsers>false</GrantAllIPRangesToUndefinedUsers>
		<DenyAccessToUndefinedUsers>true</DenyAccessToUndefinedUsers>
	</DefaultAccessRules>
	<IPRanges>
		<IPRange RangeID="1" FromIPAddress="192.168.214.01" ToIPAddress="192.168.214.10" RangeDescription="Partner X Production Web Farm"/>
		<IPRange RangeID="2" FromIPAddress="192.168.15.102" ToIPAddress="192.168.15.102" RangeDescription="Senior Developer Machine"/>
		<IPRange RangeID="3" FromIPAddress="192.168.15.105" ToIPAddress="192.168.15.109" RangeDescription="Sales Demo Machines"/>
		<IPRange RangeID="4" FromIPAddress="192.168.210.35" ToIPAddress="192.168.210.35" RangeDescription="Interal QA Machine"/>
	</IPRanges>
	<UserMapping>
		<User UserName="B2BMasterAdmin" RangeID="1" GrantAllRanges="false" GrantAnyIP="false" DenyAccess="false"/>
		<User UserName="DevTestAccount" RangeID="2" GrantAllRanges="false" GrantAnyIP="false" DenyAccess="false"/>
		<User UserName="SalesTestAccount" RangeID="3" GrantAllRanges="false" GrantAnyIP="false" DenyAccess="false"/>
		<User UserName="SalesTestAccount2" RangeID="3" GrantAllRanges="false" GrantAnyIP="false" DenyAccess="false"/>
		<User UserName="QAMasterAdmin" RangeID="4" GrantAllRanges="false" GrantAnyIP="false" DenyAccess="false"/>
		<User UserName="SalesTravellingTestAccount" RangeID="" GrantAllRanges="false" GrantAnyIP="true" DenyAccess="false"/>
		<User UserName="Bob" RangeID="" GrantAllRanges="true" GrantAnyIP="false" DenyAccess="false"/>
		<User UserName="Sally" RangeID="" GrantAllRanges="false" GrantAnyIP="false" DenyAccess="true"/>
	</UserMapping>
</AccessRules>