Se connecter avec le nom d'utilisateur
Cet article illustre comment une session authentifiée peut être créée à l'aide d'un mécanisme d'authentification personnalisé. Plus précisément, pour rester simple, l'utilisateur s'authentifie avec un simple nom d'utilisateur valide. Bien qu'il ne s'agisse pas d'une option pratique pour un déploiement en production, elle permet d'introduire les éléments suivants :
- Page personnalisée pour collecter le nom d'utilisateur
- Échange du nom d'utilisateur pour une session de connexion
Il peut être facilement étendu pour ajouter de véritables formes d'authentification, telles que l'authentification mobile basée sur le push à l'aide de l'application IBM Verify.
Attention !
Ce mécanisme d'authentification ne doit jamais être utilisé comme flux prêt à la production. Il est utilisé ici pour illustrer l'approche qui peut être adoptée pour construire un flux de connexion personnalisé. Cependant, l'authentification par un nom d'utilisateur valide sans défis et garanties supplémentaires est très faible et ne doit jamais être utilisée dans le monde réel.
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. Le nom d'utilisateur est utilisé comme "sub" dans un jeton Web JSON (JWT) et le JWT est utilisé pour obtenir un jeton d'accès utilisateur à l'aide du flux d'octroi OAuth 2.0 JWT Bearer. Ce jeton est ensuite échangé contre une session authentifiée sur le navigateur à l'aide de l'API de session.

Le flux peut être amélioré pour inclure la découverte du mécanisme d'authentification pour l'utilisateur et déclencher ensuite des flux d'authentification plus réalistes à l'aide des API de vérification.
Ressources
Cet article utilise des ressources de fichiers importables qui peuvent être trouvées dans le sous-répertoire authenticate_with_username 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
- IBM Security Verify tenant
- Le concepteur de flux est activé dans votre locataire
- Contenu d' IBM Security Verify SaaS Resources téléchargé ou cloné sur votre machine. Reportez-vous à la page des parents pour plus de détails sur la manière d'y parvenir. Le dossier est désigné ci-après par le terme
$GIT_REPO
.
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.
-
Dans le menu de gauche, sélectionnez "User experience" et cliquez sur "Branding"
-
Créez un nouveau thème de marque appelé "Login with username". Vous pouvez suivre les étapes mentionnées ici.
-
Cliquez sur la tuile du thème pour afficher l'arborescence des fichiers
-
Développez "workflow" > "pages" et cliquez sur les trois points verticaux à côté de custom_page1.html ". Cliquez sur "Télécharger".
-
Choisissez $GIT_REPO/flows/authenticate_with_username/theme/templates/workflow/pages/default/custom_page1.html " dans le dossier local. Cliquez ensuite sur "Télécharger".
-
Comme à l'étape précédente, sous "workflow" > "pages", cliquez sur les trois points verticaux à côté de custom_page2.html ". Cliquez sur "Télécharger".
-
Choisissez $GIT_REPO/flows/authenticate_with_username/theme/templates/workflow/pages/default/custom_page2.html " dans le dossier local. Cliquez ensuite sur "Télécharger".
Créer une application OIDC compatible avec le flux de subventions OAuth 2.0 JWT Bearer
Le flux OAuth 2.0 JWT Bearer grant est utilisé par le flux "Login with username" pour obtenir un jeton d'accès utilisateur. Ce jeton est ensuite échangé contre une session authentifiée du navigateur web.
-
Dans le menu de gauche, sélectionnez "Applications" et cliquez sur "Applications"
-
Sélectionnez "Ajouter une application" pour ouvrir le catalogue d'applications. Sélectionnez "Application personnalisée" et cliquez sur "Ajouter une application".
-
L'écran suivant est l'assistant de définition de l'application. L'onglet de départ présente des paramètres généraux qui permettent de configurer des métadonnées d'application spécifiques. Ici, décochez la case "Show on launchpad" et indiquez le nom de l'entreprise. Vous pouvez indiquer IBM Lab" pour la valeur de l'entreprise.
-
Sélectionnez l'onglet Sign-On pour configurer la définition de l'application. Il y a quelques options à configurer. Suivez les étapes ci-dessous pour configurer l'application :
- Méthode de connexion - OpenID Connect 1.0
- Types de subventions - JWT bearer
- Client public (pas de secret client)- Activé
- JWKS URI - https://yourtenant.verify.ibm.com/oauth2/jwks
- Identification de l'utilisateur du porteur JWT - Nom d'utilisateur
- Sous "Paramètres du jeton", expiration du jeton d'accès (secondes)- 300
-
Sauvegardez la configuration
-
Vous serez redirigé vers l'écran "Droits". Étant donné la nature de ce flux, où l'utilisateur s'authentifie simplement auprès du locataire avec un nom d'utilisateur valide, restreignez l'accès à des utilisateurs ou groupes spécifiques pour tester le flux, comme illustré ci-dessous.
-
Retournez à l'onglet "Sign-on" et copiez l'identifiant du client de l'OIDC. Copiez-le dans un fichier texte.
Attention !
Compte tenu de la faiblesse de l'authentification dans ce flux, veillez à ajouter un ou plusieurs utilisateurs spécifiques dans l'onglet "Habilitations" de l'application. En outre, les utilisateurs ne doivent pas être des administrateurs ou avoir des rôles qui leur donnent un accès étendu à la console d'administration. Cela ouvrirait involontairement votre locataire à des attaques.
De même, assurez-vous que ces utilisateurs n'ont pas accès aux applications critiques de l'entreprise par le biais de ce processus de connexion.
Importer le flux de travail
-
Dans le menu de gauche, sélectionnez "User experience" et cliquez sur "Flow designer".
-
Cliquez sur l'icône d'importation à côté du bouton "Créer un flux".
-
Remplissez les détails et téléchargez le fichier situé à "$GIT_REPO/flows/authenticate_with_username/authenticate_with_username GIT_REPO/flows/authenticate_with_username/authenticate_with_username.bpmn ".
-
Cliquez sur "Importer un flux". Le concepteur s'ouvre alors.
-
Sélectionnez la tâche "Set Vars" et modifiez la valeur "client_id" avec celle de l'application OIDC.
-
Sélectionnez la tâche "Prompt : Nom d'utilisateur" et définissez le thème "Connexion avec le nom d'utilisateur".
-
Cliquez sur "Enregistrer les modifications" et "Publier".
Le flux d'eau est en marche
-
Dans l'onglet "Général" du flux, copiez l'" URL exécution".
-
Ouvrez un onglet incognito ou un navigateur complètement différent et naviguez jusqu'à l' URL.
-
Saisissez le nom d'utilisateur et cliquez sur "Continuer".
-
Si le nom d'utilisateur est valide, l'utilisateur sera connecté et verra le panneau de lancement de l'application.
Note
Ce nom d'utilisateur doit appartenir à un compte d'utilisateur dans le domaine natif de Cloud Directory ( "cloudIdentityRealm" et ne pas être stocké en tant qu'utilisateur appartenant à une source d'identité externe comme IBMid. Si vous souhaitez utiliser une source d'identité externe, ajoutez "@IDS_REALM". Par exemple, pour les utilisateurs IBMid, ajouter "@ www.ibm.com.
Déballer le flux
Il s'agit d'une section facultative qui permet d'entrer dans les détails du flux de travail.
Invite : 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 "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.

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.

Pour en savoir plus sur la tâche de la page, cliquez ici.
Obtenir le jeton d'utilisateur
Cette tâche utilise le langage d'expression commun utilisé dans Verify pour les scripts. Les actions suivantes
sont effectuées :
-
Génère un jeton Web JSON signé à l'aide de la fonction
jwt.sign
. Ce JWT est signé par un certificat personnel dans le magasin de gestion des certificats du locataire.ctx.username
est le nom d'utilisateur soumis par l'utilisateur.- context: > userJWT := jwt.sign({ "sub": ctx.username, "iss": "https://" + ctx.__tenantid, "aud": "https://" + ctx.__tenantid + "/oidc/endpoint/default/token", "jti": genUUID() }, {})
-
Appelle le point de terminaison du jeton du locataire pour demander un jeton d'accès à l'aide du flux d'octroi OAuth 2.0 JWT Bearer.
- context: > roauth := hc.Post("https://" + ctx.__tenantid + "/oidc/endpoint/default/token", {"content-type": "application/x-www-form-urlencoded"}, jsonToFormURLEncoded({ "client_id": ctx.client_id, "client_secret": has(ctx.client_secret) ? ctx.client_secret : "", "assertion": context.userJWT, "grant_type": "urn:ietf:params:oauth:grant-type:jwt-bearer" }, true))
-
Génère l' URL pour rediriger le navigateur et créer la session de connexion.
- return: > { "result": "true", "loginURL": "https://" + ctx.__tenantid + "/v1.0/auth/session?access_token=" + context.roauth.responseBody.access_token + "&redirect_url=" + (has(ctx.Target) ? ctx.Target : "https://" + ctx.__tenantid + "/usc") }
Une fois cette tâche fonctionnelle exécutée, le contexte de flux possède deux propriétés supplémentaires :
- le résultat : Indique si le jeton a été généré avec succès
- loginURL: Il s'agit du point de terminaison de la session vers lequel le navigateur doit être redirigé pour créer une session d'authentification unique authentifiée par l'utilisateur.
L'enveloppe
Ce flux permet à un utilisateur de s'authentifier en fournissant simplement un nom d'utilisateur valide. Il a présenté les concepts clés pour construire un flux d'authentification utilisant des API et/ou des mécanismes d'authentification non natifs. Il n'est pas prévu de le déployer dans un environnement de production réel, étant donné la possibilité évidente d'exposition, et le lecteur doit faire preuve d'une prudence adéquate, comme indiqué tout au long du guide.
Vivek Shankar, IBM Security
Updated 29 days ago