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 :
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
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 :
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 :
# 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()