Namespace: microsoft.graph
Important
APIs under the /beta
version in Microsoft Graph are subject to change. Use of these APIs in production applications is not supported. To determine whether an API is available in v1.0, use the Version selector.
Caution
This identity provider API is deprecated and will stop returning data after March, 2023. Please use the new identity provider API.
Create a new identityProvider object.
This API is available in the following national cloud deployments.
Global service |
US Government L4 |
US Government L5 (DOD) |
China operated by 21Vianet |
✅ |
✅ |
✅ |
✅ |
Permissions
Choose the permission or permissions marked as least privileged for this API. Use a higher privileged permission or permissions only if your app requires it. For details about delegated and application permissions, see Permission types. To learn more about these permissions, see the permissions reference.
Permission type |
Least privileged permissions |
Higher privileged permissions |
Delegated (work or school account) |
IdentityProvider.ReadWrite.All |
Not available. |
Delegated (personal Microsoft account) |
Not supported. |
Not supported. |
Application |
IdentityProvider.ReadWrite.All |
Not available. |
Important
In delegated scenarios with work or school accounts, the signed-in user must be assigned a supported Microsoft Entra role or a custom role with a supported role permission. External Identity Provider Administrator is the least privileged role supported for this operation.
HTTP request
POST /identityProviders
Request body
In the request body, provide a JSON representation of identityProvider or openIdConnectProvider (only for Azure AD B2C) object. All the properties listed in the following table are required.
identityProvider object
Property |
Type |
Description |
clientId |
String |
The client ID for the application. This is the client ID obtained when registering the application with the identity provider. |
clientSecret |
String |
The client secret for the application. This is the client secret obtained when registering the application with the identity provider. |
name |
String |
The display name of the identity provider. |
type |
String |
The identity provider type. For B2B scenario:- Google
- Facebook
For B2C scenario:- Microsoft
- Google
- Amazon
- LinkedIn
- Facebook
- GitHub
- Twitter
- Weibo
- QQ
- WeChat
- OpenIDConnect
|
openIdConnectProvider object
Property |
Type |
Description |
clientId |
String |
The client ID for the application. This is the client ID obtained when registering the application with the identity provider. |
clientSecret |
String |
The client secret for the application. This is the client secret obtained when registering the application with the identity provider. |
name |
String |
The display name of the identity provider. |
type |
String |
The identity provider type. The value must be OpenIdConnect . |
claimsMapping |
claimsMapping |
The userId and displayname properties are required in the claimsMapping object. |
metadataUrl |
String |
The URL for the metadata document of the OpenID Connect identity provider. |
responseMode |
String |
Defines the method that should be used to send the data back from the custom identity provider to Azure AD B2C. The following response modes can be used: form_post : This response mode is recommended for best security. The response is transmitted via the HTTP POST method, with the code or token being encoded in the body using the application/x-www-form-urlencoded format.query : The code or token is returned as a query parameter.
|
responseType |
String |
Describes what kind of information is sent back in the initial call to the authorization_endpoint of the custom identity provider. The following response types can be used:-
code : As per the authorization code flow, a code will be returned back to Azure AD B2C. Azure AD B2C proceeds to call the token_endpoint to exchange the code for the token. -
id_token : An ID token is returned back to Azure AD B2C from the custom identity provider. token : An access token is returned back to Azure AD B2C from the custom identity provider. (This value is not supported by Azure AD B2C at the moment)
|
scope |
String |
Scope defines the information and permissions you are looking to gather from your custom identity provider. |
Response
If successful, this method returns a 201 Created
response code and identityProvider or openIdConnectProvider (only for Azure AD B2C) object in the response body. If unsuccessful, a 4xx
error will be returned with specific details.
Examples
Example 1: Create a specific identityProvider
Request
The following example shows a request.
POST https://graph.microsoft.com/beta/identityProviders
Content-type: application/json
{
"@odata.type": "microsoft.graph.identityProvider",
"name": "Login with Amazon",
"type": "Amazon",
"clientId": "56433757-cadd-4135-8431-2c9e3fd68ae8",
"clientSecret": "000000000000"
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Beta.Models;
var requestBody = new IdentityProvider
{
OdataType = "microsoft.graph.identityProvider",
Name = "Login with Amazon",
Type = "Amazon",
ClientId = "56433757-cadd-4135-8431-2c9e3fd68ae8",
ClientSecret = "000000000000",
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.IdentityProviders.PostAsync(requestBody);
mgc-beta identity-providers create --body '{\
"@odata.type": "microsoft.graph.identityProvider",\
"name": "Login with Amazon",\
"type": "Amazon",\
"clientId": "56433757-cadd-4135-8431-2c9e3fd68ae8",\
"clientSecret": "000000000000"\
}\
'
// Code snippets are only available for the latest major version. Current major version is $v0.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-beta-sdk-go"
graphmodels "github.com/microsoftgraph/msgraph-beta-sdk-go/models"
//other-imports
)
requestBody := graphmodels.NewIdentityProvider()
name := "Login with Amazon"
requestBody.SetName(&name)
type := "Amazon"
requestBody.SetType(&type)
clientId := "56433757-cadd-4135-8431-2c9e3fd68ae8"
requestBody.SetClientId(&clientId)
clientSecret := "000000000000"
requestBody.SetClientSecret(&clientSecret)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
identityProviders, err := graphClient.IdentityProviders().Post(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
IdentityProvider identityProvider = new IdentityProvider();
identityProvider.setOdataType("microsoft.graph.identityProvider");
identityProvider.setName("Login with Amazon");
identityProvider.setType("Amazon");
identityProvider.setClientId("56433757-cadd-4135-8431-2c9e3fd68ae8");
identityProvider.setClientSecret("000000000000");
IdentityProvider result = graphClient.identityProviders().post(identityProvider);
const options = {
authProvider,
};
const client = Client.init(options);
const identityProvider = {
'@odata.type': 'microsoft.graph.identityProvider',
name: 'Login with Amazon',
type: 'Amazon',
clientId: '56433757-cadd-4135-8431-2c9e3fd68ae8',
clientSecret: '000000000000'
};
await client.api('/identityProviders')
.version('beta')
.post(identityProvider);
<?php
use Microsoft\Graph\Beta\GraphServiceClient;
use Microsoft\Graph\Beta\Generated\Models\IdentityProvider;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new IdentityProvider();
$requestBody->setOdataType('microsoft.graph.identityProvider');
$requestBody->setName('Login with Amazon');
$requestBody->setType('Amazon');
$requestBody->setClientId('56433757-cadd-4135-8431-2c9e3fd68ae8');
$requestBody->setClientSecret('000000000000');
$result = $graphServiceClient->identityProviders()->post($requestBody)->wait();
Import-Module Microsoft.Graph.Beta.Identity.SignIns
$params = @{
"@odata.type" = "microsoft.graph.identityProvider"
name = "Login with Amazon"
type = "Amazon"
clientId = "56433757-cadd-4135-8431-2c9e3fd68ae8"
clientSecret = "000000000000"
}
New-MgBetaIdentityProvider -BodyParameter $params
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph_beta import GraphServiceClient
from msgraph_beta.generated.models.identity_provider import IdentityProvider
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = IdentityProvider(
odata_type = "microsoft.graph.identityProvider",
name = "Login with Amazon",
type = "Amazon",
client_id = "56433757-cadd-4135-8431-2c9e3fd68ae8",
client_secret = "000000000000",
)
result = await graph_client.identity_providers.post(request_body)
Response
The following example shows the response.
Note: The response object shown here might be shortened for readability.
HTTP/1.1 201 Created
Content-type: application/json
{
"@odata.type": "microsoft.graph.identityProvider",
"id": "Amazon-OAUTH",
"name": "Login with Amazon",
"type": "Amazon",
"clientId": "56433757-cadd-4135-8431-2c9e3fd68ae8",
"clientSecret": "*****"
}
Example 2: Create a specific openIDConnectProvider (only for Azure AD B2C)
Request
The following example shows a request.
POST https://graph.microsoft.com/beta/identityProviders
Content-type: application/json
{
"@odata.type": "microsoft.graph.openIdConnectProvider",
"name": "Login with the Contoso identity provider",
"type": "OpenIDConnect",
"clientId": "56433757-cadd-4135-8431-2c9e3fd68ae8",
"clientSecret": "12345",
"claimsMapping": {
"userId": "myUserId",
"givenName": "myGivenName",
"surname": "mySurname",
"email": "myEmail",
"displayName": "myDisplayName"
},
"domainHint": "mycustomoidc",
"metadataUrl": "https://mycustomoidc.com/.well-known/openid-configuration",
"responseMode": "form_post",
"responseType": "code",
"scope": "openid"
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Beta.Models;
var requestBody = new OpenIdConnectProvider
{
OdataType = "microsoft.graph.openIdConnectProvider",
Name = "Login with the Contoso identity provider",
Type = "OpenIDConnect",
ClientId = "56433757-cadd-4135-8431-2c9e3fd68ae8",
ClientSecret = "12345",
ClaimsMapping = new ClaimsMapping
{
UserId = "myUserId",
GivenName = "myGivenName",
Surname = "mySurname",
Email = "myEmail",
DisplayName = "myDisplayName",
},
DomainHint = "mycustomoidc",
MetadataUrl = "https://mycustomoidc.com/.well-known/openid-configuration",
ResponseMode = OpenIdConnectResponseMode.Form_post,
ResponseType = OpenIdConnectResponseTypes.Code,
Scope = "openid",
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.IdentityProviders.PostAsync(requestBody);
mgc-beta identity-providers create --body '{\
"@odata.type": "microsoft.graph.openIdConnectProvider",\
"name": "Login with the Contoso identity provider",\
"type": "OpenIDConnect",\
"clientId": "56433757-cadd-4135-8431-2c9e3fd68ae8",\
"clientSecret": "12345",\
"claimsMapping": {\
"userId": "myUserId",\
"givenName": "myGivenName",\
"surname": "mySurname",\
"email": "myEmail",\
"displayName": "myDisplayName"\
},\
"domainHint": "mycustomoidc",\
"metadataUrl": "https://mycustomoidc.com/.well-known/openid-configuration",\
"responseMode": "form_post",\
"responseType": "code",\
"scope": "openid"\
}\
\
'
// Code snippets are only available for the latest major version. Current major version is $v0.*
// Dependencies
import (
"context"
msgraphsdk "github.com/microsoftgraph/msgraph-beta-sdk-go"
graphmodels "github.com/microsoftgraph/msgraph-beta-sdk-go/models"
//other-imports
)
requestBody := graphmodels.NewIdentityProvider()
name := "Login with the Contoso identity provider"
requestBody.SetName(&name)
type := "OpenIDConnect"
requestBody.SetType(&type)
clientId := "56433757-cadd-4135-8431-2c9e3fd68ae8"
requestBody.SetClientId(&clientId)
clientSecret := "12345"
requestBody.SetClientSecret(&clientSecret)
claimsMapping := graphmodels.NewClaimsMapping()
userId := "myUserId"
claimsMapping.SetUserId(&userId)
givenName := "myGivenName"
claimsMapping.SetGivenName(&givenName)
surname := "mySurname"
claimsMapping.SetSurname(&surname)
email := "myEmail"
claimsMapping.SetEmail(&email)
displayName := "myDisplayName"
claimsMapping.SetDisplayName(&displayName)
requestBody.SetClaimsMapping(claimsMapping)
domainHint := "mycustomoidc"
requestBody.SetDomainHint(&domainHint)
metadataUrl := "https://mycustomoidc.com/.well-known/openid-configuration"
requestBody.SetMetadataUrl(&metadataUrl)
responseMode := graphmodels.FORM_POST_OPENIDCONNECTRESPONSEMODE
requestBody.SetResponseMode(&responseMode)
responseType := graphmodels.CODE_OPENIDCONNECTRESPONSETYPES
requestBody.SetResponseType(&responseType)
scope := "openid"
requestBody.SetScope(&scope)
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=go
identityProviders, err := graphClient.IdentityProviders().Post(context.Background(), requestBody, nil)
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
OpenIdConnectProvider identityProvider = new OpenIdConnectProvider();
identityProvider.setOdataType("microsoft.graph.openIdConnectProvider");
identityProvider.setName("Login with the Contoso identity provider");
identityProvider.setType("OpenIDConnect");
identityProvider.setClientId("56433757-cadd-4135-8431-2c9e3fd68ae8");
identityProvider.setClientSecret("12345");
ClaimsMapping claimsMapping = new ClaimsMapping();
claimsMapping.setUserId("myUserId");
claimsMapping.setGivenName("myGivenName");
claimsMapping.setSurname("mySurname");
claimsMapping.setEmail("myEmail");
claimsMapping.setDisplayName("myDisplayName");
identityProvider.setClaimsMapping(claimsMapping);
identityProvider.setDomainHint("mycustomoidc");
identityProvider.setMetadataUrl("https://mycustomoidc.com/.well-known/openid-configuration");
identityProvider.setResponseMode(OpenIdConnectResponseMode.Form_post);
identityProvider.setResponseType(EnumSet.of(OpenIdConnectResponseTypes.Code));
identityProvider.setScope("openid");
IdentityProvider result = graphClient.identityProviders().post(identityProvider);
const options = {
authProvider,
};
const client = Client.init(options);
const identityProvider = {
'@odata.type': 'microsoft.graph.openIdConnectProvider',
name: 'Login with the Contoso identity provider',
type: 'OpenIDConnect',
clientId: '56433757-cadd-4135-8431-2c9e3fd68ae8',
clientSecret: '12345',
claimsMapping: {
userId: 'myUserId',
givenName: 'myGivenName',
surname: 'mySurname',
email: 'myEmail',
displayName: 'myDisplayName'
},
domainHint: 'mycustomoidc',
metadataUrl: 'https://mycustomoidc.com/.well-known/openid-configuration',
responseMode: 'form_post',
responseType: 'code',
scope: 'openid'
};
await client.api('/identityProviders')
.version('beta')
.post(identityProvider);
<?php
use Microsoft\Graph\Beta\GraphServiceClient;
use Microsoft\Graph\Beta\Generated\Models\OpenIdConnectProvider;
use Microsoft\Graph\Beta\Generated\Models\ClaimsMapping;
use Microsoft\Graph\Beta\Generated\Models\OpenIdConnectResponseMode;
use Microsoft\Graph\Beta\Generated\Models\OpenIdConnectResponseTypes;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new OpenIdConnectProvider();
$requestBody->setOdataType('microsoft.graph.openIdConnectProvider');
$requestBody->setName('Login with the Contoso identity provider');
$requestBody->setType('OpenIDConnect');
$requestBody->setClientId('56433757-cadd-4135-8431-2c9e3fd68ae8');
$requestBody->setClientSecret('12345');
$claimsMapping = new ClaimsMapping();
$claimsMapping->setUserId('myUserId');
$claimsMapping->setGivenName('myGivenName');
$claimsMapping->setSurname('mySurname');
$claimsMapping->setEmail('myEmail');
$claimsMapping->setDisplayName('myDisplayName');
$requestBody->setClaimsMapping($claimsMapping);
$requestBody->setDomainHint('mycustomoidc');
$requestBody->setMetadataUrl('https://mycustomoidc.com/.well-known/openid-configuration');
$requestBody->setResponseMode(new OpenIdConnectResponseMode('form_post'));
$requestBody->setResponseType(new OpenIdConnectResponseTypes('code'));
$requestBody->setScope('openid');
$result = $graphServiceClient->identityProviders()->post($requestBody)->wait();
Import-Module Microsoft.Graph.Beta.Identity.SignIns
$params = @{
"@odata.type" = "microsoft.graph.openIdConnectProvider"
name = "Login with the Contoso identity provider"
type = "OpenIDConnect"
clientId = "56433757-cadd-4135-8431-2c9e3fd68ae8"
clientSecret = "12345"
claimsMapping = @{
userId = "myUserId"
givenName = "myGivenName"
surname = "mySurname"
email = "myEmail"
displayName = "myDisplayName"
}
domainHint = "mycustomoidc"
metadataUrl = "https://mycustomoidc.com/.well-known/openid-configuration"
responseMode = "form_post"
responseType = "code"
scope = "openid"
}
New-MgBetaIdentityProvider -BodyParameter $params
# Code snippets are only available for the latest version. Current version is 1.x
from msgraph_beta import GraphServiceClient
from msgraph_beta.generated.models.open_id_connect_provider import OpenIdConnectProvider
from msgraph_beta.generated.models.claims_mapping import ClaimsMapping
from msgraph_beta.generated.models.open_id_connect_response_mode import OpenIdConnectResponseMode
from msgraph_beta.generated.models.open_id_connect_response_types import OpenIdConnectResponseTypes
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = OpenIdConnectProvider(
odata_type = "microsoft.graph.openIdConnectProvider",
name = "Login with the Contoso identity provider",
type = "OpenIDConnect",
client_id = "56433757-cadd-4135-8431-2c9e3fd68ae8",
client_secret = "12345",
claims_mapping = ClaimsMapping(
user_id = "myUserId",
given_name = "myGivenName",
surname = "mySurname",
email = "myEmail",
display_name = "myDisplayName",
),
domain_hint = "mycustomoidc",
metadata_url = "https://mycustomoidc.com/.well-known/openid-configuration",
response_mode = OpenIdConnectResponseMode.Form_post,
response_type = OpenIdConnectResponseTypes.Code,
scope = "openid",
)
result = await graph_client.identity_providers.post(request_body)
Response
The following example shows the response.
Note: The response object shown here might be shortened for readability.
HTTP/1.1 201 Created
Content-type: application/json
{
"@odata.type": "microsoft.graph.openIdConnectProvider",
"id": "OIDC-V1-MyTest-085a8a0c-58cb-4b6d-8e07-1328ea404e1a",
"name": "Login with the Contoso identity provider",
"type": "OpenIDConnect",
"clientId": "56433757-cadd-4135-8431-2c9e3fd68ae8",
"clientSecret": "12345",
"claimsMapping": {
"userId": "myUserId",
"givenName": "myGivenName",
"surname": "mySurname",
"email": "myEmail",
"displayName": "myDisplayName"
},
"domainHint": "mycustomoidc",
"metadataUrl": "https://mycustomoidc.com/.well-known/openid-configuration",
"responseMode": "form_post",
"responseType": "code",
"scope": "openid"
}