Create One Identity Provider
Creates one identity provider within the specified federation. To use this resource, the requesting Service Account or API Key must have the Organization Owner role in one of the connected organizations.
Note: This resource only supports the creation of OIDC identity providers.
Path parameters
-
Unique 24-hexadecimal digit string that identifies your federation.
Format should match the following pattern:
^([a-f0-9]{24})$
.
Query parameters
-
Flag that indicates whether Application wraps the response in an
envelope
JSON object. Some API clients cannot access the HTTP response headers or status code. To remediate this, set envelope=true in the query. Endpoints that return a list of results use the results object as an envelope. Application adds the status parameter to the response body.Default value is
false
.
Body
object
Required
The identity provider that you want to create.
-
Identifier of the intended recipient of the token.
-
The description of the identity provider.
-
Human-readable label that identifies the identity provider.
Minimum length is
1
, maximum length is50
. -
Identifier of the claim which contains IdP Group IDs in the token.
-
String enum that indicates the type of the identity provider. Default is WORKFORCE.
Values are
WORKFORCE
orWORKLOAD
. -
Unique string that identifies the issuer of the SAML Assertion or OIDC metadata/discovery document URL.
-
String enum that indicates the protocol of the identity provider. Either SAML or OIDC.
Values are
SAML
orOIDC
. -
Identifier of the claim which contains the user ID in the token.
-
List that contains the domains associated with the identity provider.
-
Client identifier that is assigned to an application by the Identity Provider.
-
Scopes that MongoDB applications will request from the authorization endpoint.
atlas api createIdentityProvider --help
import (
"os"
"context"
"log"
sdk "go.mongodb.org/atlas-sdk/v20250312001/admin"
)
func main() {
ctx := context.Background()
clientID := os.Getenv("MONGODB_ATLAS_CLIENT_ID")
clientSecret := os.Getenv("MONGODB_ATLAS_CLIENT_SECRET")
client, err := sdk.NewClient(
sdk.UseOAuthAuth(clientID, clientSecret),
sdk.UseBaseURL(url))
if err != nil {
log.Fatalf("Error: %v", err)
}
params = &sdk.CreateIdentityProviderApiParams{}
sdkResp, httpResp, err := client.FederatedAuthenticationApi.
CreateIdentityProviderWithParams(ctx, params).
Execute()
}
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
--header "Accept: application/vnd.atlas.2025-03-12+json" \
--header "Content-Type: application/json" \
-X POST "https://cloud.mongodb.com/api/atlas/v2/federationSettings/{federationSettingsId}/identityProviders" \
-d '{ <Payload> }'
curl --user "${PUBLIC_KEY}:${PRIVATE_KEY}" \
--digest \
--header "Accept: application/vnd.atlas.2025-03-12+json" \
--header "Content-Type: application/json" \
-X POST "https://cloud.mongodb.com/api/atlas/v2/federationSettings/{federationSettingsId}/identityProviders" \
-d '{ <Payload> }'
{
"audience": "string",
"authorizationType": "GROUP",
"description": "string",
"displayName": "string",
"groupsClaim": "string",
"idpType": "WORKFORCE",
"issuerUri": "urn:idp:default",
"protocol": "SAML",
"userClaim": "string",
"associatedDomains": [
"string"
],
"clientId": "string",
"requestedScopes": [
"string"
]
}
{
"audience": "string",
"authorizationType": "GROUP",
"description": "string",
"displayName": "string",
"groupsClaim": "string",
"idpType": "WORKFORCE",
"issuerUri": "urn:idp:default",
"protocol": "SAML",
"userClaim": "string"
}
{
"associatedOrgs": [
{
"dataAccessIdentityProviderIds": [
"string"
],
"domainAllowList": [
"string"
],
"domainRestrictionEnabled": true,
"identityProviderId": "string",
"orgId": "32b6e34b3d91647abb20e7b8",
"postAuthRoleGrants": [
"ORG_OWNER"
],
"roleMappings": [
{
"externalGroupName": "string",
"id": "32b6e34b3d91647abb20e7b8",
"roleAssignments": [
{
"groupId": "32b6e34b3d91647abb20e7b8",
"orgId": "32b6e34b3d91647abb20e7b8",
"role": "ORG_OWNER"
}
]
}
],
"userConflicts": [
{
"emailAddress": "hello@example.com",
"federationSettingsId": "32b6e34b3d91647abb20e7b8",
"firstName": "string",
"lastName": "string",
"userId": "32b6e34b3d91647abb20e7b8"
}
]
}
],
"audience": "string",
"authorizationType": "GROUP",
"createdAt": "2025-05-04T09:42:00Z",
"description": "string",
"displayName": "string",
"groupsClaim": "string",
"id": "32b6e34b3d91647abb20e7b8",
"idpType": "WORKFORCE",
"issuerUri": "string",
"oktaIdpId": "string",
"protocol": "SAML",
"updatedAt": "2025-05-04T09:42:00Z",
"userClaim": "string",
"associatedDomains": [
"string"
],
"clientId": "string",
"requestedScopes": [
"string"
]
}
{
"associatedOrgs": [
{
"dataAccessIdentityProviderIds": [
"string"
],
"domainAllowList": [
"string"
],
"domainRestrictionEnabled": true,
"identityProviderId": "string",
"orgId": "32b6e34b3d91647abb20e7b8",
"postAuthRoleGrants": [
"ORG_OWNER"
],
"roleMappings": [
{
"externalGroupName": "string",
"id": "32b6e34b3d91647abb20e7b8",
"roleAssignments": [
{
"groupId": "32b6e34b3d91647abb20e7b8",
"orgId": "32b6e34b3d91647abb20e7b8",
"role": "ORG_OWNER"
}
]
}
],
"userConflicts": [
{
"emailAddress": "hello@example.com",
"federationSettingsId": "32b6e34b3d91647abb20e7b8",
"firstName": "string",
"lastName": "string",
"userId": "32b6e34b3d91647abb20e7b8"
}
]
}
],
"audience": "string",
"authorizationType": "GROUP",
"createdAt": "2025-05-04T09:42:00Z",
"description": "string",
"displayName": "string",
"groupsClaim": "string",
"id": "32b6e34b3d91647abb20e7b8",
"idpType": "WORKFORCE",
"issuerUri": "string",
"oktaIdpId": "string",
"protocol": "SAML",
"updatedAt": "2025-05-04T09:42:00Z",
"userClaim": "string"
}
{
"error": 400,
"detail": "(This is just an example, the exception may not be related to this endpoint) No provider AWS exists.",
"reason": "Bad Request",
"errorCode": "VALIDATION_ERROR"
}
{
"error": 401,
"detail": "(This is just an example, the exception may not be related to this endpoint)",
"reason": "Unauthorized",
"errorCode": "NOT_ORG_GROUP_CREATOR"
}
{
"error": 403,
"detail": "(This is just an example, the exception may not be related to this endpoint)",
"reason": "Forbidden",
"errorCode": "CANNOT_CHANGE_GROUP_NAME"
}
{
"error": 404,
"detail": "(This is just an example, the exception may not be related to this endpoint) Cannot find resource AWS",
"reason": "Not Found",
"errorCode": "RESOURCE_NOT_FOUND"
}
{
"error": 500,
"detail": "(This is just an example, the exception may not be related to this endpoint)",
"reason": "Internal Server Error",
"errorCode": "UNEXPECTED_ERROR"
}