- Development Integration
- /
- SDK
- /
- Python
- /
Authentication Module
- /
MFA Factor Management
- /
- Initiate MFA Factor Enrollment Request
¶ Initiate a request to bind an MFA authentication factor
This document is automatically generated based on https://github.com/authing/authing-docs-factory based on the https://api-explorer.genauth.ai V3 API, and is consistent with the API parameters and return results. If the description of this document is incorrect, please refer to the V3 API.
When the user has not bound an MFA authentication factor, you can initiate a request to bind an MFA authentication factor. Different types of MFA authentication factor binding requests require different parameters, see profile parameters for details. After initiating the verification request, the GenAuth server will use different means to request verification based on the corresponding authentication factor type and the passed parameters. This interface will return the enrollmentToken, you need to bring this enrollmentToken when requesting the "Bind MFA Authentication Factor" interface and provide the corresponding credentials.
¶ Method name
AuthenticationClient.send_enroll_factor_request
¶ Request parameters
| Name | Type | Required | Default value | Description | Sample value |
|---|---|---|---|---|---|
| profile | FactorProfile | Yes | - | MFA authentication factor details | {"phoneNumber":"188xxxx8888","phoneCountryCode":"+86"} |
| factorType | string | Yes | - | MFA authentication factor type: - OTP: OTP- SMS: SMS- EMAIL: Email- FACE: Face | SMS |
¶ Request response
Type: SendEnrollFactorRequestRespDto
| Name | Type | Description |
|---|---|---|
| statusCode | number | Business status code, which can be used to determine whether the operation is successful. 200 means success. |
| message | string | Description |
| apiCode | number | Segmented error code, which can be used to get the specific error type (successful request does not return). For a detailed list of error codes, please see: API Code List (opens new window) |
| requestId | string | Request ID. Returned when the request fails. |
| data | SendEnrollFactorRequestDataDto | Response data |
Sample result:
{
"statusCode": 200,
"message": "Success",
"requestId": "934108e5-9fbf-4d24-8da1-c330328abd6c",
"data": {
"enrollmentToken": "TQoCISidM0kBji0dxRi3afSDtkvvMiUphenIgLF87y+JOw4T8fDWOsHHXIcvZ2EVESXhTrfGyh1iGf52Cg9e9byeFQvm1VZ0QWrwmzwpntFAVtf1IP9LqVhmzXhBMFvLOcU/z1Eh/n0CrwX0uHNpJoMW9lp9AqHd9HvauaGKX+Y=",
"otpData": {
"qrCodeUri": "otpauth://totp/userPoolName:test?secret=xxxx&period=30&digits=6&algorithm=SHA1&issuer=userPoolName",
"qrCodeDataUrl": "data:image/png;base64,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",
"recoveryCode": "e7ad-aaa4-da75-fa37-57d1-5141"
}
}
}
¶ Data structure
¶ FactorProfile
| Name | Type | Is it required? | Description | Sample value |
|---|---|---|---|---|
| phoneNumber | string | No | This parameter is required when initiating the binding of the SMS authentication factor. The mobile phone number that the user wants to bind needs to be passed. The GenAuth server will send a SMS verification code to this mobile phone number and require the user to provide the verification code during the MFA binding phase. A mobile phone number can only be requested once within one minute. | 188xxxx8888 |
| phoneCountryCode | string | No | This parameter can be set when initiating the binding of the mobile phone SMS authentication factor and an international mobile phone number needs to be bound. The default value is +86, the mobile phone area code of mainland China. The GenAuth SMS service does not currently have built-in support for international mobile phone numbers. You need to configure the corresponding international SMS service in the GenAuth console. For a complete list of mobile area codes, please refer to https://en.wikipedia.org/wiki/List_of_country_calling_codes. | +86 |
| string | No | This parameter is required when initiating the binding of the email verification code authentication factor. The email address that the user wants to bind needs to be passed. The GenAuth server will send the email verification code to this email address and require the user to provide the verification code during the MFA binding phase. An email address can only be requested once within one minute. | test@example.com |
¶ SendEnrollFactorRequestDataDto
| Name | Type | Is it required? | Description | Sample value |
|---|---|---|---|---|
| enrollmentToken | string | Yes | Temporary credential enrollmentToken, valid for one minute. This parameter is required when "binding MFA authentication factors". | TQoCISidM0kBji0dxRi3afSDtkvvMiUphenIgLF87y+JOw4T8fDWOsHHXIcvZ2EVESXhTrfGyh1iGf52Cg9e9byeFQvm1VZ0QWrwmzwpntFAVtf1IP9LqVhmzXhBMFvLOcU/z1Eh/n0CrwX0uHNpJoMW9lp9AqHd9HvauaGKX+Y= |
| otpData | No | When initiating binding of OTP type authentication factor, the interface will return this data. Nested type: SendEnrollFactorRequestOtpDataDto. |
¶ SendEnrollFactorRequestOtpDataDto
| Name | Type | Is it required? | Description | Sample value |
|---|---|---|---|---|
| qrCodeUri | string | Yes | OTP Auth Uri | otpauth://totp/userPoolName:test?secret=xxxx&period=30&digits=6&algorithm=SHA1&issuer=userPoolName |
| qrCodeDataUrl | string | Yes | Base64-encoded OTP QR code, which can be used by the front end to render the QR code. | data:image/png;base64,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 |
| recoveryCode | string | yes | OTP Recovery Code | e7ad-aaa4-da75-fa37-57d1-5141 |
