Remarque: Cettesections’appliqueuniquementàDB2Alphablox8.4(pasde priseenchargedanslaversion8.4.1).
Cetexempleprésenteunemanièredepersonnaliserlegestionnaire d’utilisateurs DB2AlphabloxRepository-basedUser Managerpardéfautpourimprimerun messagesystème àchaque vérificationd’appartenanceà ungroupe.Laprocédure inclutlesétapessuivantes:
1. Ecritured’uneclassede groupepersonnaliséedansunmodule(danscet exemple,laclasse s’appelleMyGroupetlemodulequilacontients’appelle com.myCompany.user )
v LaclasseétendlaclasseAlphabloxGrouppar défaututiliséedansle gestionnaire d’utilisateursDB2AlphabloxRepository-basedUserManager 2. Configurationdelanouvellevaleur delapropriétédeserveurgroupclassname
à l’aidede lacommandeTelnetsuivante :
ExtUserManager groupclassname com.myCompany.user.MyGroup où MyGrouppeutêtrel’exemplesuivant :
package com.myCompany.user;
import com.alphablox.personalization.alphablox.*;
import com.alphablox.personalization.*;
import java.util.*;
public class MyGroup extends AlphabloxGroup {
public boolean containsUser(IUser user,
boolean checkSubGroups) throws PEngineException {
boolean exists = super.containsUser(user,checkSubGroups);
System.out.println("User membership checked.");
return exists;
}
}
Références relatives aux méthodes d’interface
Remarque: Cettesections’appliqueuniquementàDB2Alphablox8.4(pasde priseenchargedanslaversion8.4.1).
Cettesectionindique ladocumentationderéférencerelativeauxtrois interfaces d’Extensible UserManager.Chaqueméthode utiliséedanscesinterfaces,ainsi que lasyntaxecorrespondantesontdécritesetaccompagnéesderemarquessur leur utilisation.
Pour obtenirunexempledegestionnaired’utilisateurs personnalisé,voirl’exemple de gestionnaired’utilisateurs(SimpleUserManager) danslerépertoiresuivant :
<db2alphablox_dir>/system/documentation/admin/Examples/
Interface Méthodes
IUserManager findGroup()
findUser()
getExternalProperties() getPrincipleUserName() hasExternalEditor() resume()
setCaseSensitiveGroups() setCaseSensitiveUsers() start()
stop() suspend()
IUser authenticate()
authorize() getName() getPassword()
getPropertiesSubset() isUserInRole()
refresh()
IGroup containsGroup()
containsUser() getName()
getPropertiesSubset() refresh()
Interface IUserManager
Remarque: Cettesections’appliqueuniquementàDB2Alphablox8.4(pasde priseenchargedanslaversion8.4.1).
LaclasseAbstractUserManager implémentel’interfaceIUserManagerpourtrouver desinformationssur lesutilisateurs etlesgroupesetdéterminerl’identitédes utilisateurs durantl’exécution.Pourétendrecetteclasse,ajoutezl’instruction d’importation suivantedansvotrecode:
import com.alphablox.personalization.*;
Pour consulterunexempled’extensiondelaclasseAbstractUserManager,voir
«Exemple 1:ConfigurationdeDB2Alphabloxpourutiliser ungestionnaire d’utilisateurs externe»,àlapage106.
findGroup()
Permet detrouverungroupeetde renvoyerl’instanceappropriéedeIGroup.
Syntaxe
IGroup findGroup(String id, boolean fromCache);
// émission de PEngineException
où :
Argument Description
id IDdugroupe.
fromCache Recherchedugroupedanslamémoirecache
Utilisation
Cetteméthode renvoielavaleurnull :
v silegroupeest absentde lamémoireetlavaleur defromCacheesttrue v silegroupeest absentde lamémoire,cen’estpasungroupevalidedansle
référentieldugestionnaire d’utilisateurssous-jacent,etlavaleurde fromCacheest true
findUser()
Permet detrouverunutilisateuretderenvoyerl’instanceappropriéede IUser.
Syntaxe
IUser findUser(String id, boolean fromCache);
// émission de PEngineException
où :
Argument Description
id IDutilisateur
fromCache Recherchedel’utilisateurdanslamémoirecache
Utilisation
Cetteméthode renvoielavaleurnull :
v sil’utilisateur estabsentdelamémoireetlavaleurdefromCacheest true
v sil’utilisateur estabsentdelamémoire,cen’est pasunutilisateurvalidedansle référentieldugestionnaire d’utilisateurssous-jacent,etlavaleurde fromCacheest true
getExternalProperties()
Renvoieuntableaudetype ″chaînedecaractères″contenant lespropriétésdéfinies via l’éditeurexterne.
Syntaxe
String[] getExternalProperties(); //émission de PEngineException
getPrincipleUserName()
Renvoielenomd’utilisateurassociéàcetterequête.
Syntaxe
String getPrincipleUserName(HttpServletRequest requête);
// émission de PEngineException
où :
Argument Description
requête RequêteHTTPencours
Utilisation
Cetteméthode permetàDB2Alphabloxdedéterminerlenomd’utilisateurlorsde lacréation d’unenouvellesession DB2Alphablox. Vouspouvez utilisercette méthode pourremplacerlefonctionnement pardéfautdeDB2Alphablox.
hasExternalEditor()
Indiquesilegestionnaire d’utilisateursexterneestassociéàunéditeur.
Syntaxe
boolean hasExternalEditor();
Utilisation
Renvoielavaleur truesilegestionnaired’utilisateurs externeest associéà un éditeurparticulier.Parexemple,cetteméthode renvoielavaleur truesivous utilisezlegestionnaired’utilisateurs LDAP-basedUser Manager.Ellerenvoiela valeur falsesivousutilisezlegestionnaire d’utilisateursDB2Alphablox Repository-basedUserManagerpar défaut.Cetteméthodenedoitêtre
implémentée pourrenvoyerlavaleur truequedanslecas d’uneimplémentation complèted’ExtensibleUser Manageravecunéditeurexterne.
resume()
Relancelegestionnaire d’utilisateurs.
Syntaxe
void resume(); // émission de PEngineExceptionn
Utilisation
Cetteméthode estappeléelorsque leservicedugestionnaire d’utilisateursDB2 Alphabloxest relancé.Appelezcetteméthode pourrelancerlegestionnaire d’utilisateurs DB2Alphabloxaprèsuneinterruptionduservice.
Exemples
Le codesuivantconsigneunmessageindiquantquelegestionnaire d’utilisateursa été relancé:
import com.alphablox.personalization.*;
public class MyUserManager extends AbstractUserManager { ...
public void resume() throws PEngineException {
System.out.println("Resumed");
}
...
}
Voir aussi
«suspend()», àlapage112
setCaseSensitiveGroups()
Indiquesilesnomsde groupesontdépendantsdesmajuscules/minuscules.
Syntaxe
void setCaseSensitiveGroups(boolean caseSensitive);
// émission de PEngineException
où :
Argument Description
caseSensitive true–lesnoms degroupesontdépendantsdes majuscules/minuscules
Utilisation
Si lavaleur decetteméthodeest true,lesnoms degroupesontdépendantsdes majuscules/minuscules etlegestionnaire d’utilisateursrespectecettecondition.
setCaseSensitiveUsers()
Indiquesilesnomsd’utilisateursontdépendantsdesmajuscules/minuscules.
Syntaxe
void setCaseSensitiveUsers(boolean caseSensitive);
// émission de PEngineException
où :
Argument Description
caseSensitive true—lesnomsd’utilisateursontdépendantsdes majuscules/minuscules
Utilisation
Si lavaleur decetteméthodeest true,lesnoms d’utilisateursontdépendantsdes majuscules/minuscules etlegestionnaire d’utilisateursrespectecettecondition.
start()
Lance legestionnaired’utilisateurs.
Syntaxe
void start(java.util.Properties props);
// émission de PEngineException
où :
Argument Description
props PropriétésDB2Alphabloxliéesà la
personnalisation.Propriétésvalides:umclassname, groupclassname,custompropery et ldapprops.Pour plusdedétails,voir«Commande deconsoleTelnet pourExtensibleUserManager», àlapage102.
Utilisation
Cetteméthode estappeléeà chaquedémarragedugestionnaired’utilisateurs DB2 Alphablox. Cetteméthodepermetd’établirlaconnexionavecleréférentiel appropriéetd’instancierlesobjetsutilisateuretgroupeselonlesbesoins.Dansle cas d’ungestionnaired’utilisateurs DB2AlphabloxRepository-basedUser
Manager,tous lesutilisateursetlesgroupesduréférentielsontinstanciés.Dansle gestionnaire d’utilisateursLDAP-basedUserManager,seulslesutilisateursetles groupesenregistrésdansDB2Alphabloxdoiventêtrecréés.Parconséquent,ilpeut êtreutiledecréerdesutilisateursetdesgroupesselonlesbesoins,parexemple lorsque lesméthodesfindUser() etfindGroup()sontappelées.
stop()
Arrêtelegestionnaired’utilisateursetlibèretoutes lesressources.
Syntaxe
void stop(); // émission de PEngineException
Utilisation
Cetteméthode estappeléelorsque leservicedugestionnaire d’utilisateursDB2 Alphabloxest arrêté.
Voir aussi
«start()», àlapage111,«suspend()», àlapage112.
suspend()
Interromptl’exécutiondu gestionnaired’utilisateursetlibèrelesressourcesnon utilisées,par exemplelaconnexion àlabasededonnées.
Syntaxe
void suspend(); // émission de PEngineException
Utilisation
Cetteméthode estappeléelorsque leservicedugestionnaire d’utilisateursDB2 Alphabloxest interrompu.
Voir aussi
«resume()», àlapage110
Interface IUser
Pour étendrecetteclasse,ajoutezl’instructiond’importation ci-dessousaucode: import com.alphablox.personalization.*;
Pour obtenirunexempled’extensiondelaclasse AbstractUser,voir«Exemple2 : ConfigurationdeDB2Alphabloxpourutiliseruneclassed’utilisateur différente»,à lapage107.
authenticate()
Détermine silenomd’utilisateuretlemot depasseindiqués vialarequêteHTTP sont identiquesà ceuxstockésdansleréférentiel.
Syntaxe
boolean authenticate(HttpServletRequest request,
String authorizationHeader);
// émission de PEngineException
où :
Argument Description
request RequêteHTTP.
authorizationHeader Déterminesilegroupe doitêtrerecherchédansla mémoirecache
Utilisation
Renvoielavaleur truesilemotdepasse enregistrépar l’utilisateurestidentique aumotdepasse duparamètre.Cetteméthode s’appliqueuniquementdansles configurationsDB2AlphabloxApacheTomcat(ApacheTomcatetnonMicrosoft IIS)où DB2Alphabloxutilisel’authentification standard(c’est-à-direauniveaudu navigateur).Cetteméthodeestappelée parlesintercepteursDB2Alphablox Tomcat lorsquel’utilisateuraccèdeà lasessionpourlapremièrefois.Laméthode comporte deuxparamètres:l’objetderequête etl’en-têted’autorisationcodée.Cet en-têtecontientlenomd’utilisateur etlemotde passe.Vouspouvez utiliserla méthode suivantepourdécoder l’en-tête:
AbstractUserManager.getDecoder().decode(authorizationHeader);
Unefoislemot depasseobtenu,vouspouvezl’enregistrerdanslamémoirede l’objetsivousprévoyezde l’utilisercomme valeurde retourde laméthode getPassword()afindepermettrelaconnexionuniqueà lasourcede données.
authorize()
Détermine sil’utilisateur setrouvedanslalistedesrôles.
Syntaxe
boolean authorize(HttpServletRequest request,
String[] roles);
// émission de PEngineException
où :
Argument Description
request RequêteHTTP.
roles Listedesrôlesdanslaquellel’utilisateur est
recherchépour déterminers’ilest associéà unrôle.
Utilisation
Renvoielavaleur truesil’utilisateur setrouvedansl’undesrôlesdelaliste.
getEmail()
Obtentionde l’adresseélectroniquedel’utilisateur.
Syntaxe
String getEmail(); // émission de PEngineException
Utilisation
Renvoielavaleur nullsiDB2Alphabloxgèrelenomdel’adresseélectroniqueau lieude leliredansleréférentielexterne. Danslecas deLDAP,l’adresse
électroniqueetlenomcompletdel’utilisateur sontrécupérésdepuisLDAPetleur valeur n’estpasmodifiabledanslespagesAdmindeDB2Alphablox.Danscecas, vouspouvez utilisercetteméthodepourobtenir l’adresseélectroniquede
l’utilisateur.
getFullName()
Obtentiondu nomcompletdel’utilisateur.
Syntaxe
String getFullName(); // émission de PEngineException
Utilisation
Renvoielavaleur nullsiDB2Alphabloxgèrelenomcompletaulieudelelire dansleréférentielexterne. Danslecas deLDAP,l’adresseélectroniqueetlenom complet del’utilisateursont récupérésdepuisLDAPetleur valeurn’estpas modifiabledanslespagesAdminde DB2Alphablox. Danscecas,vouspouvez utiliser cetteméthodepourobtenir lenomcomplet del’utilisateur.
getName()
Obtentiondu nomdel’utilisateur.
Syntaxe
String getName(); // émission de PEngineException
Utilisation
Le nomdel’utilisateurdoitêtreunnomd’utilisateurvalidedansDB2Alphablox.
getPassword()
Obtentiondu motdepassede l’utilisateur.
Syntaxe
String getPassword(); // émission de PEngineException
Utilisation
Obtentiondu motdepassede l’utilisateur,codéenbase64.Silasourcededonnées est configuréede façonàutiliserlenomd’utilisateuretlemotdepasseDB2 Alphablox, DB2Alphabloxutilise lemotde passecodéenregistrédansle référentielpourl’authentificationetl’accèsà lasourcede données.Utilisezcette méthode pourlasécuritépersonnalisée,tellequelaconnexion uniqueauxsources de données.Toutmotdepasse enregistrépar cetteméthode serautilisé
temporairementdanslamémoire.Notezquecemotde passedoitêtrecodéà l’aideducodesuivant :
AbstractUserManager.getEncoder().encode(password);
avantd’être renvoyéauxdemandeurs.
Voir aussi
«Connexionunique»,à lapage105.
getPropertiesSubset()
Obtentiondusous-ensemble depropriétésutilisateurpertinentes.
Syntaxe
java.util.Properties getPropertiesSubset(String[] propList);
// émission de PEngineException
où :
Argument Description
propList Tableaudetype″chaînede caractères″du sous-ensemblede propriétés
Utilisation
Renvoieunobjetdepropriétéspourlesous-ensembledespropriétésutilisateur transmises.Lesvaleurssontobtenuesdepuislamémoire,saufsiledéveloppeur modifie cela.
isUserInRole()
Détermine sil’utilisateur appartientà l’undesrôlesdéfinis.
Syntaxe
boolean isUserInRole(HttpServletRequest request,
String[] roles);
// émission de PEngineException
où :
Argument Description
request RequêteHTTP
roles Rôle(s)associé(s)àl’utilisateur.
Utilisation
Renvoielavaleur truesil’utilisateur appartientà l’undesrôlesdelaliste.
L’implémentationdesrôlesesteffectuéepar lesdéveloppeurs.L’implémentation de cetteméthode reposesur laméthode standard
Request.isUserInRole(Stringrole)del’API J2EE.DB2Alphabloxutilise cette méthode pourdéterminerl’accèsutilisateurà lafonctionnalitéd’administrationet l’accèsenécritureauxsignets.
Aveclegestionnaire d’utilisateursLDAP-basedUserManager,cetteméthode appellelaméthodeIGroup.containsUser(),carlesrôlessont équivalentsaux groupesLDAP.
Voir aussi
«containsGroup()», àlapage116
refresh()
Régénère touteslesinformationsmises enmémoirecacheetrécupèreles informations lesplusrécentesdansleréférentielsous-jacent.
Syntaxe
void refresh(); // émission de PEngineException
Utilisation
Provoque larégénérationdesinformationsutilisateurenregistréesenmémoireet récupèrelesinformationslesplusrécentesdansleréférentielexterne.
Interface IGroup
Pour étendrecetteclasse,ajoutezl’instructiond’importation ci-dessousaucode: import com.alphablox.personalization.*;
Pour consulterunexempled’extensiondelaclasseAbstractGroup,voir«Exemple3 :ConfigurationdeDB2Alphabloxpourutiliseruneclassedegroupe différente»,à lapage107.
containsGroup()
Détermine silegroupecontientunsous-groupe.
Syntaxe
boolean containsGroup(IGroup group, boolean checkSubGroups);
// émission de PEngineException
où :
Argument Description
group InstancedeIGroup.
checkSubGroups true—vérificationdessous-groupes;false—pas devérification dessous-groupes.
Utilisation
Renvoielavaleur truesilegroupecontientunsous-groupe.
containsUser()
Détermine silegroupecontientl’utilisateurindiqué.
Syntaxe
boolean containsUser(IUser user, boolean checkSubGroups);
// émission de PEngineException
où :
Argument Description
user InstancedeIUser.
checkSubGroups true—vérificationdessous-groupes;false —pas devérification dessous-groupes
Utilisation
Renvoielavaleur truesilegroupecontientl’utilisateurindiqué.
getName()
Obtentiondu nomdugroupe.
Syntaxe
String getName(); // émission de PEngineException
Utilisation
Le nomdugroupedoitêtreunnomde groupevalidedansDB2Alphablox.
getPropertiesSubset()
Obtentiondusous-ensemble depropriétésdugroupepertinentes.
Syntaxe
java.util.Properties getPropertiesSubset(String[] propList);
// émission de PEngineException
où :
Argument Description
propList Tableaudetype″chaînede caractères″contenant lespropriétés
Utilisation
Renvoieunobjetdepropriétéspouraumoinslalistedespropriétésdugroupe transmises.Lesvaleurssontobtenuesdepuislamémoire,saufsiledéveloppeur modifie cela.
refresh()
Régénère touteslesinformationsmises enmémoirecacheetrécupèreles informations lesplusrécentesdansleréférentielsous-jacent.
Syntaxe
void refresh(); // émission de PEngineException
Utilisation
Provoquelarégénérationdesinformationsdugroupe enregistréesenmémoireet récupèrelesinformationslesplusrécentesdansleréférentielexterne.