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