命名空间:microsoft.graph
为用户创建新的 fido2AuthenticationMethod 对象。 此 API 在 WebAuthn 注册过程中完成 FIDO2 安全密钥 (密钥) 的注册。
Passkey 注册流:
- 调用 creationOptions 函数以从 Microsoft Entra ID 检索 WebAuthn 凭据创建选项。
- 使用返回的选项使用 WebAuthn API 在浏览器或验证器中创建新的凭据。
- 将生成的公钥凭据 POST 到此 API 以完成注册。
注意
此 API 具有以下已知问题:
- 它不支持预配预注册的密钥。 有关详细信息,请参阅 已知问题:不支持预配预注册的密钥
- 管理员必须在 FIDO2 身份验证方法策略中启用 “允许自助服务设置 ”才能使用 FIDO2 预配 API。 有关详细信息,请参阅 已知问题:FIDO2 预配 API 需要启用自助服务设置。
权限
为此 API 选择标记为最低特权的权限。 只有在应用需要它时,才使用更高的特权权限。 有关委派权限和应用程序权限的详细信息,请参阅权限类型。 要了解有关这些权限的详细信息,请参阅 权限参考。
| 权限类型 | 最低特权权限 | 更高特权权限 |
|---|---|---|
| 委派(工作或学校帐户) | UserAuthMethod-Passkey.ReadWrite.All | UserAuthenticationMethod.ReadWrite.All |
| 委派(个人 Microsoft 帐户) | 不支持。 | 不支持。 |
| 应用程序 | UserAuthMethod-Passkey.ReadWrite.All | UserAuthenticationMethod.ReadWrite.All |
重要
对于使用工作或学校帐户(其中已登录用户对其他用户进行操作)的委派访问,必须为他们分配受支持的Microsoft Entra角色或授予此操作所需权限的自定义角色。 此操作支持以下内置角色,这些角色仅提供所需的最小特权:
- 身份验证管理员
- 特权身份验证管理员
当用户管理自己的身份验证方法时,系统会提示他们完成多重身份验证, (MFA) 如果他们上次在当前会话中进行身份验证的时间超过 10 分钟。
HTTP 请求
注意
调用 /me 终结点需要已登录的用户,因此需要委派权限。 使用 /me 终结点时,不支持应用程序权限。
POST /users/{id}/authentication/fido2Methods
POST /me/authentication/fido2Methods
请求标头
| 名称 | 说明 |
|---|---|
| Authorization | 持有者 {token}。 必填。 详细了解 身份验证和授权。 |
| Content-Type | application/json. 必需。 |
请求正文
在请求正文中,提供 fido2AuthenticationMethod 对象的 JSON 表示形式。
创建 fido2AuthenticationMethod 时,可以指定以下属性。
| 属性 | 类型 | 说明 |
|---|---|---|
| displayName | String | FIDO2 安全密钥的显示名称。 可选。 |
| publicKeyCredential | webauthnPublicKeyCredential | 验证器创建的 WebAuthn 公钥凭据。 根据 RFC 4648 第 5 节中定义,Base64URL 对所有二进制数据进行编码,无需填充。 此编码适用于凭据 ID、 clientDataJSON 和 attestationObject 属性。 必填。 |
响应
如果成功,此方法在响应正文中返回响应 201 Created 代码和 fido2AuthenticationMethod 对象。
示例
请求
以下示例显示了一个请求。
POST https://graph.microsoft.com/v1.0/users/99a1915f-70a7-4b67-9dca-64095b41be73/authentication/fido2Methods
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.fido2AuthenticationMethod",
"displayName": "My security key",
"publicKeyCredential": {
"@odata.type": "#microsoft.graph.webauthnPublicKeyCredential",
"id": "OEVEMkQzNTctNzNEMi00RjEzLTk5MjYtODdGNjFCMjRBMzQy",
"response": {
"@odata.type": "#microsoft.graph.webauthnAuthenticatorAttestationResponse",
"clientDataJSON": "eyJ0eXBlIjoid2ViYXV0aG4uY3JlYXRlIiwiY2hhbGxlbmdlIjoiUVRVMU16TkROekF0TmtNM05pMDBOVFJETFVKRFEwWXRSVFJFTURaQ05UQkZSVFJFIiwib3JpZ2luIjoiaHR0cHM6Ly9sb2dpbi5taWNyb3NvZnRvbmxpbmUuY29tIiwiY3Jvc3NPcmlnaW4iOmZhbHNlfQ",
"attestationObject": "o2NmbXRkbm9uZWdhdHRTdG10oGhhdXRoRGF0YVikSZYN5YgOjGh0NBcPZHZgW4/krrmihjLHmVzzuoMdl2NdAAAAALraVWanqkAfvZZFYZpVEg0AIDhFRDJEMzU3LTczRDItNEYxMy05OTI2LTg3RjYxQjI0QTM0MqUBAgMmIAEhWCAMKJ7T4r8w5F6JGxJLJXNR0hV1MZF1aZ1F0pZXq5p5"
},
"clientExtensionResults": {
"@odata.type": "#microsoft.graph.webauthnAuthenticationExtensionsClientOutputs"
}
}
}
响应
以下示例显示了相应的响应。
注意:为了提高可读性,可能缩短了此处显示的响应对象。
HTTP/1.1 201 Created
Content-Type: application/json
{
"@odata.type": "#microsoft.graph.fido2AuthenticationMethod",
"id": "73e4b2c6-8a2f-4d3e-9b1a-5c7d8e9f0a1b",
"displayName": "My security key",
"createdDateTime": "2026-04-20T10:15:30Z",
"aaGuid": "de1e552d-db1d-4423-a619-566b625cdc84",
"model": "Security Key NFC by Yubico",
"attestationCertificates": [],
"attestationLevel": "attested",
"passkeyType": "deviceBound"
}