Routage de la source d'identité

Routage vers une source d'identité spécifique pour l'authentification

Il n'est pas rare de configurer différentes sources d'identité dans IBM Security Verify pour différents personas. Par exemple, les consommateurs peuvent s'authentifier auprès de fournisseurs d'identité sociale, comme Google et Facebook, et les employés peuvent s'authentifier auprès de l'annuaire Cloud natif ou d'une connexion à un annuaire ou à un fournisseur d'identité fédéré. Dans un écosystème B2B, les organisations partenaires peuvent apporter leurs propres sources d'identité d'employés sous forme de fédérations à configurer sur le locataire. Compte tenu de la pléthore d'options disponibles, l'utilisateur est actuellement censé choisir la source d'identité de son choix dans l'expérience d'authentification par défaut.

Cet article vise à proposer une méthode de sélection de la source d'identité par le biais de règles configurées dans un flux et exécutées côté serveur. L'utilisateur commence simplement par indiquer son nom d'utilisateur.

Vue d'ensemble du flux

Le flux commence par demander à l'utilisateur son nom d'utilisateur. Il s'agit d'une simple page personnalisée. Une fois le nom d'utilisateur soumis, le système exécute un ensemble de règles pour déterminer la source d'identité à utiliser pour l'authentification. L'utilisateur est alors invité à se connecter avec cette source d'identité.

1364

Ressources

Cet article utilise des fichiers ressources importables qui se trouvent dans le sous-répertoire identity_source_routing du dépôt GitHub verify-saas-resources.

Pour plus d'informations sur le dépôt GitHub qui contient des ressources d'appui pour les exemples de flux, veuillez consulter la section Actifs associés de la page de présentation du concepteur de flux.

Prérequis

Veuillez revoir et comprendre l'exemple hello world, y compris la manière d'obtenir des ressources de flux et de pages pour configurer les flux de l'exemple. Reportez-vous à la page parente pour plus de détails sur l'exemple "hello world".

Installation et configuration

Thème de marque personnalisé

Ce flux présente des pages personnalisées et un thème doit donc être créé pour éviter d'affecter les flux utilisant le thème par défaut. Il existe deux fichiers personnalisés :

  • custom_page1.html: Cette page demande le nom d'utilisateur.
  • custom_page2.html: Cette page affiche une erreur en cas d'échec du flux.

Connectez-vous à la console d'administration IBM Security Verify et suivez les étapes ci-dessous.

  1. Dans le menu de gauche, sélectionnez Expérience utilisateur et cliquez sur Marque.

  2. Créer un nouveau thème de marque appelé Identity Source Routing. Pour ce faire, suivez les étapes mentionnées ici.

    2246
  3. Cliquez sur la tuile du thème pour afficher l'arborescence des fichiers

  4. Développez workflow > pages et cliquez sur les trois points verticaux à côté de custom_page1.html Cliquez sur Upload.

    1370
  5. Choisissez $GIT_REPO/flows/identity_source_routing/pages/templates/workflow/default/custom_page1.html dans le dossier local. Cliquez ensuite sur Télécharger.

    1770
  6. Comme à l'étape précédente, sous Flux de travail > Pages, cliquez sur les trois points verticaux à côté de custom_page2.html Cliquez sur Upload.

  7. Choisissez $GIT_REPO/flows/identity_source_routing/pages/templates/workflow/default/custom_page2.html dans le dossier local. Cliquez ensuite sur Télécharger.

Importer le flux de travail

  1. Pour importer le modèle, connectez-vous à votre Verify Tenant en tant qu'administrateur et passez à l'interface d'administration.

  2. Accédez au concepteur de flux.

    568
  3. Cliquez sur l'icône d'importation à côté du bouton Créer un flux.

    2210
  4. Remplissez les détails et téléchargez le fichier situé à "$GIT_REPO/flows/identity_source_routing/identitySourceRouting.bpmn".

    754
  5. Une fois importé, le flux s'affiche comme suit dans le concepteur de flux.

    1116
  6. Cliquez sur Enregistrer les modifications pour enregistrer le flux de travail en mode brouillon.

  7. Une fois toutes les modifications apportées, publiez le flux de travail.

Le flux d'eau est en marche

Une fois publié, lancez le flux à l'aide de l' URL exécution.

  1. Dans l'onglet Général du flux, copiez l' URL exécution.

    1044
  2. Ouvrez une fenêtre de navigateur et allez à cette URL exécution et complétez le flux comme indiqué.

📘

Note

En règle générale, cette procédure est lancée dans le cadre de l'authentification de l'utilisateur. Vous pouvez le faire en personnalisant le modèle de page combined_login_selection.html " dans votre thème. Il est toutefois recommandé d'exécuter le flux de bout en bout à l'aide de l' URL exécution avant de l'activer pour tous les utilisateurs.

Diriger le flux en fonction d'un thème spécifique

Pour lancer le flux publié avec un thème spécifique, passez le themeId comme paramètre de requête dans l' URL exécution. Par exemple :

https://.verify.ibm.com/flows/?reference=identity_source_routing&themeId=69eaf7a4-xxxx-xxxx-xxxx-20f892876d2f.

La valeur de l'ID du thème peut être obtenue en utilisant l'une des deux méthodes suivantes.

  1. Reportez-vous à l'API sur les thèmes.
  2. Vous pouvez également vous rendre dans la section Marque de l'interface utilisateur de l'administrateur et cliquer sur le thème qui vous intéresse. Lorsque vous sélectionnez un thème, vous pouvez voir l'identifiant spécifique du thème dans l' URL. Par exemple, pour l'URL "", l'ID du thème est : Pour l' URLhttps://mytenant.verify.ibm.com/ui/admin/branding/69eaf7a4-xxxx-xxxx-xxxx-20f892876d2f, l'ID du thème est 69eaf7a4-xxxx-xxxx-xxxx-20f892876d2f.

Si aucun themeId n'est transmis à l' URL exécution, celle-ci sera exécutée avec le thème par défaut. Toutefois, dans ce flux, si vous souhaitez rendre un thème spécifique à une page spécifique, la configuration de cette page peut être mise à jour comme suit :

1516

Dans cet exemple spécifique, le thème personnalisé créé ci-dessus, à savoir Identity Source Routing, est appliqué à la page Ask username.

Déballer le flux

Il s'agit d'une section facultative qui permet d'entrer dans les détails du flux de travail. Il précise l'objectif de chaque étape du flux.

Demander le nom d'utilisateur

Cette tâche présente la page personnalisée qui affiche le champ du nom d'utilisateur. L'attribut HTML name est défini sur username. Tous les paramètres soumis sont stockés dans le contexte du flux. Ainsi, lorsque le formulaire HTML est soumis, le contexte du flux est mis à jour avec le nom d' utilisateur comme nom de propriété et la valeur fournie par l'utilisateur.

L' URL l'action HTML FORM renvoie au flux de travail référencé par la macro @WORKFLOW_CALLBACK_URL@ dans le modèle de page.

1462

Le paramètre d'entrée "Signal" est associé à l'"Événement de message" qui suit dans le flux. Cette valeur lie l'événement de soumission du formulaire au point où le flux de travail doit reprendre.

2156

Pour en savoir plus sur la tâche de la page , cliquez ici.

URL connexion à Compute

Cette tâche est au cœur du présent article, car c'est là que se trouve la logique commerciale. Dans l'exemple de modèle, nous utilisons la tâche Function pour calculer la source d'identité correspondant à l'utilisateur donné. Le script peut être modifié pour refléter les règles souhaitées. Ici, le nom d'utilisateur est censé être au format e-mail et les domaines autorisés sont associés à un domaine de source d'identité.

statements:
    # This is the map of email domain to identity source realm
    - context: >
        idsMap := {
            "gmail.com": "www.google.com",
            "in.ibm.com": "www.ibm.com",
            "default": "cloudIdentityRealm"
        }
    # Extract the realm. If no valid realm is available, use "invalid"
    - context: "tokens := ctx.username.split('@')"
    - context: "domain := context.tokens.size() > 1 ? context.tokens[1] : 'default'"
    - context: "realm := context.idsMap.exists(x, x == context.domain) ? context.idsMap[context.domain] : 'invalid'"
    # If the realm is not invalid, redirect to the login flow. This takes advantage of the "realm_hint"
    # parameter accepted by the Verify /login endpoint that instructs the backend to route to the appropriate
    # identity provider.
    - if:
        match: context.realm != "invalid"
        block:
        - return: >
        {
            'loginUrl': 'https://' + ctx.__tenantid + '/idaas/mtfim/sps/idaas/login?runtime=true&login_hint=' + ctx.username + '&realm_hint=' + context.realm
        }
    else:
        - return: >
        {
            'loginUrl': 'invalid'
        }        

Redirection de la page de connexion

Cette tâche est purement une tâche de redirection et peut être utilisée pour rediriger le navigateur vers l' URL configurée dans la tâche.

La sortie de l' URL connexion à Compute est disponible en tant que propriété loginUrl. Cette propriété est référencée dans la propriété URL " à l'aide du langage d'expression unifié.

1502

Traitement d'erreurs.

En cas de domaine non valide, le flux utilise une passerelle conditionnelle pour diriger l'utilisateur vers une page d'erreur personnalisée.

1508

En cas d'erreur du système, le flux sera dirigé vers la page d'erreur. Ceci peut être personnalisé dans le thème.

1088

L'enveloppe

Ce flux présente une méthode permettant d'exécuter des règles côté serveur afin de choisir une source d'identité pour l'authentification. Bien qu'il puisse être utilisé tel quel avec un minimum de personnalisation, vous pouvez introduire d'autres fonctionnalités, telles que l'ajout d'une autocomplétion par mot de passe à ce flux.

ramakrishna J Gorthi et Pradip Jadav, IBM Security