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

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

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 appeler 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 du SMS sera envoyé.
  • phoneNumber : Définit le numéro de téléphone où le texte du 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 mot de passe à 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 OTP 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 veut que le serveur "renvoie" le mot de passe à 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 OTP 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 le jeu de facteurs comme méthode privilégiée. Dans ce cas, c'est SMS.
Note

Cette valeur peut être différente si le premier facteur inscrit est différent du 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"
  }
}