• Aucun résultat trouvé

: Configuration de DB2 Alphablox pour utiliser une classe de groupe différente

Dans le document IBM DB2 Alphablox. d administration GC (Page 121-133)

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.

Dans le document IBM DB2 Alphablox. d administration GC (Page 121-133)