proj-esup-grouper

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.

...

Quelques ajustements doivent être faits actuellement pour que ça fonctionne depuis Grouper, nous les documentons ici.

...

Sommaire

Certificat HTTPS Harica

Actuellement, le gravitee Gravitee de l'amue AMUE est proposé via https HTTPS en présentant un certificat Harica avec une chaîne dont la racine est le certificat 2021 en auto-signé. Cela ne pose pas de problème sur quasiment l'ensemble des systèmes... mis à part sur java Java, pour qui lequel il faut préférer la chaîne

Harica alternative présentant le certificat 2021 signé lui-même par celui de 2015 (présent dans les trustore java truststores Java par défaut).

La JVM embarquée par le docker grouper Docker Grouper est une JVM Amazon Corretto dont le trustore truststore n'est pas celui du système. Aussi, on ne peut pas utiliser simplement une commande de type update-ca-trust (équivalent du update-ca-certificates de debian Debian sous rockyRocky) , ; il nous faut écraser le truststore par défaut proposé par la JVM.

Pour ce faire, et par rapport à ce qui était proposé dans la page page Grouper 5.x. , on va passer par un Dockerfile qui va nous rebuilder permettre de reconstruire l'image Grouper.

On modifie le docker-compose :                                                                                                                                                   

Bloc de code
languageyaml
services:
  grouper-ui:
    # image: "i2incommon/grouper:6.1.0"
    build:
      context: .
      dockerfile: Dockerfile

...

La récupération du bearerToken sur le Gravitee Amue AMUE via oidc OIDC fonctionne via client_secret_basic tel que décrit sur https://openid.net/specs/openid-connect-core-1_0.html#ClientAuthentication

Grouper ne l'implémente actuellement pas... mais la modiification modification de code à faire pour le supporter est assez simple.

...

Sans l'intégration de ce PR dans le grouperGrouper, vous pouvez l'embarquer en écrasant la classe (une fois compilée) WsBearerTokenExternalSystem.class (vous pouvez y ajouter les fichiers de propriétés également).

Pour appliquer ces modifications, on positionne l'ensemble des fichiers/classes modifiés dans /opt/grouperContainer : 

Bloc de code
languageshell
tree /opt/grouperContainer/classes/
/opt/grouperContainer/classes/
├── edu
│   └── internet2
│       └── middleware
│           └── grouper
│               └── app
│                   └── externalSystem
│                       └── WsBearerTokenExternalSystem.class
├── grouper-loader.base.properties
└── grouper.textNg.en.us.base.properties

Pour prise en compte, on copie le contenu de du répertoire classes du hôte dans l'image.

...

Fixe du endpoint SCIM

Si vous voulez  voulez également avoir l'interface web qui vous permet de configurer le "endpoint" dans ce cadre, vous pouvez aussi récupérer le PR https://github.com/Internet2/grouper/pull/263

Sans cela, ajoutez simplement le paramètre endpoint via l'IHM permettant d''éditer les "fichiers" de configuration (grouper-loader.properties) ; le nom du paramètre étant donné par l'erreur lors du provisioning SCIM

Bloc de code
languagetext
provisionerClass: GrouperScim2Provisioner, configId: sandbox-api-amue-identite, provisioningType: fullProvisionFull, instanceId: wykao35y, state: retrieveAllDataFromGrouperAndTarget, retrieveSyncGroupsMillis: 4, syncGroupCount: 1, retrieveSyncEntitiesMillis: 2, syncEntityCount: 2, retrieveSyncMshipsMillis: 1, syncMshipCount: 2, propagateProvisioningAttributes_millis: 102, targetRetrieveAllGroups: 1, exception: java.lang.RuntimeException: Cant find property: grouper.wsBearerToken.sandbox-api-amue.endpoint in properties file: grouper-loader.properties, it is required
	at edu.internet2.middleware.grouperClient.config.ConfigPropertiesCascadeBase.propertyValueStringHelper(ConfigPropertiesCascadeBase.java:569)
	at edu.internet2.middleware.grouperClient.config.ConfigPropertiesCascadeBase.propertyValueString(ConfigPropertiesCascadeBase.java:517)
	at edu.internet2.middleware.grouperClient.config.ConfigPropertiesCascadeBase.propertyValueStringRequired(ConfigPropertiesCascadeBase.java:422)
	at edu.internet2.middleware.grouper.app.scim2Provisioning.GrouperScim2ApiCommands.httpMethod(GrouperScim2ApiCommands.java:839)
	at edu.internet2.middleware.grouper.app.scim2Provisioning.GrouperScim2ApiCommands.executeMethod(GrouperScim2ApiCommands.java:901)
	at edu.internet2.middleware.grouper.app.scim2Provisioning.GrouperScim2ApiCommands.retrieveScimGroups(GrouperScim2ApiCommands.java:1915)
	at edu.internet2.middleware.grouper.app.scim2Provisioning.GrouperScim2TargetDao.retrieveAllGroups(GrouperScim2TargetDao.java:91)
...

...

  • et enfin vérifier que ça se synchronse bien, en commençant par faire des synchronisations totale avec le Daemon de synchronisation complète (full) simplement dans un premier temps : 


En parallèle, on peut requête requêter l'api API SCIM de gravitee Gravitee via le swagger proposé au travers du portail gravitee Gravitee de l'amue AMUE et véifier vérifier ainsi que les groupes, utilisateurs et membres (affectations) sont bien synchronisés.

...