Inscription à l'authentification multifacteur au moyen du facteur SMS en 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 dans l'authentification multifacteur à l'aide du facteur SMS.

Téléchargez la collection d'exemples de cas d'utilisation d'authentification de 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.

Comme étape préalable, vous devez obtenir un jeton ME avant de suivre ces étapes. Voir Génération d'un jeton d'accès à l'aide de l'API d'authentification pour plus d'informations sur l'obtention d'un jeton ME.

Note

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

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

Cette étape lance l'inscription par SMS dans une demande POST au point d'extrémité /admin/v1/MyAuthenticationFactorEnroller. Le client doit inclure les attributs suivants :

  • value : Définit l'ID utilisateur. Vous pouvez effectuer un appel GET à {{HOST}}/admin/v1/Me pour obtenir la valeur "id".
  • displayName : Définit le nom d'affichage de l'appareil
  • countryCode : Définit le code de 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 montre 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 montre 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 montre 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"
        }
    }
}

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

Cette étape demande que le code secret à usage unique soit envoyé par SMS dans une demande POST au point d'extrémité /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 d'utilisateur userName: de l'utilisateur

Exemple de demande

L'exemple suivant montre 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 montre 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é par SMS à l'appareil 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 "revende" le code secret à usage unique, les mêmes données utiles que celles mentionnées à l'étape 2 doivent être envoyées de nouveau au serveur.

Exemple de demande

L'exemple suivant montre 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 montre 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é par SMS à l'appareil mobile de l'utilisateur. Dans la réponse, deviceId et requestId doivent être transmis à l'étape suivante.

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

Cette étape valide l'inscription par SMS d'un utilisateur dans une demande POST au point d'extrémité /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 montre 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 montre 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 multifacteur. L'attribut mfapreferredAuthenticationFactor indique que le facteur est défini comme méthode privilégiée. Dans ce cas, c'est un SMS.
Note

Cette valeur peut être différente, si le premier facteur d'inscription est différent de SMS.

Exemples de réponse d'erreur

L'exemple suivant montre 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"
  }
}