servicePrincipal:addKey

命名空间:microsoft.graph

将密钥凭据添加到 servicePrincipal。 servicePrincipal 可以使用此方法和 removeKey 来自动滚动其即将到期的密钥。

注意

创建 servicePrincipal更新 servicePrincipal 操作可以继续用于添加和更新具有或不带用户上下文的任何 servicePrincipal 的密钥凭据。

作为此方法请求验证的一部分,在执行操作之前,将验证现有密钥的所有权证明。

没有任何现有有效证书的 ServicePrincipal (,即尚未添加证书,或者所有证书都已) 过期,将无法使用此服务操作。 更新 servicePrincipal 可用于改为执行更新。

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

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

权限

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

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

HTTP 请求

可以使用服务主体 IDappId 来寻址服务主体。 idappId 在 Microsoft Entra 管理中心 中的应用注册中分别称为“对象 ID”和“应用程序 (客户端) ID”。

POST /serviceprincipals/{id}/addKey
POST /servicePrincipals(appId='{appId}')/addKey

请求标头

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

请求正文

在请求正文中,提供以下必需属性。

属性 类型 说明
keyCredential keyCredential 要添加的新 servicePrincipal 密钥凭据。 类型用法密钥是此用法的必需属性。 支持的密钥类型包括:
  • AsymmetricX509Cert:用法必须为 Verify
  • X509CertAndPassword:用法必须为 Sign
passwordCredential passwordCredential 只需要设置 secretText ,它应包含密钥的密码。 仅类型 为 的 X509CertAndPassword键需要此属性。 否则将其设置为 null
证明 String 用作现有密钥所有权证明的自签名 JWT 令牌。 必须使用与 servicePrincipal 关联的现有有效证书之一对应的私钥对此 JWT 令牌进行签名。 令牌应包含以下声明:
  • aud:受众必须是 00000002-0000-0000-c000-000000000000
  • iss:颁发者必须是启动请求的 servicePrincipal 的 ID。
  • nbf:不是在时间之前。
  • exp:到期时间应为 nbf + 10 分钟的值。

有关生成此所有权证明令牌的步骤,请参阅 为滚动密钥生成所有权证明令牌

响应

如果成功,此方法在响应正文中返回响应 200 OK 代码和新的 keyCredential 对象。

示例

示例 1:向 servicePrincipal 添加新的密钥凭据

请求

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

POST https://graph.microsoft.com/v1.0/servicePrincipals/{id}/addKey
Content-type: application/json

{
    "keyCredential": {
        "type": "AsymmetricX509Cert",
        "usage": "Verify",
        "key": "MIIDYDCCAki..."
    },
    "passwordCredential": null,
    "proof":"eyJ0eXAiOiJ..."
}

响应

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

HTTP/1.1 200 OK
Content-Type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.keyCredential"
}

示例 2:为密钥添加密钥凭据和关联的密码

请求

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

POST https://graph.microsoft.com/v1.0/servicePrincipals/{id}/addKey
Content-type: application/json

{
    "keyCredential": {
        "type": "X509CertAndPassword",
        "usage": "Sign",
        "key": "MIIDYDCCAki..."
    },
    "passwordCredential": {
        "secretText": "MKTr0w1..."
    },
    "proof":"eyJ0eXAiOiJ..."
}

响应

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

HTTP/1.1 200 OK
Content-Type: application/json

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#microsoft.graph.keyCredential"
}