- Development Integration
- /
- SDK
- /
- Java
- /
User authentication module
- /
MFA Factor Management
- /
- Initiate binding MFA Authentication factor 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.sendEnrollFactorRequest
¶ Request Parameters
| Name | Type | Is it required | Default Value | Description | Example Value |
|---|---|---|---|---|---|
| profile | FactorProfile | Yes | - | MFA authentication element details | {"phoneNumber":"188xxxx8888","phoneCountryCode":"+86"} |
| factorType | string | Yes | - | MFA authentication factorType: - OTP: OTP- SMS: SMS- EMAIL: Email- FACE: Face | SMS |
¶ Sample Code
package test.authentication;
import cn.authing.sdk.java.client.AuthenticationClient;
import cn.authing.sdk.java.dto.FactorProfile;
import cn.authing.sdk.java.dto.SendEnrollFactorRequestDto;
import cn.authing.sdk.java.dto.SendEnrollFactorRequestRespDto;
import cn.authing.sdk.java.model.AuthenticationClientOptions;
import cn.authing.sdk.java.util.JsonUtils;
public class SendEnrollFactorRequestTest {
// Need to be replaced with your GenAuth App ID
private static final String APP_ID = "AUTHING_APP_ID";
// Need to be replaced with your GenAuth App Secret
private static final String APP_SECRET = "AUTHING_APP_SECRET";
// Need to be replaced with your GenAuth App Host
private static final String APP_HOST = "AUTHING_APP_HOST";
// Need to be replaced with your GenAuth Access Token
private static final String ACCESS_TOKEN = "AUTHING_ACCESS_TOKEN";
public static void main(String[] args) throws Throwable {
AuthenticationClientOptions clientOptions = new AuthenticationClientOptions();
clientOptions.setAppId(APP_ID);
clientOptions.setAppSecret(APP_SECRET);
clientOptions.setAppHost(APP_HOST);
clientOptions.setAccessToken(ACCESS_TOKEN);
AuthenticationClient client = new AuthenticationClient(clientOptions);
SendEnrollFactorRequestDto reqDto = new SendEnrollFactorRequestDto();
reqDto.setFactorType(SendEnrollFactorRequestDto.FactorType.EMAIL);
FactorProfile profile = new FactorProfile();
profile.setEmail("123@qq.com");
reqDto.setProfile(profile);
SendEnrollFactorRequestRespDto response = client.sendEnrollFactorRequest(reqDto);
System.out.println(JsonUtils.serialize(response));
}
}
¶ Request Response
Type: SendEnrollFactorRequestRespDto
| Name | Type | Description |
|---|---|---|
| statusCode | number | Business status code. You can use this status code to determine whether the operation is successful. 200 means success. |
| message | string | Description |
| apiCode | number | Segment error code, through which you can get the specific error type (successful request does not return). For a detailed list of error codes, see: API Code List (opens new window) |
| requestId | string | Request ID. Returned when the request fails. |
| data | SendEnrollFactorRequestDataDto | Response Data |
Example Results:
{
"statusCode": 200,
"message": "Operation successful",
"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 | Example Value |
|---|---|---|---|---|
| phoneNumber | string | no | This parameter is required when initiating the binding of the SMS authentication factor. You need to pass the phone number that the user wants to bind. The GenAuth server will send a SMS verification code to this phone number and require the user to provide the verification code during the MFA binding phase. A 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 SMS authentication factor and an international phone number needs to be bound. The default value is +86, the mobile area code of mainland China. The GenAuth SMS service does not currently support international mobile 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. You need to pass the email address that the user wants to bind. The GenAuth server will send an email verification code to this email address, requiring the user to provide the verification code during the MFA binding phase. An email address can only request once within one minute. | test@example.com |
¶ SendEnrollFactorRequestDataDto
| Name | Type | Is it required | Description | Example 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 | Example 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,iVBORw0KGgoAAAANSUhEUgAAAOQAAADkCAYAAACIV4iNAAAAAklEQVR4AewaftIAAAxSSURBVO3BQW4ERxLAQLKh/3+Z62OeCmjMSC4vMsL+wVrrCg9rrWs8rLWu8bDWusbDWusaD2utazysta7xsNa6xsNa6xoPa61rPKy1rvGw1rrGw1rrGg9rrWs8rLWu8bDWusYPH1L5SxWTyknFJ1SmihOVqeINlU9UnKhMFZPKJyo+oTJVnKhMFZPKX6r4xMNa6xoPa61rPKy1rvHDl1V8k8obFZPKVPEJlW9SeaNiUplUpoqpYlKZKk5Upoo3VKaKE5VvqvgmlW96WGtd42GtdY2HtdY1fvhlKm9UvFExqZyoTBVvVJyonKicVEwqk8pJxSdU3lA5qZgqJpWTiknlm1TeqPhND2utazysta7xsNa6xg//cSqfUDmpOFGZKiaVqeKNihOVE5WpYqo4UTmpOFGZKqaKSeWNiv8nD2utazysta7xsNa6xg//cRUnKicVk8qkMlVMFW+oTBUnKm+onKicVEwVk8o3qbxR8f/sYa11jYe11jUe1lrX+OGXVfwllW+qmFROKt5QeaPiDZWpYlI5UTlROal4o2JSmSq+qeImD2utazysta7xsNa6xg9fpvKXVKaKSWWqmFSmikllqphU3qiYVKaKSeVEZar4TRWTylQxqUwV36QyVZyo3OxhrXWNh7XWNR7WWtf44UMVN1GZKt5Q+YTKicpU8YmKT1ScVEwqb1RMKlPFpDJVTCpvVPyXPKy1rvGw1rrGw1rrGj98SGWqmFROKiaVNyomlROVqeITFd+kcqLyTSpvVJyoTBXfVPGGylRxojJVTConFZ94WGtd42GtdY2HtdY1fvhQxaQyVUwqJxVvqPwllaniEyonFb+pYlJ5Q2WqmFR+k8pJxaQyVdzkYa11jYe11jUe1lrXsH/wAZWpYlL5SxWTyknFpDJVnKhMFScqU8WJylTxhspJxaQyVUwqn6h4Q2WqmFT+UsWkMlV84mGtdY2HtdY1HtZa17B/8ItUporfpDJVTConFZPKScWk8omKSWWqOFF5o+I3qXyi4g2VqeJEZar4Nz2sta7xsNa6xsNa6xo/XE7ljYqTikllUjmpmFSmikllqjhRmSomlZOKSeVE5aTiJipTxVQxqZxUTCpTxaRyUvGJh7XWNR7WWtd4WGtd44cvU5kqJpU3KiaVE5WTipOKSeU3qUwVk8obKlPFicpfqnhDZaqYVKaKqWJSOamYVKaKSeWbHtZa13hYa13jYa11jR/+WMWkMlVMKlPFpHJSMalMFZPKJ1SmikllqnijYlKZKiaVk4pJZVKZKiaVv6TyhsqJyknFpDJVfNPDWusaD2utazysta5h/+CLVE4qJpWTiknlpOJE5aRiUjmp+E0qJxVvqEwVb6hMFZPKGxVvqJxUvKHyiYpvelhrXeNhrXWNh7XWNX74sopvUpkqTlSmiqliUplUpopPqLxRcVIxqZxUvKEyVfwmlaliUpkqJpUTlU9UnKhMFZ94WGtd42GtdY2HtdY1fviQylQxqUwVb1ScqPwllZOKT6icqJxUnFScVJxUfKLijYqTijcqJpUTlaniNz2sta7xsNa6xsNa6xo//MsqJpVJZao4qXij4ptUPlHxTSpTxaQyVUwqU8UbFScqU8Wk8kbFicobFX/pYa11jYe11jUe1lrX+OFDFZPKJypOVD6hclLxRsWJylTxCZWTiqniN6m8oTJVTCpvVEwqb1RMKv+mh7XWNR7WWtd4WGtd44cPqbyhclIxqUwVb6icVEwqJxWfUDmpmFR+U8WkMlVMKlPFpDKpfKLimypu9rDWusbDWusaD2uta9g/+EUqU8WkclIxqUwVb6icVEwqb1R8QuWkYlI5qThR+aaKE5WpYlKZKiaVqeJE5aTiDZWp4pse1lrXeFhrXeNhrXWNH75MZar4hMqJyhsVk8obFScqJxWTylQxqUwqb6hMFScVk8pUMal8QmWqeEPlEypTxaTylx7WWtd4WGtd42GtdY0fvqziROWk4g2Vk4qTipOKSeWNikllqnij4g2VT1RMKicqn1CZKt6oeENlUpkqJpXf9LDWusbDWusaD2uta/zwIZU3KiaVE5Wp4g2VqeKbKk5UpopvUpkqTlSmikllqpgq3lCZKiaVqeKkYlI5UZkqPlExqUwVn3hYa13jYa11jYe11jV++FDFpDJVTCpvVLxRcaJyUvGGylQxVZyoTBVvVLxRMalMFZPKScVJxRsqU8Wk8kbFGxX/poe11jUe1lrXeFhrXeOHD6l8k8o3qZxUnKhMFZPKpDJVfJPKb1KZKt5QmSomlaliUvmEyidUpopJ5Tc9rLWu8bDWusbDWusaP3yoYlKZVE4q3lCZKiaVqWJSOVGZKk4q3lB5o+INlROVqeI3qUwVJxVvVLyhMlVMKv+mh7XWNR7WWtd4WGtd44dfVjGpnKicVEwqU8Wk8k0qU8WkMlVMFZPKGypTxVTxhspUMal8omJSmSomlaliqjhRmSreqJhUTiq+6WGtdY2HtdY1HtZa1/jhyyomlaliUjmp+C9TmSqmikllqpgqJpU3KqaKSWWqeEPlpOITKp+o+ETFpDJVfOJhrXWNh7XWNR7WWtf44UMqU8VU8QmVqeKbVP6SylTxhspUMalMFScqv0llqphUpopJZaqYVKaKE5WTiqliUvlND2utazysta7xsNa6xg8fqjhRmSreqPimiknljYo3Kk5U3qg4qfhNKr9JZao4qZhUpoqp4kTl3/Sw1rrGw1rrGg9rrWvYP/gilaliUjmpmFQ+UTGpfFPFpDJVTCpTxYnKScWkclLxhspU8QmVqeINlaniROWk4g2Vk4pPPKy1rvGw1rrGw1rrGj/8yyomlaliUvlNFScqJxXfVPFGxSdUTlSmiknlDZWp4t+kMlVMFb/pYa11jYe11jUe1lrX+OGXqUwVb6hMFW+onFS8UTGpnFS8ofKJikllqphU3qiYVN6omFS+SWWqmFROKk5UTio+8bDWusbDWusaD2uta/zwyyomlZOKN1Q+oTJVTConFZPKJyomlaliUvmmiknlExWTyhsqn1B5Q+Xf9LDWusbDWusaD2uta/zwIZWpYlKZKk5UTiq+qWJSOamYVE5UpooTlaniN1V8ouJEZaqYVCaVv6TyRsVvelhrXeNhrXWNh7XWNX74MpWp4kRlqjhRmSpOVD5RMalMFScqJyqfqJhUTlROKqaKSeVmFW+oTBWTyl96WGtd42GtdY2HtdY1fvhQxaTyRsWkclIxqUwVU8UnVN5QmSpOKiaVSWWqmFSmikllqphUTlROKiaVT1RMKlPFpDJVTCpTxVTxhspU8U0Pa61rPKy1rvGw1rrGD79M5aRiqnij4kRlqphUpooTlUllqnhD5b9MZao4UTlRmSpOKiaVE5Wp4qRiUplUpopPPKy1rvGw1rrGw1rrGj98SOWNijdUpopvqjhROamYVKaKk4oTlUnlROWNiknlpGJSOVGZKk5U3lD5hMpJxUnFNz2sta7xsNa6xsNa6xr2D/7DVKaKE5Wp4i+pnFRMKlPFGypTxaQyVZyofKJiUpkq3lCZKt5QmSreUJkqPvGw1rrGw1rrGg9rrWv88CGVv1RxojJVnKicVJyofKLiEypTxYnKGyonFW+o/CWVqeINlaliqvimh7XWNR7WWtd4WGtd44cvq/gmlTcqJpWp4kRlUpkqvkllqnij4o2KE5WTijdUpopJ5URlqnij4r/kYa11jYe11jUe1lrX+OGXqbxR8UbFpPKJihOVk4o3VCaVE5WbqLyhMlW8oXKi8gmVN1Smik88rLWu8bDWusbDWusaP/zHqUwVv6liUplU3qg4UZkqvkllqvhNFZPKScWJylQxqfyXPKy1rvGw1rrGw1rrGj/8n1GZKk5UTiomlaniDZXfpDJVnFR8omJSeaPiRGWqmCpOKiaVNyomlanimx7WWtd4WGtd42GtdY0fflnFb6qYVN6omFQmld+k8obKVDFVTConFZPKVDGpTBVTxaRyojJVTBVvqJxUvKEyVfymh7XWNR7WWtd4WGtd44cvU/lLKlPFpHJSMVW8oTJVfFPFicpJxYnKVDGpTBUnKlPFpDJVTConFZPKVPEJlaliUjmp+MTDWusaD2utazysta5h/2CtdYWHtdY1HtZa13hYa13jYa11jYe11jUe1lrXeFhrXeNhrXWNh7XWNR7WWtd4WGtd42GtdY2HtdY1HtZa13hYa13jf5JXo0uhVRYoAAAAAElFTkSuQmCC |
| recoveryCode | string | Yes | OTP Recovery Code | e7ad-aaa4-da75-fa37-57d1-5141 |
