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.
- Etape 1 : Créer l'inscription en libre-service à l'aide du facteur SMS
- Etape 2 : Lancer l'inscription en libre-service à l'aide du mot de passe à usage unique par SMS
- Etape 2a : Lancer la demande d'inscription en libre-service pour renvoyer le code secret à usage unique par SMS
- Etape 3 : Valider l'inscription en libre-service à l'aide du mot de passe à usage unique
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
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
}
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.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"
}
}