Next Topic

Previous Topic

Sécurité du service Web API VSA

Options générales

Par défaut, le service Web API VSA est accessible depuis n'importe quelle adresse IP du monde avec n'importe quelles identifications administrateur VSA valides. Dans cette configuration par défaut, les combinaisons valides de noms d'utilisateurs et de mots de passe sont acceptées pour l'authentification à partir de n'importe quel ordinateur.

Dans toutes les configurations, la dll hash.dll fournie par le VSA doit être utilisée pour chiffrer le mot de passe lors de la soumission. Les détails d'implémentation de hash.dll se trouvent dans le code source test fourni.

Une fois qu'une requête d'authentification réussie délivre un ID de session, cet ID doit être soumis à chaque invocation du service, et il n'est valide que s'il est reçu de l'adresse IP à laquelle il a été attribué. L'ID de session délivré expire après une certaine période d'inactivité.

La sécurité peut être renforcée par la préparation et le déploiement d'un fichier AccesRules.xml. Ce fichier est utilisé par le service Web API VSA pour définir les règles d'accès en fonction des adresses IP d'où proviennent les requêtes. Le filtrage des IP est un mécanisme couramment utilisé dans les systèmes B2B pour garantir que les requêtes proviennent uniquement des serveurs du partenaire.

Le fichier AccesRules.xml est divisé en trois sections :

  • Règles d'accès par défaut
  • Plages d'IP
  • Mappage des utilisateurs

Remarque: 127.0.0.1 (l'hôte local) a toujours accès pour tous les comptes, quelle que soit la configuration.

Structure 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>

Règles d'accès par défaut

Les éléments de cette section définissent les règles d'accès pour les comptes qui ne sont pas traités spécifiquement dans la section Mappage des utilisateurs.

<GrantAnyIPToUndefinedUsers/> true/false

true : tout utilisateur qui n'est pas dans UserMapping peut accéder à partir de n'importe quelle adresse IP.

<GrantAllIPRangesToUndefinedUsers/> true/false

true : tout utilisateur qui n'est pas dans UserMapping peut accéder à partir de n'importe quelle adresse IP contenue dans IPRanges.

<DenyAccessToUndefinedUsers/> true/false

true : tout utilisateur qui n'est pas dans UserMapping ne peut pas accéder.

Plages d'IP

Cette section sert à définir des ordinateurs ou des plages d'ordinateurs (par IP) qui servent à attribuer les droits d'accès utilisateur.

RangeID="integer"

Entier arbitraire attribué à un utilisateur servant à désigner la plage dans UserMapping.

FromIPAddress="string"

Adresse IP de début (incluse). Les trois premiers éléments du quartet doivent correspondre à ToIPAddress.

ToIPAddress=" string"

Adresse IP de fin (incluse). Les trois premiers éléments du quartet doivent correspondre à FromIPAddress.

RangeDescription=" string"

Description de la plage d'IP. Par exemple : « Serveurs de production ».

Mappage des utilisateurs

UserName="string"

Nom d'administrateur VSA. Le service Web API VSA utilise le même chiffrement d'identification et de mot de passe que le VSA. Si vous changez votre mot de passe dans VSA, n'oubliez pas de le changer aussi dans l'implémentation de votre client de service Web API VSA.

RangeID="integer"

Pointe vers une plage d'IP définie de la section Plages d'IP. Un utilisateur peut avoir plusieurs éléments UserMapping pour exprimer toutes les plages d'IP depuis lesquelles il a accès. Ce paramètre n'est pas utilisé lorsque l'un des attributs Accorder/Refuser ci-dessous est utilisé.

GrantAllRanges="true/false"

true : l'utilisateur a accès depuis toutes les plages de la section Plages d'IP.

GrantAnyIP=" true/false"

true : l'utilisateur a accès depuis n'importe quelle adresse IP.

DenyAccess=" true/false"

true : l'utilisateur n'a aucun accès.

Exemple de XML de configuration d'accès

<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>