Développement de modules de connexion de programmation pour Java Authentication and Authorization Service afin d'obtenir des données d'authentification

Vous pouvez utiliser l'infrastructure de connexion JAAS (Java Authentication and Authorization Service) pour obtenir les données d'authentification depuis votre application.

Pourquoi et quand exécuter cette tâche

Votre application peut effectuer un développement de modules de connexion de programmation pour Java Authentication and Authorization Service à l'aide du nom d'entrée de contexte JAAS DefaultPrincipalMapping pour obtenir un objet de sujet avec une instance javax.resource.spi.security.PasswordCredential dans le jeu de données d'identification privées qui contient le nom d'utilisateur et le mot de passe configurés pour un élément authData.

Procédure

  1. Ajoutez les fonctions appSecurity-2.0, passwordUtilities-1.0 et jca-1.7 dans le fichier server.xml. Vous pouvez également ajouter appSecurity-2.0, passwordUtilities-1.0 et jca-1.6. Exemple :
    <featureManager>
       <feature>appSecurity-2.0</feature>
       <feature>passwordUtilities-1.0</feature>
       <feature>jca-1.7</feature>
    </featureManager>
  2. Configurez un élément authData dans le fichier server.xml. Exemple :
    <authData id="myAuthData" user="myUser" password="myPassword"/> <!-- password can also be encoded -->
    
    Encode the password within the configuration. You can get the encoded value by using the securityUtility encode command.
  3. Effectuez un développement de modules de connexion de programmation pour Java Authentication and Authorization Service à l'aide du nom d'entrée de contexte de connexion JAAS DefaultPrincipalMapping depuis votre servlet d'application ou votre bean enterprise, en remplaçant l'alias de mappage par celui dont vous avez besoin. Exemple :
    HashMap map = new HashMap();
    map.put(com.ibm.wsspi.security.auth.callback.Constants.MAPPING_ALIAS, "myAuthData"); // Replace value with your alias.
    CallbackHandler callbackHandler = new com.ibm.wsspi.security.auth.callback.WSMappingCallbackHandler(map, null);
    LoginContext loginContext = new LoginContext("DefaultPrincipalMapping", callbackHandler);
    loginContext.login();
    Subject subject = loginContext.getSubject();
    Set<javax.resource.spi.security.PasswordCredential> creds = subject.getPrivateCredentials(javax.resource.spi.security.PasswordCredential.class);
    PasswordCredential passwordCredential = creds.iterator().next();
    Remarque : Le traitement d'erreurs n'est pas affiché pour des raisons de simplification. Une exception javax.security.auth.login.LoginException est renvoyée si l'alias d'authentification demandé n'existe pas ou est incorrect.
  4. Procurez-vous le nom d'utilisateur et le mot de passe à partir de PasswordCredential. Exemple :
    String userName = passwordCredential.getUserName();
    char[] password = passwordCredential.getPassword();
    // Do something with the userName and password.
  5. Si la sécurité Java 2 est activée, le droit javax.security.auth.PrivateCredentialPermission doit être accordé à l'application. Par exemple, accordez le droit dans le fichier META-INF/permissions.xml de l'application de manière à accéder à l'objet PasswordCredential :
    <?xml version="1.0" encoding="UTF-8"?>
    <permissions xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/permissions_7.xsd" version="7">
    
      <permission>
        <class-name>javax.security.auth.PrivateCredentialPermission</class-name>
        <name>javax.resource.spi.security.PasswordCredential * "*"</name>
        <actions>read</actions>
      </permission>
    
      <!-- Other permissions -->
    
    </permissions>

    Pour plus d'informations sur la sécurité Java 2, voir Liberty : Sécurité Java 2.


Icône indiquant le type de rubrique Rubrique Tâche

Nom du fichier : twlp_dev_prog_login_auth_data.html