Extension d’Azure AD B2C pour la protection des applications sur site

Extension d’Azure AD B2C pour la protection des applications sur site

Dans ce guide, vous apprendrez à intégrer Azure Active Directory B2C (Azure AD B2C) avec l’Orchestrateur d’Identité Maverics de Strata™.

Introduction

Strata complète Azure AD B2C pour protéger les applications sur site en appliquant des stratégies d’accès cohérentes, en maintenant les identités synchronisées et en simplifiant la transition des applications des systèmes d’accès existants vers l’authentification et le contrôle d’accès basés sur les normes fournis par Azure AD B2C. L’orchestrateur d’identité Maverics se connecte à n’importe quel système d’accès, assure la migration des utilisateurs et des informations d’identification en toute transparence, synchronise les politiques et les configurations et fait abstraction de l’authentification et de la gestion des sessions. L’approche unique de Strata en matière de gestion des identités distribuées permet aux entreprises de passer rapidement de leur système existant à Azure AD B2C sans avoir à récrire les applications.

  • Connexion unique des clients aux applications hybrides sur site - Azure AD B2C prend en charge l’authentification unique et complète des clients avec l’orchestrateur d’identité Maverics dès sa mise en service. Les utilisateurs se connectent en utilisant leurs comptes hébergés dans Azure AD B2C ou leur fournisseur d’identité, et Maverics étend le processus d’authentification unique (SSO) aux applications qui ont toujours été sécurisées par des systèmes d’identité traditionnels tels que CA SiteMinder.

  • Extension de l’authentification unique normalisée aux applications sans réécriture - Utilisez Azure AD B2C pour gérer l’accès des utilisateurs et activer l’authentification unique avec les connecteurs SAML ou OIDC de l’orchestrateur d’identités Maverics.

  • Configuration simplifiée - Azure AD B2C propose une interface utilisateur claire, expliquant étape par étape comment connecter les connecteurs SAML ou OIDC de l’orchestrateur d’identité Maverics à Azure AD B2C.

Prérequis

Pour commencer, vous aurez besoin des éléments suivants :

  • Un abonnement Azure AD. Si vous n’avez pas d’abonnement, vous pouvez créer un compte gratuitement.

  • Un locataire Azure AD B2C lié à votre abonnement Azure.

  • Une instance Azure Key Vault permettant de stocker les secrets utilisés par l’orchestrateur d’identité Maverics pour se connecter à Azure AD B2C ou à d’autres fournisseurs d’attributs tels qu’un répertoire ou une base de données LDAP.

  • Une instance de l’orchestrateur d’identité Maverics installée et exécutée sur une machine virtuelle sur Azure ou sur le serveur sur site de votre choix. Pour obtenir des informations sur la manière d’obtenir le logiciel et l’accès aux guides d’installation et de configuration, veuillez écrire à l’adresse suivante : [email protected]

  • Une application sur site que vous allez faire passer d’un système d’accès existant à Azure AD B2C.

Description du cas de figure

L’intégration de Maverics de Strata englobe les éléments suivants :

  • Azure AD B2C : le serveur d’autorisation chargé de vérifier les informations d’identification de l’utilisateur. Les utilisateurs authentifiés peuvent accéder aux applications sur site à l’aide d’un compte local stocké dans le répertoire Azure AD B2C.

  • Un fournisseur d’identité externe ou d’entreprise : il peut s’agir de n’importe quel fournisseur OpenID Connect, de Facebook, de Google ou de Github. Consultez la documentation pour plus d’informations sur l’utilisation de fournisseurs d’identité externes avec Azure AD B2C.

  • L’orchestrateur d’identité Maverics de Strata : le service qui orchestre l’ouverture de session des utilisateurs et transmet de manière transparente l’identité aux applications par le biais d’en-têtes HTTP.

Étapes

  1. L’utilisateur émet une requête d’accès à l’application hébergée sur site. L’orchestrateur d’identité Maverics transmet la requête de l’utilisateur à l’application par proxy.

  2. L’orchestrateur vérifie le statut d’authentification de l’utilisateur. S’il ne reçoit pas de jeton de session, ou si le jeton de session fourni est invalide, l’orchestrateur envoie l’utilisateur vers Azure AD B2C pour l’authentification.

  3. Azure AD B2C envoie la demande d’authentification au fournisseur d’identité configuré.

  4. Le fournisseur d’identité demande des informations d’identification à l’utilisateur. En fonction du fournisseur d’identité, l’utilisateur peut être tenu de procéder à une authentification multifacteur.

  5. Le fournisseur d’identité renvoie la réponse d’authentification à Azure AD B2C. En option, l’utilisateur peut créer un compte local dans le répertoire Azure AD B2C au cours de cette étape.

  6. Azure AD B2C envoie la demande de l’utilisateur au terminal spécifié lors de l’enregistrement de l’application de l’orchestrateur dans le locataire Azure AD B2C.

  7. L’orchestrateur évalue les politiques d’accès et calcule les valeurs d’attributs à inclure dans les en-têtes HTTP transmis à l’application. Au cours de cette étape, l’orchestrateur peut faire appel à des fournisseurs d’attributs supplémentaires pour récupérer les informations nécessaires à la définition correcte des valeurs d’en-tête.

  8. L’orchestrateur définit les valeurs des en-têtes et envoie la demande à l’application.

  9. L’utilisateur est maintenant authentifié et peut accéder à l’application.

Obtenir l’orchestrateur d’identités Maverics

Pour obtenir le logiciel qui vous permettra d’intégrer votre application existante sur site à Azure AD B2C, contactez Strata à l’adresse [email protected].

Après avoir obtenu le logiciel, suivez les étapes ci-dessous pour déterminer les conditions préalables spécifiques à l’orchestrateur et effectuer les étapes d’installation et de configuration requises.

Configurez votre locataire Azure AD B2C

Enregistrez votre demande

Tout d’abord, vous devez enregistrer l’orchestrateur en tant qu’application dans votre locataire Azure AD B2C. Prenez note du nom et de l’identifiant du locataire, de l’identifiant du client, du secret du client, des réclamations configurées et de l’URI de redirection, car vous en aurez besoin ultérieurement lorsque vous configurerez votre instance d’orchestrateur.

Accordez les autorisations Graph API à votre application. Au minimum, votre application aura besoin des autorisations suivantes  offline_access, openid.

Ajoutez un URI de redirection pour votre application. Cet URI doit correspondre au paramètre oauthRedirectURL de la configuration du connecteur Azure AD B2C de votre orchestrateur. Il devrait ressembler à https://example.com/oidc-endpoint.

Créez un flux utilisateur

Vous devrez créer un flux d’inscription et de connexion.

Ajoutez un fournisseur d’identité

Choisissez de connecter votre utilisateur à l’aide d’un compte local ou d’un fournisseur d’identité externe ou d’entreprise.

Définissez les attributs de l’utilisateur

Définissez les attributs à collecter lors de l’inscription.

Spécifiez les réclamations de l’application

Spécifiez les attributs à renvoyer à l’application via votre instance d’orchestrateur. L’orchestrateur utilise les attributs des demandes renvoyées par Azure AD B2C et peut récupérer des attributs supplémentaires auprès d’autres systèmes d’accès connectés, tels que des annuaires LDAP et des bases de données. Ces attributs sont définis dans les en-têtes HTTP et envoyés à l’application sur site en amont.

Configurez l’orchestrateur d’identités Maverics

Dans les sections suivantes, vous suivrez les étapes nécessaires à la configuration de votre instance d’orchestrateur. Pour obtenir de l’aide et de la documentation supplémentaires, veuillez contacter [email protected].

Exigences relatives au serveur de l’orchestrateur d’identités Maverics

Vous pouvez exécuter votre instance d’orchestrateur sur n’importe quel serveur, qu’il soit sur site ou hébergé par un fournisseur d’infrastructure en nuage public tel qu’Azure, AWS ou GCP.

  • SG : RHEL 7.7 ou supérieur, CentOS 7+
  • Disque dur : 10 Go (petit)
  • Mémoire : 16 Go
  • Ports : 22 (SSH/SCP), 443, 80
  • Accès racine pour les tâches d’installation et d’administration.
  • L’orchestrateur d’identité Maverics s’exécute en tant qu’utilisateur maverics sous systemd
  • Sortie du réseau à partir du serveur hébergeant l’orchestrateur d’identité Maverics, avec la possibilité d’atteindre votre locataire Azure AD.

Installez l’orchestrateur d’identités Maverics

  1. Obtenez le dernier paquet Maverics RPM. Installez le paquet sur le système dans lequel vous souhaitez installer Maverics. Si vous copiez le fichier sur un hôte distant, l’outil SCP se révèle très utile.

  2. Pour installer le paquet Maverics, exécutez la commande suivante en remplaçant le nom de fichier par maverics.rpm.

    sudo rpm -Uvf maverics.rpm

    Par défaut, Maverics est installé dans le répertoire /usr/local/bin.

  3. Après l’installation de Maverics, il sera exécuter en tant que service sous systemd. Pour vérifier que le service Maverics est en cours d’exécution, exécutez la commande suivante :

    sudo service maverics status

Si l’installation de l’orchestrateur a réussi, vous devriez voir apparaître un message similaire à celui-ci :

  	Redirecting to /bin/systemctl status maverics.service
	● maverics.service - Maverics
	   Loaded: loaded (/etc/systemd/system/maverics.service; enabled; vendor preset: disabled)
	   Active: active (running) since Thu 2020-08-13 16:48:01 UTC; 24h ago
	 Main PID: 330772 (maverics)
	    Tasks: 5 (limit: 11389)
	   Memory: 14.0M
	   CGroup: /system.slice/maverics.service
	           └─330772 /usr/local/bin/maverics --config /etc/maverics/maverics.yaml
  1. Si le service Maverics ne démarre pas, exécutez la commande suivante pour identifier le problème :

    journalctl --unit=maverics.service --reverse

    L’entrée de journal la plus récente apparaîtra au début de la sortie.

Après l’installation de Maverics, le fichier maverics.yaml par défaut est créé dans le répertoire /etc/maverics.

Configuration de l’orchestrateur d’identités Maverics

Vous devez ensuite configurer votre orchestrateur pour qu’il protège l’application, qu’il s’intègre à Azure AD B2C, qu’il stocke et récupère les secrets d’Azure Key Vault et définir un emplacement dans lequel l’orchestrateur doit lire sa configuration.

Configuration à l’aide de variables d’environnement

Nous vous recommandons de configurer vos instances d’orchestrateur à l’aide de variables d’environnement.

MAVERICS_CONFIG Cette variable d’environnement indique à l’instance de l’orchestrateur quels fichiers de configuration YAML utiliser et où les trouver lors du démarrage ou des redémarrages. Définissez la variable d’environnement dans /etc/maverics/maverics.env.

Création de la configuration TLS de l’orchestrateur

Le champ tls de votre fichier maverics.yaml détermine les configurations de sécurité de la couche de transport que votre instance d’orchestrateur utilisera. Les connecteurs peuvent utiliser des objets TLS ainsi que le serveur de l’orchestrateur.

La clé maverics est réservée au serveur de l’orchestrateur. Toutes les autres clés sont disponibles et peuvent être utilisées pour injecter un objet TLS dans un connecteur donné.

tls:
  maverics:
    certFile: /etc/maverics/maverics.cert
    keyFile: /etc/maverics/maverics.key

Configuration du connecteur Azure AD B2C

Les orchestrateurs utilisent des connecteurs pour s’intégrer aux fournisseurs d’authentification et d’attributs. Dans ce cas de figure, la passerelle d’applications utilise le connecteur Azure AD B2C en tant que fournisseur d’authentification et d’attributs. Azure AD B2C utilise un fournisseur d’identité externe pour l’authentification. Il agit ensuite comme un fournisseur d’attributs auprès de l’orchestrateur, en lui transmettant des attributs dans des réclamations définies dans des en-têtes HTTP.

La configuration de ce connecteur correspond à l’application enregistrée dans le locataire B2C.

  1. Copiez l’ID client, le secret et l’URI de redirection de la configuration de votre application dans votre locataire.

  2. Donnez un nom à votre connecteur, ici azureB2C, et définissez le type de connecteur comme étant azure. Notez le nom du connecteur car cette valeur est utilisée dans d’autres paramètres de configuration ci-dessous.

  3. Pour cette intégration, authType doit être défini sur oidc.

  4. Définissez l’identifiant du client que vous avez copié à l’étape 1 comme valeur du paramètre oauthClientID.

  5. Définissez le secret client que vous avez copié à l’étape 1 comme valeur du paramètre oauthClientSecret.

  6. Définissez l’URI de redirection que vous avez copié à l’étape 1 comme valeur du paramètre oauthRedirectURL.

  7. Le connecteur Azure AD B2C OIDC utilise le terminal OIDC connu pour rechercher des métadonnées, notamment des URL et des clés de signature. Définissez la valeur oidcWellKnownURL sur le terminal de votre locataire.

connectors:
  - name: azureB2C
    type: azure
    oidcWellKnownURL: https://<tenant name>.b2clogin.com/<tenant name>.onmicrosoft.com/B2C_1_login/v2.0/.well-known/openid-configuration
    oauthRedirectURL: https://example.com/oidc-endpoint
    oauthClientID: <azureB2CClientID>
    oauthClientSecret: <azureB2CClientSecret>
    authType: oidc

Protection de votre application sur site grâce à une passerelle d’applications (App Gateway)

La configuration de la passerelle d’applications de l’orchestrateur détermine la manière dont Azure AD B2C doit protéger votre application et la manière dont les utilisateurs peuvent y accéder.

  1. Création d’un nom pour votre passerelle d’applications. Vous pouvez utiliser un nom convivial ou un nom d’hôte complet comme identifiant de votre application.

  2. Définissez le chemin basePath. L’exemple présenté ici utilise la racine de l’application / mais il peut s’agir de n’importe quel chemin d’accès à l’URL de votre application.

  3. Définissez l’application protégée en amont en utilisant l’accord host:port : https://example.com:8080.

  4. Définissez les valeurs d’erreur et de pages non autorisées.

  5. Le fournisseur d’identité détermine la manière dont l’authentification d’un utilisateur sera effectuée. Un fournisseur d’identité détermine comment procéder à l’authentification d’un utilisateur qui n’a pas présenté de session valide dans le cadre de la requête de ressource d’application. La configuration de votre locataire Azure AD B2C détermine comment demander des informations d’identification à un utilisateur, appliquer des stratégies d’authentification supplémentaires (par exemple, exiger un facteur supplémentaire pour compléter le processus d’authentification) et décider quelles réclamations doivent être renvoyées à la passerelle d’applications une fois l’authentification réussie. La valeur du fournisseur d’identité doit correspondre à la valeur du nom de votre connecteur.

  6. Définissez les noms des en-têtes HTTP et les valeurs des attributs qui doivent être fournis à l’application pour établir l’authentification et contrôler l’accès à celle-ci. Les noms des en-têtes peuvent être librement choisis et correspondent généralement à la configuration de l’application. Les valeurs d’attributs sont rattachées à l’espace de noms du connecteur qui les fournit. Dans l’exemple ci-dessous, les valeurs renvoyées par Azure AD B2C sont préfixées par le nom du connecteur azureB2C, le suffixe étant le nom de l’attribut qui contient la valeur requise, par exemple given_name.

  7. Définissez les politiques à évaluer et à appliquer dans policies. Les politiques déterminent si une requête donnée sera admise ou non. Les politiques sont associées à un emplacement dans lequel elles sont appliquées.

Remarque : les en-têtes et les politiques utilisent l’extension de services createHeader pour mettre en œuvre des logiques diverses qui améliorent considérablement les capacités par défaut.

appgateways:
  - name: Sonar
    basePath: /
    upstream: https://example.com:8080
    errorPage: https://example.com:8080/sonar/error
    unauthorizedPage: https://<orchestrator-host>/sonar/accessdenied

    idps:
    - name: azureB2C

    headers:
      SM_USER: azureB2C.sub
      firstname: azureB2C.given_name
      lastname: azureB2C.family_name

    policies:
      - location: /
        authentication:
          idps:
            - azureB2C

Utilisez Azure Key Vault en tant que fournisseur de secrets

Il est extrêmement important de sécuriser les secrets que votre orchestrateur utilise pour se connecter à Azure AD B2C et à tout autre système d’accès.

Maverics chargera par défaut les secrets en texte clair dans maverics.yaml, mais dans le cadre de ce tutoriel, nous utiliserons Azure Key Vault en tant que fournisseur de secrets.

Suivez les instructions pour créer un nouveau coffre-fort que votre instance d’orchestrateur utilisera comme fournisseur de secrets. Ajoutez vos secrets à votre coffre-fort et notez le nom SECRET NAME attribué à chaque secret. Par exemple, AzureB2CClientSecret.

Pour déclarer une valeur comme étant un secret dans un fichier de configuration maverics.yaml, il suffit de la placer entre des crochets :

connectors:
  - name: AzureB2C
    type: azure
    oauthClientID: <AzureB2CClientID>
    oauthClientSecret: <AzureB2CClientSecret>

La valeur spécifiée entre les crochets doit correspondre au nom SECRET NAME attribué au secret dans votre coffre-fort Azure Key Vault.

Pour charger les secrets à partir d’Azure Key Vault, définissez la variable d’environnement MAVERICS_SECRET_PROVIDER dans le fichier /etc/maverics/maverics.env, avec les informations d’identification trouvées dans le fichier azure-credentials.json, en utilisant le modèle suivant :

MAVERICS_SECRET_PROVIDER='azurekeyvault://<KEYVAULT NAME>.vault.azure.net?clientID=<APPID>&clientSecret=<PASSWORD>&tenantID=<TENANT>'

Mise en place de l’ensemble

Voici comment la configuration de l’orchestrateur apparaîtra lorsque vous aurez terminé les configurations décrites ci-dessus.

version: 0.1

tls:
  maverics:
    certFile: certs/maverics.crt
    keyFile: certs/maverics.key

http:
  address: :443
  tls: maverics

connectors:
  - name: azureB2C
    type: azure
    oidcWellKnownURL: https://<tenant name>.b2clogin.com/<tenant name>.onmicrosoft.com/B2C_1_login/v2.0/.well-known/openid-configuration
    oauthRedirectURL: https://example.com/oidc-endpoint
    oauthClientID: <azureB2CClientID>
    oauthClientSecret: <azureB2CClientSecret>
    authType: oidc

appgateways:
  - name: Sonar
    basePath: /
    upstream: http://example.com:8080
    errorPage: http://example.com:8080/sonar/accessdenied
    unauthorizedPage: http://<orchestrator-host>/sonar/accessdenied

    idps:
    - name: azureB2C

    headers:
      SM_USER: azureB2C.sub
      firstname: azureB2C.given_name
      lastname: azureB2C.family_name

    policies:
      - location: /
        authentication:
          idps:
            - azureB2C

Test du flux

  1. Ouvrez un navigateur et accédez à l’URL de l’application sur site, https://example.com/sonar/dashboard.

  2. L’orchestrateur doit rediriger vers la page que vous avez configurée dans votre flux utilisateur.

  3. Sélectionnez le fournisseur d’identité dans la liste figurant sur la page.

  4. Une fois que vous êtes redirigé vers le fournisseur d’identité, saisissez les informations d’identification demandées, y compris un jeton MFA si le fournisseur d’identité l’exige.

  5. Une fois l’authentification réussie, vous devriez être redirigé vers B2C, qui transmet la demande d’application à l’URI de redirection de l’orchestrateur.

  6. L’orchestrateur évalue les politiques, calcule les en-têtes et envoie l’utilisateur à l’application en amont.

  7. Vous devriez voir apparaître l’application demandée.