Add Second Factor (2FA)​
Add a new second factor (2FA) to the login settings of the instance. Users will have the possibility to authenticate with the configured factor afterward. It affects all organizations, without custom login settings. Authentication factors are used as an additional factor to add more security to your users (e.g. Authentication App, FingerPrint, Windows Hello, etc). Per definition, it is called a second factor as it is used as an additional authentication after a password. In the UI we generalize this as multi-factor.
Request Body required
Possible values: [SECOND_FACTOR_TYPE_UNSPECIFIED
, SECOND_FACTOR_TYPE_OTP
, SECOND_FACTOR_TYPE_U2F
, SECOND_FACTOR_TYPE_OTP_EMAIL
, SECOND_FACTOR_TYPE_OTP_SMS
]
Default value: SECOND_FACTOR_TYPE_UNSPECIFIED
Request Body required
Possible values: [SECOND_FACTOR_TYPE_UNSPECIFIED
, SECOND_FACTOR_TYPE_OTP
, SECOND_FACTOR_TYPE_U2F
, SECOND_FACTOR_TYPE_OTP_EMAIL
, SECOND_FACTOR_TYPE_OTP_SMS
]
Default value: SECOND_FACTOR_TYPE_UNSPECIFIED
Request Body required
Possible values: [SECOND_FACTOR_TYPE_UNSPECIFIED
, SECOND_FACTOR_TYPE_OTP
, SECOND_FACTOR_TYPE_U2F
, SECOND_FACTOR_TYPE_OTP_EMAIL
, SECOND_FACTOR_TYPE_OTP_SMS
]
Default value: SECOND_FACTOR_TYPE_UNSPECIFIED
- 200
- 400
- 403
- 404
- default
second factor added to default login policy
Schema
details object
{
"details": {
"sequence": "2",
"creationDate": "2024-06-13T06:44:39.043Z",
"changeDate": "2024-06-13T06:44:39.043Z",
"resourceOwner": "69629023906488334"
}
}
Schema
details object
{
"details": {
"sequence": "2",
"creationDate": "2024-06-13T06:44:39.043Z",
"changeDate": "2024-06-13T06:44:39.043Z",
"resourceOwner": "69629023906488334"
}
}
Schema
details object
{
"details": {
"sequence": "2",
"creationDate": "2024-06-13T06:44:39.043Z",
"changeDate": "2024-06-13T06:44:39.043Z",
"resourceOwner": "69629023906488334"
}
}
invalid second-factor type
Schema
details object[]
{
"code": 0,
"message": "string",
"details": [
{
"@type": "string"
}
]
}
Schema
details object[]
{
"code": 0,
"message": "string",
"details": [
{
"@type": "string"
}
]
}
Schema
details object[]
{
"code": 0,
"message": "string",
"details": [
{
"@type": "string"
}
]
}
Returned when the user does not have permission to access the resource.
Schema
details object[]
{
"code": 0,
"message": "string",
"details": [
{
"@type": "string"
}
]
}
Schema
details object[]
{
"code": 0,
"message": "string",
"details": [
{
"@type": "string"
}
]
}
Schema
details object[]
{
"code": 0,
"message": "string",
"details": [
{
"@type": "string"
}
]
}
Returned when the resource does not exist.
Schema
details object[]
{
"code": 0,
"message": "string",
"details": [
{
"@type": "string"
}
]
}
Schema
details object[]
{
"code": 0,
"message": "string",
"details": [
{
"@type": "string"
}
]
}
Schema
details object[]
{
"code": 0,
"message": "string",
"details": [
{
"@type": "string"
}
]
}
An unexpected error response.
Schema
details object[]
{
"code": 0,
"message": "string",
"details": [
{
"@type": "string"
}
]
}
Schema
details object[]
{
"code": 0,
"message": "string",
"details": [
{
"@type": "string"
}
]
}
Schema
details object[]
{
"code": 0,
"message": "string",
"details": [
{
"@type": "string"
}
]
}
POST /policies/login/second_factors
Authorization
name: OAuth2type: oauth2scopes:openid,urn:zitadel:iam:org:project:id:zitadel:aud
flows: { "authorizationCode": { "authorizationUrl": "$CUSTOM-DOMAIN/oauth/v2/authorize", "tokenUrl": "$CUSTOM-DOMAIN/oauth/v2/token", "scopes": { "openid": "openid", "urn:zitadel:iam:org:project:id:zitadel:aud": "urn:zitadel:iam:org:project:id:zitadel:aud" } } }
Request
Request
curl -L -X POST 'https://$CUSTOM-DOMAIN/admin/v1/policies/login/second_factors' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
--data-raw '{
"type": "SECOND_FACTOR_TYPE_UNSPECIFIED"
}'
curl -L -X POST 'https://$CUSTOM-DOMAIN/admin/v1/policies/login/second_factors' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
--data-raw '{
"type": "SECOND_FACTOR_TYPE_UNSPECIFIED"
}'
curl -L -X POST 'https://$CUSTOM-DOMAIN/admin/v1/policies/login/second_factors' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
--data-raw '{
"type": "SECOND_FACTOR_TYPE_UNSPECIFIED"
}'
curl -L -X POST 'https://$CUSTOM-DOMAIN/admin/v1/policies/login/second_factors' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
--data-raw '{
"type": "SECOND_FACTOR_TYPE_UNSPECIFIED"
}'
curl -L -X POST 'https://$CUSTOM-DOMAIN/admin/v1/policies/login/second_factors' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
--data-raw '{
"type": "SECOND_FACTOR_TYPE_UNSPECIFIED"
}'
curl -L -X POST 'https://$CUSTOM-DOMAIN/admin/v1/policies/login/second_factors' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
--data-raw '{
"type": "SECOND_FACTOR_TYPE_UNSPECIFIED"
}'
curl -L -X POST 'https://$CUSTOM-DOMAIN/admin/v1/policies/login/second_factors' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
--data-raw '{
"type": "SECOND_FACTOR_TYPE_UNSPECIFIED"
}'
curl -L -X POST 'https://$CUSTOM-DOMAIN/admin/v1/policies/login/second_factors' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
--data-raw '{
"type": "SECOND_FACTOR_TYPE_UNSPECIFIED"
}'
curl -L -X POST 'https://$CUSTOM-DOMAIN/admin/v1/policies/login/second_factors' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer <TOKEN>' \
--data-raw '{
"type": "SECOND_FACTOR_TYPE_UNSPECIFIED"
}'