Aller au contenu

FE - Interconnexion IAM / Keycloak Corp#

Cette page décrit les opérations à effectuer sur un domaine / tenant FE pour pouvoir s'y connecter via Keycloak Corp.

Configuration#

Warning

Pour réaliser ces opérations, il vous faut les droits d'administration du domaine FE impacté.

  1. Télécharger les métadonnées SAML depuis Keycloak Corp
    curl -L https://keycloak.corp.caascad.com/realms/corp/protocol/saml/descriptor > keycloak_corp_saml_metadata.xml
    
  2. Se connecter via la console FE du domaine cible

    1. Se positionner dans la console IAM, choisir
      • Service List > Management & Deployment > Identity and Access Management

    2. Créer un nouvel IDP via le menu de l'IAM
      • Identity Providers > + Create Identity Provider

      • Avec comme paramètres
        • Name : caascad-<DOMAIN_NAME> (caascad-OCBxxxxxxx, on ajoute le nom du domaine pour garantir l'unicité du nom)
        • Protocol : SAML
        • SSO Type : Virtual User
        • Status : Enable
        • Description : Authentification via Keycloak Corp (Caascad)
    3. Modifier cet IDP
      • Copier le Login Link
      • Téléverser le fichier de métadonnées SAML keycloak_corp_saml_metadata.xml
      • Éditer / remplacer la règle de conversion d'identité. Cette règle permet dans notre cas de :
        • Récupérer des informations du token envoyé par Keycloak
          • Email : Que l'on utilise pour créer un compte utilisateur local éphémère csd-<email>
          • Groups (à ajuster pour chaque tenant) :
            • cscd-staging-power-user = Tenant Caascad de Staging
            • cscd-prod-power-user = Tenant Caascad de Production
            • ngot-administrator = Tenant NGOT
        • Mapper le groupe Keycloak (remote) avec un groupe existant dans l'IAM (admin dans notre cas)
        [
                  {
                            "remote": [
                                      {
                                                "type": "Email"
                                      },
                                      {
                                                "any_one_of": [
                                                          "cscd-staging-power-user"
                                                ],
                                                "type": "Groups"
                                      }
                            ],
                            "local": [
                                      {
                                                "user": {
                                                          "name": "cscd-{0}"
                                                }
                                      },
                                      {
                                                "group": {
                                                          "name": "admin"
                                                }
                                      }
                            ]
                  }
        ]
        
        [
                  {
                            "remote": [
                                      {
                                                "type": "Email"
                                      },
                                      {
                                                "any_one_of": [
                                                          "cscd-prod-power-user"
                                                ],
                                                "type": "Groups"
                                      }
                            ],
                            "local": [
                                      {
                                                "user": {
                                                          "name": "cscd-{0}"
                                                }
                                      },
                                      {
                                                "group": {
                                                          "name": "admin"
                                                }
                                      }
                            ]
                  }
        ]
        
        [
                  {
                            "remote": [
                                      {
                                                "type": "Email"
                                      },
                                      {
                                                "any_one_of": [
                                                          "ngot-administrator"
                                                ],
                                                "type": "Groups"
                                      }
                            ],
                            "local": [
                                      {
                                                "user": {
                                                          "name": "cscd-{0}"
                                                }
                                      },
                                      {
                                                "group": {
                                                          "name": "admin"
                                                }
                                      }
                            ]
                  }
        ]
        
      • Ne pas oublier de valider la règle avant de la sauvegarder
      • Sauvegarder la configuration de l'IDP et vérifier à nouveau que la règle a bien été prise en compte (Il arrive souvent que ce ne soit pas le cas)
  3. Ajouter ce lien (Login Link) dans notre documentation interne docs/Opérations/Cloud_Providers/FE/10_connexion.md