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.

...

Bloc de code
languageshell
...
ExecStart=/usr/bin/docker compose up grouper-%i -d --remove-orphans --build
...


Avec cet ajout, Grouper reconnait le certificat Harica du Gravitee de l'AMUE.

Notez que cette modification peut vous permettre d'ajouter d'autres certificats internes, par exemple le certificat racine de votre Microsoft Active Directory (AD).


Authentification par client_secret_basic

La récupération du bearerToken sur le Gravitee Amue via 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 de code à faire pour le supporter est assez simple.

C'est ce qu'on a fait ici (PR) : https://github.com/Internet2/grouper/pull/262

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

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 classes du hôte dans l'image.

Le Dockerfile est modifié ainsi (cf dernière ligne) : 

Bloc de code
languagedocker
FROM i2incommon/grouper:6.1.0

COPY ca-certificates/ /tmp/ca-certificates/

RUN for cert in /tmp/ca-certificates/*.crt; do \
      alias=$(basename "$cert" .crt); \
      keytool -importcert \
        -noprompt \
        -trustcacerts \
        -alias "$alias" \
        -file "$cert" \
        -keystore /usr/lib/jvm/java-17-amazon-corretto/lib/security/cacerts \
        -storepass changeit; \
    done \
    && rm -rf /tmp/ca-certificates/

COPY classes/ /opt/grouper/grouperWebapp/WEB-INF/classes/



Fixe du endpoint SCIM

Si vous voulez  également d'avoir l'interface web qui vous permet directement de configurer le "endpoint" ( configurer via l'outil configuration sinon) 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)
...

→ grouper.wsBearerToken.sandbox-api-amue.endpoint in properties file: grouper-loader.properties