Inscription à l'authentification à plusieurs facteurs à l'aide du facteur SMS à l'aide du libre-service

Ce cas d'utilisation fournit un exemple étape par étape d'utilisation de l'API REST des domaines d'identité pour l'inscription en libre-service à l'authentification multifacteur (MFA) à l'aide de SMS Factor.

Téléchargez la collection d'exemples de cas d'utilisation d'authentification des domaines d'identité et le fichier de variables globales à partir du dossier idcs-rest-clients dans le référentiel idm-samples GitHub, puis importez-les dans Postman.

L'étape préalable consiste à obtenir un jeton ME avant de suivre ces étapes. Pour plus d'informations sur l'obtention d'un jeton ME, reportez-vous à Génération d'un jeton d'accès à l'aide de l'API d'authentification.

Remarque

Ces étapes supposent que les facteurs pertinents de l'authentification à plusieurs facteurs sont activés à l'aide de Configuration des paramètres d'authentification à plusieurs facteurs.

Step1 : Créer l'inscription en libre-service à l'aide du facteur SMS

Cette étape lance l'inscription de SMS à une demande POST vers l'adresse /admin/v1/MyAuthenticationFactorEnroller. Le client doit inclure les attributs suivants :

  • value : définit l'ID utilisateur. Vous pouvez effectuer un appel GET vers {{HOST}}/admin/v1/Me pour obtenir la valeur "id".
  • displayName : définit le nom d'affichage du périphérique.
  • countryCode : définit le code pays du numéro de téléphone où le texte SMS sera envoyé
  • phoneNumber : définit le numéro de téléphone où le texte SMS sera envoyé

Exemple de demande

L'exemple suivant illustre le contenu du corps de la demande POST au format JSON :

{
  "schemas": [
    "urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorEnroller"
  ],
  "user": {
    "value": "c810ff4522eb437abac013291c1984d1"
  },
  "displayName": "Joe's Personal Phone",
  "countryCode": "+44",
  "phoneNumber": "1122334455",
  "authnFactors": [
    "SMS"
  ]
} 

Exemple de réponse

L'exemple suivant illustre le contenu du corps de la réponse au format JSON :

{
    "schemas": [
        "urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorEnroller"
    ],
    "user": {
        "value": "c810ff4522eb437abac013291c1984d1",
        "$ref": "https://example.identitycloud.com/admin/v1/Users/c810ff4522eb437abac013291c1984d1"
    },
    "displayName": "Joe's Personal Phone",
    "countryCode": "+44",
    "phoneNumber": "XXXXXXX455",
    "authnFactors": [
        "SMS"
    ],
    "meta": {
        "resourceType": "MyAuthenticationFactorEnroller",
        "location": "https://example.identitycloud.com/admin/v1/MyAuthenticationFactorEnroller"
    },
    "deviceId": "92142250e2ab4608b5c6532eb73e3d7c",
    "requestId": "a0a7f9bf-13a8-43f3-bcc7-2087dc3f7a18o-o1548346179"
}

Dans la réponse, deviceId et requestId doivent être transmis à l'étape suivante.

Exemples de réponse d'erreur

L'exemple suivant montre le message d'erreur au format JSON lorsque userId n'est pas valide. Vous obtenez un code de réponse HTTP 400.
{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:Error",
        "urn:ietf:params:scim:api:oracle:idcs:extension:messages:Error"
    ],
    "detail": "AuthenticationFactorEnroller.user references a User with ID 1fa35f74491d44ef5a7cc25bfdb1c8b1c that does not exist.",
    "status": "400",
    "urn:ietf:params:scim:api:oracle:idcs:extension:messages:Error": {
        "messageId": "error.common.validation.invalidReferenceResource"
    }
}

L'exemple suivant illustre le message d'erreur au format JSON si phoneNumber est incorrect. Vous obtenez un code de réponse HTTP 400.

{
    "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:Error",
        "urn:ietf:params:scim:api:oracle:idcs:extension:messages:Error"
    ],
    "detail": "Your phone number +91123 is not valid.",
    "status": "400",
    "urn:ietf:params:scim:api:oracle:idcs:extension:messages:Error": {
        "messageId": "error.ssocommon.auth.invalidPhoneNumber",
        "additionalData": {
            "params": "+91123",
            "msgId": "error.ssocommon.auth.invalidPhoneNumber"
        }
    }
}

Etape 2 : Lancer l'inscription en libre-service à l'aide du mot de passe à usage unique par SMS

Cette étape demande que le mot de passe à usage unique soit envoyé via SMS dans une demande POST à l'adresse /admin/v1/MyAuthenticationFactorInitiator. Le client doit inclure les attributs suivants :

requestId: reçu dans la réponse de l'étape 1

deviceId: reçu dans la réponse de l'étape 1

Nom utilisateur userName: de l'utilisateur

Exemple de demande

L'exemple suivant illustre le contenu du corps de la demande POST au format JSON :

{
  "schemas": [
    "urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorInitiator"
  ],
  "deviceId": "92142250e2ab4608b5c6532eb73e3d7c",
  "requestId": "a0a7f9bf-13a8-43f3-bcc7-2087dc3f7a18o-o1548346179",
  "userName": "jbloggs",
  "authFactor": "SMS"
}

Exemple de réponse

L'exemple suivant illustre le contenu de la réponse au format JSON :

{
    "deviceId": "92142250e2ab4608b5c6532eb73e3d7c",
    "requestId": "a0a7f9bf-13a8-43f3-bcc7-2087dc3f7a18o-o1548346179",
    "authFactor": "SMS",
    "userName": "jbloggs",
    "displayName": "Joe's Personal Phone",
    "schemas": [
        "urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorInitiator"
    ]
}

Un code de mot de passe à usage unique est envoyé à l'aide de SMS sur le périphérique mobile de l'utilisateur. Dans la réponse, deviceId et requestId doivent être transmis à l'étape suivante.

2a. Lancer la demande d'inscription en libre-service pour renvoyer le mot de passe à usage unique par SMS

Si l'utilisateur souhaite que le serveur "renvoie" le mot de passe à usage unique, la même charge utile que celle mentionnée à l'Step 2 doit à nouveau être envoyée au serveur.

Exemple de demande

L'exemple suivant illustre le contenu du corps de la demande POST au format JSON :

{
  "schemas": [
    "urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorInitiator"
  ],
  "deviceId": "92142250e2ab4608b5c6532eb73e3d7c",
  "requestId": "a0a7f9bf-13a8-43f3-bcc7-2087dc3f7a18o-o1548346179",
  "userName": "jbloggs",
  "authFactor": "SMS"
}

Exemple de réponse

L'exemple suivant illustre le contenu de la réponse au format JSON :

{ 
    "deviceId": "92142250e2ab4608b5c6532eb73e3d7c",
    "requestId": "a0a7f9bf-13a8-43f3-bcc7-2087dc3f7a18o-o1548346179",
    "authFactor": "SMS",
    "userName": "jbloggs",
    "displayName": "Joe's Personal Phone",
    "schemas": [
        "urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorInitiator"
    ]
}

Un code de mot de passe à usage unique est envoyé via SMS à l'appareil mobile de l'utilisateur. Dans la réponse, deviceId et requestId doivent être transmis à l'étape suivante.

Etape 3 : Valider l'inscription en libre-service à l'aide du mot de passe à usage unique

Cette étape valide l'inscription SMS d'un utilisateur dans une demande POST à l'adresse /admin/v1/MyAuthenticationFactorValidator.

Le client doit inclure les attributs suivants :

  • otpCode: le code reçu par l'utilisateur sur son appareil
  • requestId: reçu dans la réponse de l'étape 2
  • deviceId: reçu dans la réponse de l'étape 2

Exemple de demande

L'exemple suivant illustre le contenu de la demande POST au format JSON :

{
  "schemas": [
    "urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorValidator"
  ],
  "deviceId": "92142250e2ab4608b5c6532eb73e3d7c",
  "requestId": "a0a7f9bf-13a8-43f3-bcc7-2087dc3f7a18o-o1548346179",
  "otpCode": "191224",
  "authFactor": "SMS",
  "scenario": "ENROLLMENT"
}
    

Exemple de réponse

L'exemple suivant illustre le contenu de la réponse au format JSON :

{
    "authFactor": "SMS",
    "deviceId": "92142250e2ab4608b5c6532eb73e3d7c",
    "requestId": "a0a7f9bf-13a8-43f3-bcc7-2087dc3f7a18o-o1548346179",
    "scenario": "ENROLLMENT",
    "status": "SUCCESS",
    "displayName": "Joe's Personal Phone",
    "schemas": [
        "urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorValidator"
    ],
    "mfaStatus": "ENROLLED",
    "mfaPreferredDevice": "2b27b8c072d64b899d41c8470acea32a",
    "mfaPreferredAuthenticationFactor": "SMS",
    "securityQuestionsPresent": false,
    "devicesCount": 3,
    "emailFactorEnrolled": true
} 
Dans la réponse, l'attribut mfaStaus:"ENROLLED" indique que l'utilisateur s'est inscrit à l'authentification à plusieurs facteurs. L'attribut mfapreferredAuthenticationFactor indique le jeu de facteurs comme méthode préférée. Dans ce cas, c'est SMS.
Remarque

Cette valeur peut être différente si le premier facteur inscrit est différent de SMS.

Exemples de réponse d'erreur

L'exemple suivant illustre le message d'erreur au format JSON si le mot de passe à usage unique est incorrect. Vous obtenez un code de réponse HTTP 401 et l'inscription échoue.

{
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:Error",
    "urn:ietf:params:scim:api:oracle:idcs:extension:messages:Error"
  ],
  "detail": "Invalid passcode.",
  "status": "401",
  "urn:ietf:params:scim:api:oracle:idcs:extension:messages:Error": {
    "messageId": "error.ssocommon.auth.invalidPasscode"
  }
}