Cf ESUP-Days n°39#15%3A30%E2%80%93Grouper5.xetSCIM slide 27 le portail Gravitee proposée par l'AMUE propose, en plus de SAML/OIDC, la possibilité de synchroniser les utilisateurs et les groupes (qui vont correspondre à des rôles) via SCIM 2.
Quelques ajustements doivent être faits actuellement pour que ça fonctionne, nous les documentons ici.
On se place dans un environnement très similaire à ce qui est décrit sur la page Grouper 5.x.
Certificat HTTPS Harica
Actuellement, le gravitee de l'amue est proposée via 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 pour qui 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 par défaut).
La JVM embarqué par le docker grouper est une JVM Amazon Corretto dont le trustore n'est pas celui du système. Aussi, on ne peut pas utiliser simplement une commande type update-ca-trust (équivalent de update-ca-certificates sous rocky), 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 Grouper 5.x. on va passer par un Dockerfile qui va nous rebuilder l'image Grouper.
On modifie le docker-compose :
services:
grouper-ui:
# image: "i2incommon/grouper:6.1.0"
build:
context: .
dockerfile: Dockerfile
Puis on édite le Dockerfile ainsi :
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/
On a plus qu'à disposer le certificat Harica dans le répertoire ca-certificates :
cat /opt/grouperContainer/ca-certificates/HARICA_TLS_RSA_Root_CA_2021.crt -----BEGIN CERTIFICATE----- MIIFpDCCA4ygAwIBAgIQOcqTHO9D88aOk8f0ZIk4fjANBgkqhkiG9w0BAQsFADBs MQswCQYDVQQGEwJHUjE3MDUGA1UECgwuSGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJl c2VhcmNoIEluc3RpdHV0aW9ucyBDQTEkMCIGA1UEAwwbSEFSSUNBIFRMUyBSU0Eg Um9vdCBDQSAyMDIxMB4XDTIxMDIxOTEwNTUzOFoXDTQ1MDIxMzEwNTUzN1owbDEL MAkGA1UEBhMCR1IxNzA1BgNVBAoMLkhlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNl YXJjaCBJbnN0aXR1dGlvbnMgQ0ExJDAiBgNVBAMMG0hBUklDQSBUTFMgUlNBIFJv b3QgQ0EgMjAyMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAIvC569l mwVnlskNJLnQDmT8zuIkGCyEf3dRywQRNrhe7Wlxp57kJQmXZ8FHws+RFjZiPTgE 4VGC/6zStGndLuwRo0Xua2s7TL+MjaQenRG56Tj5eg4MmOIjHdFOY9TnuEFE+2uv a9of08WRiFukiZLRgeaMOVig1mlDqa2YUlhu2wr7a89o+uOkXjpFc5gH6l8Cct4M pbOfrqkdtx2z/IpZ525yZa31MJQjB/OCFks1mJxTuy/K5FrZx40d/JiZ+yykgmvw Kh+OC19xXFyuQnspiYHLA6OZyoieC0AJQTPb5lh6/a6ZcMBaD9YThnEvdmn8kN3b LW7R8pv1GmuebxWMevBLKKAiOIAkbDakO/IwkfN4E8/BPzWr8R0RI7VDIp4BkrcY AuUR0YLbFQDMYTfBKnya4dC6s1BG7oKsnTH4+yPiAwBIcKMJJnkVU2DzOFytOOqB AGMUuTNe3QvboEUHGjMJ+E20pwKmafTCWQWIZYVWrkvL4N48fS0ayOn7H6NhStYq E613TBoYm5EPWNgGVMWX+Ko/IIqmhaZ39qb8HOLubpQzKoNQhArlT4b4UEV4AIHr W2jjJo3Me1xR9BQsQL4aYB16cmEdH2MtiKrOokWQCPxrvrNQKlr9qEgYRtaQQJKQ CoReaDH46+0N0x3GfZkYVVYnZS6NRcUk7M7jAgMBAAGjQjBAMA8GA1UdEwEB/wQF MAMBAf8wHQYDVR0OBBYEFApII6ZgpJIKM+qTW8VX6iVNvRLuMA4GA1UdDwEB/wQE AwIBhjANBgkqhkiG9w0BAQsFAAOCAgEAPpBIqm5iFSVmewzVjIuJndftTgfvnNAU X15QvWiWkKQUEapobQk1OUAJ2vQJLDSle1mESSmXdMgHHkdt8s4cUCbjnj1AUz/3 f5Z2EMVGpdAgS1D0NTsY9FVqQRtHBmg8uwkIYtlfVUKqrFOFrJVWNlar5AWMxaja H6NpvVMPxP/cyuN+8kyIhkdGGvMA9YCRotxDQpSbIPDRzbLrLFPCU3hKTwSUQZqP JzLB5UkZv/HywouoCjkxKLR9YjYsTewfM7Z+d21+UPCfDtcRj88YxeMn/ibvBZ3P zzfF0HvaO7AWhAw6k9a+F9sPPg4ZeAnHqQJyIkv3N3a6dcSFA1pj1bF1BcK5vZSt jBWZp5N99sXzqnTPBIWUmAD04vnKJGW/4GKvyMX6ssmeVkjaef2WdhW+o45WxLM0 /L5H9MG0qPzVMIho7suuyWPEdr6sOBjhXlzPrjoiUevRi7PzKzMHVIf6tLITe7pT BGIBnfHAT+7hOtSLIBD6Alfm78ELt5BGnBkpjNxvoEppaZS3JGWg/6w/zgH7IS79 aPib8qXPMThcFarmlwDB31qlpzmq6YR/PFGoOtmUW4y/Twhx5duoXNTSpv4Ao8YW xw/ogM4cKGR0GQjTQuPOAF1/sdwTsOEFy9EgqoZ0njnnkf3/W9b3raYvAwtt41dU 63ZTGI0RmLo= -----END CERTIFICATE-----
Le même Dockerfile pourra être partagé avec l'ensemble des 3 services/images docker grouper, mais il faudra les rebuilder à chaque fois pour prise en compte d'une modification du Dockerfile.
cd /opt/grouperContainer/ systemctl stop grouper-docker-compose@ui.service docker compose build grouper-ui systemctl start grouper-docker-compose@ui.service
On peut aussi rajouter un --build dans /etc/systemd/system/grouper-docker-compose@.service :
... ExecStart=/usr/bin/docker compose up grouper-%i -d --remove-orphans --build ...