Implémentation d'un jeton d'authentification personnalisé pour la propagation des attributs de sécurité

Cette rubrique explique comment créer votre propre implémentation de jeton d'authentification, qui est définie dans le sujet de connexion et propagée en aval.

A propos de cette tâche

Avec cette implémentation, vous pouvez spécifier un jeton d'authentification qui peut être utilisé par un module de connexion personnalisé ou une application. Pensez à écrire votre propre implémentation si vous souhaitez effectuer l'une des tâches suivantes:
  • Isolez vos attributs dans votre propre implémentation.
  • Sérialisez les informations à l'aide de la sérialisation personnalisée. Vous devez désérialiser les octets sur la cible et rajouter ces informations sur l'unité d'exécution. Cette tâche peut également inclure le chiffrement et le déchiffrement.
  • Affecter l'unicité globale du sujet à l'aide de l'interface de programme d'application (API) getUniqueID.
Important: Les implémentations de jeton d'authentification personnalisé ne sont pas utilisées par l'environnement d'exécution de la sécurité dans WebSphere® Application Server pour appliquer l'authentification. L'environnement d'exécution WebSphere Application Security utilise ce jeton uniquement dans les situations suivantes:
  • Appel de la méthode getBytes pour la sérialisation
  • Appelez la méthode getForwardable pour déterminer si le jeton d'authentification doit être sérialisé.
  • Appel de la méthode getUniqueId pour l'unicité
  • Appelez les méthodes getName et getVersion pour ajouter des octets sérialisés au détenteur de jeton envoyé en aval
Toutes les autres utilisations sont des implémentations personnalisées.

Pour implémenter un jeton d'authentification personnalisé, vous devez effectuer les étapes suivantes:

Procédure

  1. Ecrire une implémentation personnalisée de l'interface AuthenticationToken.
    De nombreuses méthodes sont disponibles pour implémenter l'interface AuthenticationToken. Toutefois, assurez-vous que les méthodes requises par l'interface AuthenticationToken et l'interface de jeton sont entièrement implémentées. Une fois que vous avez implémenté cette interface, vous pouvez la placer dans le répertoire app_server_root/classes . Vous pouvez également placer la classe dans n'importe quel répertoire privé. Toutefois, assurez-vous que le chargeur de classe WebSphere Application Server peut localiser la classe et qu'il dispose des droits appropriés. Vous pouvez ajouter le fichier d'archive Java™ (JAR) ou le répertoire qui contient cette classe dans le fichier server.policy afin que la classe dispose des droits nécessaires requis par le code du serveur.
    Astuce: Tous les types de jeton définis par l'infrastructure de propagation ont des interfaces similaires. Les types de jeton sont des interfaces de marqueur qui implémentent l'interface com.ibm.wsspi.security.token.Token. Cette interface définit la plupart des méthodes. Si vous prévoyez d'implémenter plusieurs types de jeton, envisagez de créer une classe abstraite qui implémente l'interface com.ibm.wsspi.security.token.Token. Toutes vos implémentations de jeton, y compris le jeton d'authentification, peuvent étendre la classe abstraite, puis la majeure partie du travail est terminée.

    Pour afficher une implémentation de l'interface AuthenticationToken, voir Exemple: implémentation com.ibm.wsspi.security.token.AuthenticationToken.

  2. Ajoutez et recevez le jeton d'authentification personnalisé lors des connexions à WebSphere Application Server .
    Cette tâche est généralement effectuée en ajoutant un module de connexion personnalisé aux différentes configurations de connexion système et d'application. Toutefois, pour désérialiser les informations, vous devez connecter un module de connexion personnalisé. Une fois l'objet instancié dans le module de connexion, vous pouvez l'ajouter au sujet lors de la méthode de validation.

    Si vous souhaitez uniquement ajouter des informations au sujet à propager, voir Propagation d'un objet sérialisable Java personnalisé pour la propagation des attributs de sécurité. Si vous souhaitez vous assurer que les informations sont propagées, effectuez votre propre sérialisation personnalisée ou spécifiez l'unicité à des fins de mise en cache du sujet, pensez à écrire votre propre implémentation de jeton d'authentification.

    L'exemple de code dans Exemple: module de connexion de jeton d'authentification personnalisémontre comment déterminer si la connexion est une connexion initiale ou une connexion par propagation. La différence entre ces types de connexion est que le rappel WSTokenHolderCallback contienne ou non des données de propagation. Si le rappel ne contient pas de données de propagation, initialisez une nouvelle implémentation de jeton d'authentification personnalisée et définissez-la dans le sujet. Si le rappel contient des données de propagation, recherchez votre instance TokenHolder de jeton d'authentification personnalisé spécifique, reconvertissez le tableau d'octets dans votre objet AuthenticationToken personnalisé et définissez-le dans le sujet. L'exemple de code montre les deux instances.

    Vous pouvez rendre votre jeton d'authentification en lecture seule dans la phase de validation du module de connexion. Si vous ne faites pas le jeton en lecture seule, des attributs peuvent être ajoutés dans vos applications.

  3. Ajoutez votre module de connexion personnalisé aux configurations de connexion système WebSphere Application Server qui contiennent déjà le module de connexion com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule pour la réception des versions sérialisées de votre jeton d'autorisation personnalisé.

    Etant donné que ce module de connexion s'appuie sur des informations à l'état partagé qui sont ajoutées par le module de connexion com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule, ajoutez ce module de connexion après le module de connexion com.ibm.ws.security.server.lm.wsMapDefaultInboundLoginModule. Pour plus d'informations sur l'ajout de votre module de connexion personnalisé aux configurations de connexion existantes, voir Développement de modules de connexion personnalisés pour une configuration de connexion système pour JAAS.

Résultats

Une fois ces étapes effectuées, vous avez implémenté un jeton d'authentification personnalisé.