ESUPSGC

Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.

...

Le driver oracle n'étant pas dans le maven central, une modification du pom.xml ne suffit pas. Il faudra en plus l'ajouter dans votre 'repository local' ainsi (après l'avoir téléchargé depuis https://www.oracle.com/technetwork/database/features/jdbc/default-2280470.html )  : 

Bloc de code
languagebash
themeRDark
mvn install:install-file -Dfile=/tmp/ojdbc7.jar -DgroupId=com.oracle -DartifactId=ojdbc7 -Dversion=12.1.0.2 -Dpackaging=jar -DgeneratePom=true

puis ajout dans le pom.xml de la dépendance :

Bloc de code
languagexml
themeRDark
<dependency>
  <groupId>com.oracle</groupId>
  <artifactId>ojdbc7</artifactId>
  <version>12.1.0.2</version>
</dependency>

La configuration se fait ensuite dans applicationContext-services.xml avec un dataSource adéquat ...

Bloc de code
languagexml
themeRDark
    <bean id="dataSourceOracle" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
        <property name="url" value="jdbc:oracle:thin:@oracle.devcake.co.uk:1521:INTL"/>
        <property name="username" value="sa"/>
        <property name="password" value=""/>
    </bean>

...

Pour ce faire, dans applicationContext-services.xml on modifiera 

Bloc de code
languagexml
themeRDark
	<bean id="groupService" class="org.esupportail.sgc.services.ldap.LdapGroupService">
		<property name="ldapTemplate" ref="ldapTemplate"/>
		<property name="groupSearchBase" value="ou=groups" />
		<property name="groupSearchFilter" value="member={0}"/>
		<property name="memberSearchBase" value="ou=people"/>
		<property name="memberSearchFilter" value="memberOf={0}"/>
	</bean>

par quelque chose du type : 

Bloc de code
languagexml
themeRDark
	<bean id="groupService" class="org.esupportail.sgc.services.ldap.LdapFilterGroupService">
		<property name="ldapTemplate" ref="ldapTemplate"/>
		<property name="ldapFiltersGroups">
			<map>
				<entry key="(|(eduPersonAffiliation=student)(eduPersonAffiliation=employee))" value="esup-sgc-users"/>
				<entry key="eduPersonPrincipalName=joe@univ-ville.fr" value="esup-sgc-admins"/>
				<entry key="eduPersonPrincipalName=jack@univ-ville.fr" value="esup-sgc-managers"/>
			</map>
		</property>
	</bean>

C'est ensuite ces noms de groupes ainsi déifinis ('esup-sgc-users', esup-sgc-admins', ...) qui peuvent être utilisés dans applicationContext-security.xml au niveau du bean sgcMappingGroupesRoles pour définir les rôles de chacun : 

Bloc de code
languagexml
themeRDark
	<util:map id="sgcMappingGroupesRoles">
		<beans:entry key="esup-sgc-admins" value="ROLE_ADMIN" />
		<beans:entry key="esup-sgc-managers" value="ROLE_MANAGER" />
		<beans:entry key="esup-sgc-users" value="ROLE_USER" />
	</util:map>

...

La demande de carte peut être faite par l'appel d'un webservice. Cet appel ressemble à ceci:

Bloc de code
languagebash
themeRDark
curl -F "eppn=username@univ-ville.fr" -F "difPhotoTransient=true" -F "crousTransient=true" -F "europeanTransient=true" -F "PhotoFile.file=@/path/to/image.png"  https://esup-sgc.univ-ville.fr/wsrest/api

La liste des clients autorisés à utiliser ce webservice est définie dans la variable accessRestrictionWSRestAPI du fichier security.properties. Par exemple, pour autoriser certaines adresses IP (notez que la valeur de cette variable n'est pas entourée de guillemets):

Bloc de code
languagetext
themeRDark
accessRestrictionWSRestApi=hasIpAddress('127.0.0.1') or hasIpAddress('192.168.1.39') or hasIpAddress('192.168.22.0/24')

...

  • Modifier la configuration du sgc dans applicationContext-services.xml
Bloc de code
languagexml
themeRDark
<bean class="org.esupportail.sgc.services.cardid.CnousCardIdService">
	<property name="appName" value="crous"/>
	<property name="idCounterBegin" value="<numero de debut de plage CNOUS>"/>
	<property name="postgresqlSequence" value="crous_smart_card_sequence"/>
	<property name="crousEncodeEnabled" value="true"/>
</bean>

...

Pour pouvoir l'utiliser, l'IP du client doit être référencé dans accessRestrictionWSRestPhoto, fichier security.properties

    • Récupérer la dernière photo en date non rejetée  d'un utilisateur :
Bloc de code
languagebash
themeRDark
wget 'http://localhost:8080/wsrest/photo/joe@univ-ville.fr/photo'
  • Récupérer la dernière photo en date dans un état donné d'un utilisateur : 

    Bloc de code
    languagebash
    themeRDark
    wget 'http://localhost:8080/wsrest/photo/joe@univ-ville.fr/photo?cardEtat=ENABLED'
    

    (état activé ici)

  • Récupérer la dernière photo en date dans un état donné d'un utilisateur après une date précisée (renvoie un code http 304 si la photo en question n'a pas été modifiée depuis cette date) : 

Bloc de code
languagebash
themeRDark
wget 'http://localhost:8080/wsrest/photo/joe@univ-ville.fr/photo?cardEtat=ENABLED&dateEtatAfter=2018-06-19'

Pour prendre en compte le choix de l'utilisateur de diffuser ou non sa photo, on peut faire les mêmes requêtes avec /restrictedPhoto en lieu et place de /photo :

Bloc de code
languagebash
themeRDark
wget 'http://localhost:8080/wsrest/photo/joe@univ-ville.fr/restrictedPhoto?cardEtat=ENABLED'

Comment récupérer par script les données et cartes d'un ou plusieurs utilisateurs ?

...

Pour pouvoir l'utiliser, l'IP du client doit être référencé dans accessRestrictionWSRestApi, fichier security.properties

Bloc de code
languagebash
themeRDark
wget 'http://localhost:8080/wsrest/api/get?eppn=toto@univ-ville.fr&eppn=titi@univ-ville.fr'

Quelle version de Java puis-je utiliser ?

...

Pour ce faire, dans applicationContext-security.xml on modifiera 

Bloc de code
languagexml
themeRDark
	<beans:bean id="groupService" class="org.esupportail.nfctag.security.LdapGroupService">
		<beans:property name="ldapTemplate" ref="ldapTemplate"/>
		<beans:property name="groupSearchBase" value="ou=groups" />
		<beans:property name="groupSearchFilter" value="member={0}"/>
		<beans:property name="memberSearchBase" value="ou=people"/>
		<beans:property name="memberSearchFilter" value="memberOf={0}"/>
	</beans:bean>

par quelque chose du type : 

Bloc de code
languagexml
themeRDark
	<beans:bean id="groupService" class="org.esupportail.nfctag.security.LdapFilterGroupService">
		<beans:property name="ldapTemplate" ref="ldapTemplate"/>
		<beans:property name="ldapFiltersGroups">
			<util:map>
				<beans:entry key="eduPersonPrincipalName=joe@univ-ville.fr" value="esup-nfc-admins"/>
				<beans:entry key="eduPersonPrincipalName=jack@univ-ville.fr" value="esup-nfc-supervisors"/>
			</util:map>
		</beans:property>
	</beans:bean>

C'est ensuite ces noms de groupes ainsi déifinis ('esup-sgc-admins', 'esup-nfc-supervisors') qui peuvent être utilisés au niveau du bean nfcMappingGroupesRoles pour définir les rôles de chacun : 

Bloc de code
languagexml
themeRDark
	<util:map id="nfcMappingGroupesRoles">
			<beans:entry key="esup-nfc-admins" value="ROLE_ADMIN" />
			<beans:entry key="esup-nfc-supervisors" value="ROLE_SUPERVISOR" />
	</util:map>

...

applicationContext-desfire.xml (pour modifier la master key par defaut par une clé AES)

Bloc de code
languagexml
themeRDark
<bean id="desfireChangeMasterKeyTagEsupSgc" class="org.esupportail.nfctag.beans.DesfireTag" p:formatBeforeWrite="false" p:keyStart="0000000000000000" p:keyTypeStart="DES" p:keyFinish="12345678901234567890123456789012" p:keyTypeFinish="AES" p:keyVersionFinish="01">   
</bean>
 
<bean id="desfireAuthConfigChangeKeyMasterEsupSgc" class="org.esupportail.nfctag.service.api.impl.DesfireWriteConfig">
    <property name="desfireTag" ref="desfireChangeMasterKeyTagEsupSgc" />
    <property name="description" value="Changement de la Master Key"/>
</bean>

applicationContext-custom.xml (ajout d'une application dummy dediée)

Bloc de code
languagexml
themeRDark
<bean id="dummyChangeMasterKeyExtApi" class="org.esupportail.nfctag.service.api.impl.AppliExtDummy">
   	<property name="description" value="Changement Master Key"/>
   	<property name="locationsNames">
   		<util:list>
   			<value>Change Master Key</value>
   		</util:list>
   	</property>
</bean>

...