创建 identityProvider

命名空间:microsoft.graph

重要

Microsoft Graph /beta 版本下的 API 可能会发生更改。 不支持在生产应用程序中使用这些 API。 若要确定 API 是否在 v1.0 中可用,请使用 版本 选择器。

创建请求正文中指定的类型的标识提供者对象。

在派生自 identityProviderBase 的提供程序类型中,在 Microsoft Entra 中,此操作可以创建 socialIdentityProviderappleManagedIdentityProvider (仅) 外部租户,或者仅) 资源的外部租户 (oidcIdentityProvider

在 Azure AD B2C 中,此操作可以创建 socialIdentityProviderappleManagedIdentityProviderbuiltinIdentityProvideropenIdConnectIdentityProvider 资源。

此 API 可用于以下国家级云部署

全局服务 美国政府 L4 美国政府 L5 (DOD) 由世纪互联运营的中国

权限

为此 API 选择标记为最低特权的权限。 只有在应用需要它时,才使用更高的特权权限。 有关委派权限和应用程序权限的详细信息,请参阅权限类型。 要了解有关这些权限的详细信息,请参阅 权限参考

权限类型 最低特权权限 更高特权权限
委派(工作或学校帐户) IdentityProvider.ReadWrite.All 不可用。
委派(个人 Microsoft 帐户) 不支持。 不支持。
应用程序 IdentityProvider.ReadWrite.All 不可用。

重要

在具有工作或学校帐户的委托方案中,必须为登录用户分配受支持的Microsoft Entra角色或具有支持的角色权限的自定义角色。 外部标识提供者管理员 是此操作支持的最低特权角色。

HTTP 请求

POST /identity/identityProviders

请求标头

名称 说明
Authorization 持有者 {token}。 必填。 详细了解 身份验证和授权
Content-Type application/json. 必需。

请求正文

在请求正文中,在 Microsoft Entra 外部 ID 中提供 socialIdentityProvideroidcIdentityProviderappleManagedIdentityProvider 对象的 JSON 表示形式。

在 Azure AD 中,B2C 提供 socialIdentityProvideropenIdConnectIdentityProviderappleManagedIdentityProvider 对象的 JSON 表示形式。

下表中列出的所有属性均是必需的。

socialIdentityProvider 对象

属性 类型 说明
displayName 字符串 标识提供程序的显示名称。
clientId 字符串 向标识提供程序注册应用程序时,获取应用程序的客户端标识符。
clientSecret 字符串 向标识提供程序注册时获取的应用程序的客户端密码。 这是只读的。 读取操作返回 ****
identityProviderType String 对于外部租户和劳动力租户,可能的值: FacebookGoogle
对于 Azure AD B2C 租户,可能的值:Microsoft、、GoogleAmazonFacebookGitHubLinkedInWeiboTwitter、、 。 WeChatQQ

appleManagedIdentityProvider 对象

属性 类型 说明
displayName 字符串 标识提供程序的显示名称。
developerId String Apple 开发人员标识符。
服务 Id String Apple 服务标识符。
keyId String Apple 密钥标识符。
certificateData String 证书中长文本字符串的证书数据可能是 null。

openIdConnectIdentityProvider 对象

属性 类型 说明
displayName 字符串 标识提供程序的显示名称。
clientId 字符串 向标识提供程序注册应用程序时,获取应用程序的客户端标识符。
clientSecret 字符串 使用身份提供程序注册应用时获取的应用客户端密码。 clientSecret 依赖于 responseType
  • responseTypecode时,身份验证代码交换需要机密。
  • responseTypeid_token 时,不需要机密,因为身份验证管道中没有代码交换。 在此模式下,id_token直接从授权响应返回。
domainHint String 域提示可用于直接跳到指定标识提供者的登录页,而不是让用户在可用标识提供者列表中做出选择。
claimsMapping claimsMapping 在 OIDC 提供程序将 ID 令牌发送回Microsoft Entra ID后,Microsoft Entra ID需要能够将收到的令牌中的声明映射到Microsoft Entra ID识别和使用的声明。 此复杂类型捕获该映射。
metadataUrl String OpenID Connect 标识提供者的元数据文档的 URL。 每个 OpenID Connect 标识提供者都描述了一个元数据文档,其中包含执行登录所需的大部分信息。 这包括要使用的 URL 和服务公共签名密钥的位置等信息。 OpenID Connect 元数据文档始终位于 以 结尾的终结点。.well-known/openid-configuration 提供添加的 OpenID Connect 标识提供者的元数据 URL。
responseMode String 响应模式定义用于将数据从自定义标识提供者发送回 Azure AD B2C 的方法。 可能的值: form_postquery
responseType String 响应类型描述在初始调用中发送回自定义标识提供者authorization_endpoint的信息的类型。 可能的值: codeid_tokentoken
范围 String 作用域定义要从自定义标识提供者收集的信息和权限。

oidcIdentityProvider 对象

属性 类型 说明
displayName 字符串 标识提供程序的显示名称。
clientId 字符串 使用身份提供程序注册应用时获取的应用客户端 ID。
发行 String 颁发者 URI。 颁发者 URI 是一个区分大小写的 URL,使用 https 方案包含方案、主机和(可选)端口号和路径组件,并且没有查询或片段组件。
注意:目前不支持将其他Microsoft Entra租户配置为外部标识提供者。 因此, microsoftonline.com 不接受颁发者 URI 中的域。
wellKnownEndpoint String OpenID Connect 标识提供者的元数据文档的 URL。 每个 OpenID Connect 标识提供者都描述了一个元数据文档,其中包含执行登录所需的大部分信息。 这包括要使用的 URL 和服务公共签名密钥的位置等信息。 OpenID Connect 元数据文档始终位于 以 结尾的终结点。.well-known/openid-configuration
注意:元数据文档至少应包含以下属性:issuer、、authorization_endpointtoken_endpointtoken_endpoint_auth_methods_supportedresponse_types_supportedsubject_types_supportedjwks_uri。 有关更多详细信息,请访问 OpenID Connect 发现 规范。
responseType String 响应类型描述在初始调用中发送回自定义标识提供者authorization_endpoint的信息的类型。 可能的值:
code:根据授权代码流,代码将返回到 Entra 外部 ID。 Entra 外部 ID继续调用token_endpoint以交换令牌的代码。
id_token:ID 令牌从自定义标识提供者返回到 Entra 外部 ID。 () 时不支持此值。
token:访问令牌从自定义标识提供者返回到 Entra 外部 ID。 () 时不支持此值。
范围 String 作用域定义要从自定义标识提供者收集的信息和权限。
clientAuthentication clientAuthentication 客户端身份验证设置。
使用 oidcClientSecretAuthentication 类型通过 或 client_secret_jwt authentication 方法设置标识提供者client_secret_post
使用 oidcPrivateJwtKeyClientAuthentication 类型通过身份验证方法设置标识提供者 private_key_jwt
出于安全原因, client_secret_basic 不支持身份验证方法。
inboundclaimMapping inboundclaimMapping OIDC 提供程序将 ID 令牌发送回Microsoft Entra 外部 ID后,Microsoft Entra 外部 ID需要能够将收到的令牌中的声明映射到Microsoft Entra ID识别和使用的声明。 此复杂类型捕获该映射。

响应

如果成功,此方法在201 CreatedMicrosoft Entra租户的响应正文中返回一个响应代码和 socialIdentityProvider 对象的 JSON 表示形式。

对于 Azure AD B2C 租户,此方法在响应正文中返回 201 CreatedsocialIdentityProvideropenIdConnectIdentityProviderappleManagedIdentityProvider 对象的响应代码和 JSON 表示形式。

如果失败,将返回 4xx 错误并显示具体详细信息。

示例

示例 1:创建社交标识提供者

请求

以下示例显示了一个请求。

POST https://graph.microsoft.com/beta/identity/identityProviders
Content-type: application/json

{
  "@odata.type": "microsoft.graph.socialIdentityProvider",
  "displayName": "Login with Amazon",
  "identityProviderType": "Amazon",
  "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
  "clientSecret": "42*****96"
}

响应

以下示例显示了相应的响应。

注意:为了提高可读性,可能缩短了此处显示的响应对象。

HTTP/1.1 201 Created
Content-type: application/json

{
    "@odata.type": "microsoft.graph.socialIdentityProvider",
    "id": "Amazon-OAUTH",
    "displayName": "Login with Amazon",
    "identityProviderType": "Amazon",
    "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
    "clientSecret": "42*****96"
}

示例 2:创建 Apple 标识提供者

请求

以下示例显示了一个请求。

POST https://graph.microsoft.com/beta/identity/identityProviders
Content-type: application/json

{
  "@odata.type": "microsoft.graph.appleManagedIdentityProvider",
  "displayName": "Apple",
  "developerId": "qazx.1234",
  "serviceId": "com.contoso.app",
  "keyId": "4294967296",
  "certificateData": "******"
}

响应

以下示例显示了相应的响应。

注意:为了提高可读性,可能缩短了此处显示的响应对象。

HTTP/1.1 201 Created
Content-type: application/json

{
  "@odata.type": "microsoft.graph.appleManagedIdentityProvider",
  "id": "Apple-Managed-OIDC",
  "displayName": "Apple",
  "developerId": "qazx.1234",
  "serviceId": "com.contoso.app",
  "keyId": "4294967296",
  "certificateData": "******"
}

示例 3: (B2C 租户) 创建 OpenID Connect 标识提供者

请求

以下示例显示了一个请求。

POST https://graph.microsoft.com/beta/identity/identityProviders
Content-type: application/json

{
  "@odata.type": "microsoft.graph.openIdConnectIdentityProvider",
    "displayName": "Contoso",
    "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
    "clientSecret": "4294967296",
    "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"
}

响应

以下示例显示了相应的响应。

注意:为了提高可读性,可能缩短了此处显示的响应对象。

HTTP/1.1 201 Created
Content-type: application/json

{
  "@odata.type": "microsoft.graph.openIdConnectIdentityProvider",
  "id": "Contoso-OIDC-00001111-aaaa-2222-bbbb-3333cccc4444",
  "displayName": "Contoso",
  "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
  "clientSecret": "4294967296",
  "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"
}

示例 4: (外部租户) 创建 OpenID Connect 标识提供者

请求

以下示例显示了一个请求。

POST https://graph.microsoft.com/beta/identity/identityProviders
Content-type: application/json

{
  "@odata.type": "#microsoft.graph.OidcIdentityProvider",
  "displayName": "Contoso AAD B2C",
  "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
  "issuer": "https://contoso.b2clogin.com/00001111-aaaa-2222-bbbb-3333cccc4444/v2.0/",
  "wellKnownEndpoint": "https://contoso.b2clogin.com/contoso.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=B2C_1A_SIGNINEMAIL",
  "responseType": "code",
  "scope": "openid profile email offline_access",
  "clientAuthentication": {
    "@odata.type": "#microsoft.graph.oidcClientSecretAuthentication",
    "clientSecret": "4294967296"
  },
  "inboundClaimMapping": {
    "sub": "sub",
    "name": "name",
    "given_name": "given_name",
    "family_name": "family_name",
    "email": "email",
    "email_verified": "email_verified",
    "phone_number": "phone_number",
    "phone_number_verified": "phone_number_verified",
    "address": {
      "street_address": "street_address",
      "locality": "locality",
      "region": "region",
      "postal_code": "postal_code",
      "country": "country"
    }
  }
}

响应

以下示例显示了相应的响应。

注意:为了提高可读性,可能缩短了此处显示的响应对象。

HTTP/1.1 201 Created
Content-type: application/json

{
  "@odata.type": "#microsoft.graph.OidcIdentityProvider",
  "id": "12345678-abcd-1234-cdef-aaaaaaaaaaaa",
  "displayName": "Contoso AAD B2C",
  "clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
  "issuer": "https://contoso.b2clogin.com/00001111-aaaa-2222-bbbb-3333cccc4444/v2.0/",
  "wellKnownEndpoint": "https://contoso.b2clogin.com/contoso.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=B2C_1A_SIGNINEMAIL",
  "responseType": "code",
  "scope": "openid profile email offline_access",
  "clientAuthentication": {
    "@odata.type": "#microsoft.graph.oidcClientSecretAuthentication",
    "clientSecret": "*****"
  },
  "inboundClaimMapping": {
    "sub": "sub",
    "name": "name",
    "given_name": "given_name",
    "family_name": "family_name",
    "email": "email",
    "email_verified": "email_verified",
    "phone_number": "phone_number",
    "phone_number_verified": "phone_number_verified",
    "address": {
      "street_address": "street_address",
      "locality": "locality",
      "region": "region",
      "postal_code": "postal_code",
      "country": "country"
    }
  }
}