Créer une authentification J2C avec Jython

Plusieurs ressources WAS (Websphere Application Server), telle qu’une source de données ou une fabrique de connexion des files d’attentes MQ, nécessitent une autorisation et une authentification à utiliser les objets externes.

WAS dispose de plusieurs mécanismes d’authentification notamment l’authentification J2C qui fait partie du Service JAAS (Java Authentication and Authorization Service), cet article montera comment peut on créer une authentification J2C.

La création d’une authentification J2C nécessite quatre paramètres essentiels qui sont :

  • pCell : La cellule WAS
  • pJ2CAlias : L’alias J2C
  • pUserName : Le nom d’utilisateur
  • pPassword : Le mot de passe

Les objets clés pour créer une authentification J2C sont l’objet « Security » de la cellule et l’objet « JAASAuthData », le premier représente la sécurité de la cellule WAS, il peut être récupérer via :

security=AdminConfig.getid(‘/Cell:’+pCell+‘/Security:/’)

Le deuxième objet permet de lister les différents authentifications J2C crée ainsi que pour créer une nouvelle entrée J2C.

Pourquoi lister les authentifications J2C ? Tout simplement la création d’une authentification avec un alias déjà existant provoque une exception. Dans notre exemple, elle est utilisée pour récupérer l’objet J2C et le supprimer s’il existe.

Le code suivant permet de rechercher un alias et supprimer son objet J2C

authList = AdminConfig.list(‘JAASAuthData’)
if (len(authList) > 0):
        for item in authList.split("\n"):
                item = item.rstrip()
                ident = AdminConfig.showAttribute(item.rstrip(), "alias" )
                if (ident == pJ2CAlias):
                        AdminConfig.remove(item)
                        break
                #endIf
        #endFor
#endIf

La création d’une nouvelle authentification J2C peut se faire comme suit :

Alias = [‘alias’, pJ2CAlias]
userName = [‘userId’, pUserName]
password = [‘password’, pPassword]
jaasAttrs = [Alias, userName, password]
AdminConfig.create(‘JAASAuthData’, security, jaasAttrs)

Tout ce qu’on vient de voir peut être mis dans une fonction qu’on peut appeler à partir d’une main. Voilà un exemple complet :

def createAuthentificationJ2C(pCell, pJ2CAlias, pUserName, pPassword):
        # Récupérer l’objet Security
        security=AdminConfig.getid(‘/Cell:’+pCell+‘/Security:/’)
        # Récupérer la liste des authentifications J2C
        authList = AdminConfig.list(‘JAASAuthData’)
        if (len(authList) > 0):
                for item in authList.split("\n"):
                        item = item.rstrip()
                        # Récupérer l’alias de l’objet J2C
                        ident = AdminConfig.showAttribute(item.rstrip(), "alias" )
                        if (ident == pJ2CAlias):
                                # Supprimer l’objet J2C
                                AdminConfig.remove(item)
                                break
                        #endIf
                #endFor
        #endIf
        Alias = [‘alias’, pJ2CAlias]
        userName = [‘userId’, pUserName]
        password = [‘password’, pPassword]
        jaasAttrs = [Alias, userName, password]
        AdminConfig.create(‘JAASAuthData’, security, jaasAttrs)
        print ‘Authentification J2C created’

def main():    
        # Récupérer la cellule
        cell=AdminControl.getCell()
        # Alias J2C
        authAlias = ‘J2CAlias’
        # Nom d’utilisateur
        authUserName = ‘username’
        # Mot de passe
        authPassword = ‘password’
        # Creation de l’authentification J2C
        createAuthentificationJ2C(cell, authAlias, authUserName, authPassword)
        # Sauvgarder la nouvelle configuration
        AdminConfig.save()
       
main()


A propos de l'auteur

Faut il vraiment porter des lunettes, pour travailler la nuit, sur un terminal vert sur noire, pour être Geek pour devenir root ?