15.2. Configuration des Security Token Service (STS)

Le Security Token Service (STS) d'EAP définit plusieurs interfaces qui fournissent des points d'extension. Les implémentations peuvent être branchées via la configuration et des valeurs par défaut peuvent être spécifiées pour certaines propriétés par la configuration. Toutes les configurations STS sont spécifiées dans le fichier picketlink.xml, qui appartient au répertoire WEB-INF de l'application déployée. Voici les éléments qui peuvent être configurés dans le fichier picketlink.xml

Note

Dans le texte qui suit, un prestaire de services fait référence au service Web qui requiert un jeton de sécurité à présenter par ses clients.
  • PicketLinkSTS: élément root. Définit des propriétés qui permettent à l'administrateur STS de définir les valeurs par défaut suivantes :
    • STSName : chaîne représentant le nom du service de jeton de sécurité. Si non spécifié, la valeur PicketLinkSTS par défaut sera utilisée.
    • TokenTimeout : la valeur de durée de vie du jeton en secondes. Si non spécifié, la valeur par défaut 3600 (une heure) sera utilisée.
    • EncryptToken : valeur booléenne spécifiant si les jetons émis doivent être cryptés ou non. La valeur par défaut est false.
  • KeyProvider : cet élément et tous ses sous-éléments sont utilisés pour configurer le keystore utilisé par PicketLink STS pour signer et crypter les jetons. Les propriétés comme l'emplacement du keystore, son mot de passe et l'alias de signature (clé privée) et mot de passe sont tous configurés dans cette section.
  • RequestHandler : cet élément spécifie le nom qualifié complet de l'implémentation de WSTrustRequestHandler à utiliser. Si non spécifié, la valeur par défaut org.picketlink.identity.federation.core.wstrust.StandardRequestHandler sera utilisée.
  • TokenProvider: cette section spécifie les implémentations de TokenProvider qui doivent être utilisées pour gérer chaque type de token de sécurité. Dans l'exemple, nous avons deux fournisseurs - un qui gère les tokens de type SpecialToken et un autre qui gère les tokens de type SAMLV2.0. Le WSTrustRequestHandler appelle la méthode getProviderForTokenType(String type) de STSConfiguration pour obtenir une référence pour le TokenProvider qui convient.
  • TokenTimeout : ceci est utilisé par le WSTrustRequestHandler quand aucune durée de vie n'a été spécifiée dans la requête de WS-Trust. Il crée une instance de durée de vie qui a l'heure actuelle comme heure de création et expire après un nombre indiqué de secondes.
  • ServiceProviders : cette section spécifie les types de jetons qui doivent être utilisés pour chaque fournisseur de service (le service Web qui requiert un jeton de sécurité). Lorsqu'une demande WS-Trust ne contient pas le type de jeton, le WSTrustRequestHandler doit utiliser le point de terminaison du fournisseur de service pour déterminer le type du jeton qui doit être délivré.
  • EncryptToken : ceci est utilisé par le WSTrustRequestHandler pour décider si le jeton émis doit être crypté ou non. Si true, le certificat de clé publique (PKC) du prestataire de services sera utilisé pour crypter le jeton
Ce qui suit est un exemple de configuration STS.

Exemple 15.3. Configuration STS

<PicketLinkSTS xmlns="urn:picketlink:identity-federation:config:1.0"  
         STSName="Test STS" TokenTimeout="7200" EncryptToken="true">  
  <KeyProvider ClassName="org.picketlink.identity.federation.bindings.tomcat.KeyStoreKeyManager">  
    <Auth Key="KeyStoreURL" Value="keystore/sts_keystore.jks"/>   
    <Auth Key="KeyStorePass" Value="testpass"/>  
    <Auth Key="SigningKeyAlias" Value="sts"/>  
    <Auth Key="SigningKeyPass" Value="keypass"/>  
    <ValidatingAlias Key="http://services.testcorp.org/provider1" Value="service1"/>  
    <ValidatingAlias Key="http://services.testcorp.org/provider2" Value="service2"/>  
 </KeyProvider>  
 <RequestHandler>org.picketlink.identity.federation.core.wstrust.StandardRequestHandler</RequestHandler>  
 <TokenProviders>  
    <TokenProvider ProviderClass="org.picketlink.test.identity.federation.bindings.wstrust.SpecialTokenProvider"  
         TokenType="http://www.tokens.org/SpecialToken"/>  
    <TokenProvider ProviderClass="org.picketlink.identity.federation.api.wstrust.plugins.saml.SAML20TokenProvider"  
         TokenType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0"/>  
	</TokenProviders>  
	<ServiceProviders>  
		<ServiceProvider Endpoint="http://services.testcorp.org/provider1" TokenType="http://www.tokens.org/SpecialToken"  
         TruststoreAlias="service1"/>  
		<ServiceProvider Endpoint="http://services.testcorp.org/provider2" TokenType="http://docs.oasis-open.org/wss/oasis-wss-saml-token-profile-1.1#SAMLV2.0"  
         TruststoreAlias="service2"/>  
	</ServiceProviders>  
</PicketLinkSTS>