命名空间:microsoft.graph
重要
Microsoft Graph /beta 版本下的 API 可能会发生更改。 不支持在生产应用程序中使用这些 API。 若要确定 API 是否在 v1.0 中可用,请使用 版本 选择器。
将密钥凭据添加到 servicePrincipal。 servicePrincipal 可以使用此方法和 removeKey 来自动滚动其即将到期的密钥。
注意
创建 servicePrincipal 和 更新 servicePrincipal 作可以继续用于添加和更新具有或不带用户上下文的任何 servicePrincipal 的密钥凭据。
作为此方法请求验证的一部分,在执行作之前,将验证现有密钥的所有权证明。
没有任何现有有效证书的 ServicePrincipal (,即尚未添加证书,或者所有证书都已) 过期,将无法使用此服务作。 更新 servicePrincipal 可用于改为执行更新。
权限
为此 API 选择标记为最低特权的权限。 只有在应用需要它时,才使用更高的特权权限。 有关委派权限和应用程序权限的详细信息,请参阅权限类型。 要了解有关这些权限的详细信息,请参阅 权限参考。
| 权限类型 | 最低特权权限 | 更高特权权限 |
|---|---|---|
| 委派(工作或学校帐户) | Application.ReadWrite.All | Directory.ReadWrite.All |
| 委派(个人 Microsoft 帐户) | 不支持。 | 不支持。 |
| 应用程序 | Application.ReadWrite.OwnedBy | Application.ReadWrite.All、Directory.ReadWrite.All |
重要
在具有工作或学校帐户的委托方案中,必须为登录用户分配受支持的Microsoft Entra角色或具有支持的角色权限的自定义角色。 此作支持以下最低特权角色。
- 具有默认用户权限的非管理员成员用户 - 对于他们拥有的应用程序
- 应用程序开发人员 - 对于他们拥有的应用程序
- 云应用程序管理员
- 应用程序管理员
HTTP 请求
可以使用服务主体 ID 或 appId 来寻址服务主体。 id 和 appId 在 Microsoft Entra 管理中心 中的应用注册中分别称为“对象 ID”和“应用程序 (客户端) ID”。
POST /servicePrincipals/{id}/addKey
POST /servicePrincipals(appId='{appId}')/addKey
请求标头
| 名称 | 说明 |
|---|---|
| Authorization | 持有者 {token}。 必填。 详细了解 身份验证和授权。 |
| Content-Type | application/json. 必需。 |
请求正文
在请求正文中,提供以下必需属性。
| 属性 | 类型 | 说明 |
|---|---|---|
| keyCredential | keyCredential | 要添加的新 servicePrincipal 密钥凭据。
类型、用法和密钥是此用法的必需属性。 支持的密钥类型包括:
|
| passwordCredential | passwordCredential | 只需要设置 secretText ,它应包含密钥的密码。 仅类型 为 的 X509CertAndPassword键需要此属性。 否则将其设置为 null 。 |
| 证明 | String | 用作现有密钥所有权证明的自签名 JWT 令牌。 必须使用与 servicePrincipal 关联的现有有效证书之一对应的私钥对此 JWT 令牌进行签名。 令牌应包含以下声明:
有关生成此所有权证明令牌的步骤,请参阅 为滚动密钥生成所有权证明令牌。 |
响应
如果成功,此方法在响应正文中返回响应 200 OK 代码和新的 keyCredential 对象。
示例
示例 1:向 servicePrincipal 添加新的密钥凭据
请求
以下示例显示了一个请求。
POST https://graph.microsoft.com/beta/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/beta/$metadata#microsoft.graph.keyCredential"
}
示例 2:为密钥添加密钥凭据和关联的密码
请求
以下示例显示了一个请求。
POST https://graph.microsoft.com/beta/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/beta/$metadata#microsoft.graph.keyCredential"
}