Cette librairie fournit des services étendus pour communiquer avec l'API REST d'Identity Store.
Il s'agit d'une extension de la Librairie Identitystore, fournissant des services supplémentaires et plus avancés.
Pour plus d'information, la documentation de la Librairie Identitystore est disponible sur le [wiki officiel](https://lutece.paris.fr/support/wiki/gru-library-identitystore-v3.html).
Tous les services fournis par la librairie de base sont disponibles dans cette version étendue. Pour avoir accès aux fonctions étendues des services IdentityService et ServiceContractService, il suffit de les remplacer par IdentityServiceExtended et ServiceContractServiceExtended respectivement. Leurs configurations et fonctionnements sont les mêmes.
Un nouveau service fr.paris.lutece.plugins.identitystore.v3.web.service.ReferentialService est disponible, fournissant les méthodes permettant d'accéder aux données du référentiel.
Ces méthodes sont implémentées par le service de transport REST fr.paris.lutece.plugins.identitystore.v3.web.rs.service.ReferentialTransportRest.
Il requiert une implémentation de fr.paris.lutece.plugins.identitystore.v3.web.service.IReferentialTransportProvider pour définir le transport HTTP. Deux implémentations de cette interface sont présentes dans cette librairie :
Ces deux implémentations ont besoin de la définition de l'URL vers le service d'Identity Store.
Pour utiliser HttpApiManagerAccessTransport, deux paramètres supplémentaires sont requis:
Premièrement, définir le bean pour le transport HTTP à utiliser :
Ensuite, définir le bean pour le transport REST IdentityTransportRest :
Ensuite, définir le bean pour le service IdentityServiceExtended :
Voici un exemple de configuration Spring avec le transport HTTP HttpAccessTransport :
<!-- library identitystore --> <!-- IHttpTransportProvider declarations --> <bean id="identitystore.httpAccessTransport" class="fr.paris.lutece.plugins.identitystore.v3.web.rs.service.HttpAccessTransport" > <property name="apiEndPointUrl"> <value>${identitydesk.identitystore.apiEndPointUrl}</value> </property> </bean> <bean id="identity.restTransport.httpAccess" class="fr.paris.lutece.plugins.identitystore.v3.web.rs.service.IdentityTransportRest"> <constructor-arg ref="identitystore.httpAccessTransport"/> </bean> <!-- IdentityServiceExtended impl --> <bean id="identity.identityServiceExtended" class="fr.paris.lutece.plugins.identitystore.v3.web.service.IdentityServiceExtended"> <constructor-arg ref="identity.restTransport.httpAccess"/> </bean>
Voici un exemple de configuration Spring avec le transport HTTP HttpApiManagerAccessTransport :
<!-- library identitystore --> <!-- IHttpTransportProvider declarations --> <bean id="identitystore.httpAccessTransport" class="fr.paris.lutece.plugins.identitystore.v3.web.rs.service.HttpApiManagerAccessTransport"> <property name="apiEndPointUrl"> <value>${myplugin.identitystore.ApiEndPointUrl}</value> </property> <property name="accessManagerEndPointUrl"> <value>${myplugin.identitystore.accessManagerEndPointUrl}</value> </property> <property name="accessManagerCredentials"> <value>${myplugin.identitystore.accessManagerCredentials}</value> </property> </bean> <bean id="identity.restTransport.httpAccess" class="fr.paris.lutece.plugins.identitystore.v3.web.rs.service.IdentityTransportRest"> <constructor-arg ref="identitystore.httpAccessTransport"/> </bean> <!-- IdentityServiceExtended impl --> <bean id="identity.identityServiceExtended" class="fr.paris.lutece.plugins.identitystore.v3.web.service.IdentityServiceExtended"> <constructor-arg ref="identity.restTransport.httpAccess"/> </bean>
Vous pouvez maintenant accéder au bean comme suit:
import fr.paris.lutece.plugins.identitystore.v3.web.service.IdentityServiceExtended; ... private IdentityServiceExtended _identityServiceExt = SpringContextService.getBean( "identity.identityServiceExtended" );
Le service peut être directement créé dans le code Java. Voici un exemple avec le transport HTTP HttpApiManagerAccessTransport (le même mécanisme peut être appliqué pour le transport HTTP HttpAccessTransport).
Premièrement, définir les clés suivantes dans un fichier de propriétés :
myplugin.identitystore.ApiEndPointUrl=http://mydomain.com/url/to/apimanager/api/identitystore myplugin.identitystore.accessManagerEndPointUrl=http://mydomain.com/url/to/apimanager/token myplugin.identitystore.accessManagerCredentials=your_private_key
Ensuite, ajouter le code suivant dans le code Java :
... private static final String PROPERTY_GRU_API_ENDPOINT = "myplugin.identitystore.ApiEndPointUrl"; private static final String PROPERTY_GRU_AM_ENDPOINT = "myplugin.identitystore.accessManagerEndPointUrl"; private static final String PROPERTY_GRU_AM_CREDENTIALS = "myplugin.identitystore.accessManagerCredentials"; ... HttpApiManagerAccessTransport httpApiManagerAccessTransport = new HttpApiManagerAccessTransport( ) httpApiManagerAccessTransport.setApiEndPointUrl( AppPropertiesService.getProperty( PROPERTY_GRU_API_ENDPOINT ) ); httpApiManagerAccessTransport.setAccessManagerEndPointUrl( AppPropertiesService.getProperty( PROPERTY_GRU_AM_ENDPOINT ) ); httpApiManagerAccessTransport.setAccessManagerCredentials( AppPropertiesService.getProperty( PROPERTY_GRU_AM_CREDENTIALS ) ); IdentityTransportRest identityTransport = new IdentityTransportRest( httpApiManagerAccessTransport ); final IdentityServiceExtended identityServiceExtended = new IdentityServiceExtended( identityTransport ); ...