Espacio de nombres: microsoft.graph
Importante
Las API de la versión /beta de Microsoft Graph están sujetas a cambios. No se admite el uso de estas API en aplicaciones de producción. Para determinar si una API está disponible en la versión 1.0, use el selector de Versión.
Cree uno o varios objetos hardwareOathTokenAuthenticationMethodDevice . Esta API admite dos escenarios:
- Cree los nuevos tokens de hardware sin asignarlos a los usuarios. A continuación, puede asignar a un usuario.
- Cree y asigne los tokens de hardware individuales a los usuarios de la misma solicitud.
Permissions
Elija el permiso o los permisos marcados como con privilegios mínimos para esta API. Use un permiso o permisos con privilegios superiores solo si la aplicación lo requiere. Para obtener más información sobre los permisos delegados y de aplicación, consulte Tipos de permisos. Para obtener más información sobre estos permisos, consulte la referencia de permisos.
| Tipo de permiso |
Permisos con privilegios mínimos |
Permisos con privilegios más altos |
| Delegado (cuenta profesional o educativa) |
Policy.ReadWrite.AuthenticationMethod |
No disponible. |
| Delegado (cuenta personal de Microsoft) |
No admitida. |
No admitida. |
| Aplicación |
Policy.ReadWrite.AuthenticationMethod |
No disponible. |
Importante
Cuando se usan permisos delegados con cuentas profesionales o educativas, el usuario que ha iniciado sesión debe tener un rol de Microsoft Entra adecuado o un rol personalizado con los permisos necesarios. El rol integrado con privilegios mínimos necesario para esta operación es Administrador de directivas de autenticación.
Para crear y asignar un token oath de hardware a un usuario en una sola solicitud, el usuario que inició sesión también debe tener:
- Permiso delegado UserAuthenticationMethod.ReadWrite.All .
- Rol Administrador de autenticación (rol con privilegios mínimos para asignar tokens de hardware a usuarios que no son administradores) o Administrador de autenticación con privilegios (rol con privilegios mínimos para asignar tokens de hardware a usuarios administradores).
Solicitud HTTP
PATCH /directory/authenticationMethodDevices/hardwareOathDevices
| Nombre |
Descripción |
| Authorization |
{token} de portador. Obligatorio. Obtenga más información sobre la autenticación y la autorización. |
| Content-Type |
application/json. Obligatorio. |
Cuerpo de la solicitud
En el cuerpo de la solicitud, proporcione una representación JSON del objeto hardwareOathTokenAuthenticationMethodDevice .
Puede especificar las siguientes propiedades al crear un hardwareOathTokenAuthenticationMethodDevice.
| Propiedad |
Tipo |
Descripción |
| serialNumber |
Cadena |
Número de serie del token de hardware específico, que a menudo se encuentra en la parte posterior del dispositivo. Obligatorio. |
| manufacturer |
Cadena |
Nombre del fabricante del token de hardware. Obligatorio. |
| model |
Cadena |
Nombre del modelo del token de hardware. Obligatorio. |
| secretKey |
Cadena |
Clave secreta del token de hardware específico, proporcionado por el proveedor. Obligatorio. |
| timeIntervalInSeconds |
Int32 |
Intervalo de actualización del código de verificación de 6 dígitos, en segundos. Los valores posibles son: 30 o 60. Obligatorio. |
| hashFunction |
hardwareOathTokenHashFunction |
Función hash del token de hardrware. Los valores posibles son: hmacsha1 o hmacsha256. El valor predeterminado es: hmacsha1. Opcional. |
| assignTo |
identity |
Id. de usuario si desea asignar directamente el token a un usuario. Opcional. |
Respuesta
Si se ejecuta correctamente, este método devuelve un 201 Created código de respuesta y un objeto hardwareOathTokenAuthenticationMethodDevice en el cuerpo de la respuesta.
Ejemplos
Solicitud
En el ejemplo siguiente se muestra la solicitud.
POST https://graph.microsoft.com/beta/directory/authenticationMethodDevices/hardwareOathDevices
Content-Type: application/json
{
"@context": "#$delta",
"value": [
{
"@contentId": "1",
"serialNumber": "TOTP123456",
"manufacturer": "Contoso",
"model": "Hardware Token 1000",
"secretKey": "6PJ4UKIW33NNXYZAEHQNFUFTZF7WFTFB",
"timeIntervalInSeconds": "30",
"hashFunction": "hmacsha1"
},
{
"@contentId": "2",
"serialNumber": "TOTP654321",
"manufacturer": "Contoso",
"model": "Hardware Token 1000",
"secretKey": "TXYZAE6PJ4UZF3NNKIW3HQNFUF7WFTFB",
"timeIntervalInSeconds": "30",
"hashFunction": "hmacsha1",
"assignTo": {
"id": "0cadbf92-####-####-####-############"
}
}
]
}
// Code snippets are only available for the latest version. Current version is 5.x
// Dependencies
using Microsoft.Graph.Beta.Models;
using Microsoft.Kiota.Abstractions.Serialization;
var requestBody = new HardwareOathTokenAuthenticationMethodDevice
{
AdditionalData = new Dictionary<string, object>
{
{
"@context" , "#$delta"
},
{
"value" , new List<object>
{
new UntypedObject(new Dictionary<string, UntypedNode>
{
{
"@contentId", new UntypedString("1")
},
{
"serialNumber", new UntypedString("TOTP123456")
},
{
"manufacturer", new UntypedString("Contoso")
},
{
"model", new UntypedString("Hardware Token 1000")
},
{
"secretKey", new UntypedString("6PJ4UKIW33NNXYZAEHQNFUFTZF7WFTFB")
},
{
"timeIntervalInSeconds", new UntypedString("30")
},
{
"hashFunction", new UntypedString("hmacsha1")
},
}),
new UntypedObject(new Dictionary<string, UntypedNode>
{
{
"@contentId", new UntypedString("2")
},
{
"serialNumber", new UntypedString("TOTP654321")
},
{
"manufacturer", new UntypedString("Contoso")
},
{
"model", new UntypedString("Hardware Token 1000")
},
{
"secretKey", new UntypedString("TXYZAE6PJ4UZF3NNKIW3HQNFUF7WFTFB")
},
{
"timeIntervalInSeconds", new UntypedString("30")
},
{
"hashFunction", new UntypedString("hmacsha1")
},
{
"assignTo", new UntypedObject(new Dictionary<string, UntypedNode>
{
{
"id", new UntypedString("0cadbf92-####-####-####-############")
},
})
},
}),
}
},
},
};
// To initialize your graphClient, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=csharp
var result = await graphClient.Directory.AuthenticationMethodDevices.HardwareOathDevices.PostAsync(requestBody);
// Code snippets are only available for the latest version. Current version is 6.x
GraphServiceClient graphClient = new GraphServiceClient(requestAdapter);
HardwareOathTokenAuthenticationMethodDevice hardwareOathTokenAuthenticationMethodDevice = new HardwareOathTokenAuthenticationMethodDevice();
HashMap<String, Object> additionalData = new HashMap<String, Object>();
additionalData.put("@context", "#$delta");
LinkedList<Object> value = new LinkedList<Object>();
property = new ();
property.setContentId("1");
property.setSerialNumber("TOTP123456");
property.setManufacturer("Contoso");
property.setModel("Hardware Token 1000");
property.setSecretKey("6PJ4UKIW33NNXYZAEHQNFUFTZF7WFTFB");
property.setTimeIntervalInSeconds("30");
property.setHashFunction("hmacsha1");
value.add(property);
property1 = new ();
property1.setContentId("2");
property1.setSerialNumber("TOTP654321");
property1.setManufacturer("Contoso");
property1.setModel("Hardware Token 1000");
property1.setSecretKey("TXYZAE6PJ4UZF3NNKIW3HQNFUF7WFTFB");
property1.setTimeIntervalInSeconds("30");
property1.setHashFunction("hmacsha1");
assignTo = new ();
assignTo.setId("0cadbf92-####-####-####-############");
property1.setAssignTo(assignTo);
value.add(property1);
additionalData.put("value", value);
hardwareOathTokenAuthenticationMethodDevice.setAdditionalData(additionalData);
HardwareOathTokenAuthenticationMethodDevice result = graphClient.directory().authenticationMethodDevices().hardwareOathDevices().post(hardwareOathTokenAuthenticationMethodDevice);
const options = {
authProvider,
};
const client = Client.init(options);
const hardwareOathTokenAuthenticationMethodDevice = {
'@context': '#$delta',
value: [
{
'@contentId': '1',
serialNumber: 'TOTP123456',
manufacturer: 'Contoso',
model: 'Hardware Token 1000',
secretKey: '6PJ4UKIW33NNXYZAEHQNFUFTZF7WFTFB',
timeIntervalInSeconds: '30',
hashFunction: 'hmacsha1'
},
{
'@contentId': '2',
serialNumber: 'TOTP654321',
manufacturer: 'Contoso',
model: 'Hardware Token 1000',
secretKey: 'TXYZAE6PJ4UZF3NNKIW3HQNFUF7WFTFB',
timeIntervalInSeconds: '30',
hashFunction: 'hmacsha1',
assignTo: {
id: '0cadbf92-####-####-####-############'
}
}
]
};
await client.api('/directory/authenticationMethodDevices/hardwareOathDevices')
.version('beta')
.post(hardwareOathTokenAuthenticationMethodDevice);
<?php
use Microsoft\Graph\Beta\GraphServiceClient;
use Microsoft\Graph\Beta\Generated\Models\HardwareOathTokenAuthenticationMethodDevice;
$graphServiceClient = new GraphServiceClient($tokenRequestContext, $scopes);
$requestBody = new HardwareOathTokenAuthenticationMethodDevice();
$additionalData = [
'@context' => '#$delta',
'value' => [
[
'@contentId' => '1',
'serialNumber' => 'TOTP123456',
'manufacturer' => 'Contoso',
'model' => 'Hardware Token 1000',
'secretKey' => '6PJ4UKIW33NNXYZAEHQNFUFTZF7WFTFB',
'timeIntervalInSeconds' => '30',
'hashFunction' => 'hmacsha1',
],
[
'@contentId' => '2',
'serialNumber' => 'TOTP654321',
'manufacturer' => 'Contoso',
'model' => 'Hardware Token 1000',
'secretKey' => 'TXYZAE6PJ4UZF3NNKIW3HQNFUF7WFTFB',
'timeIntervalInSeconds' => '30',
'hashFunction' => 'hmacsha1',
'assignTo' => [
'id' => '0cadbf92-####-####-####-############',
],
],
],
];
$requestBody->setAdditionalData($additionalData);
$result = $graphServiceClient->directory()->authenticationMethodDevices()->hardwareOathDevices()->post($requestBody)->wait();
Import-Module Microsoft.Graph.Beta.Identity.DirectoryManagement
$params = @{
"@context" = "#$delta"
value = @(
@{
"@contentId" = "1"
serialNumber = "TOTP123456"
manufacturer = "Contoso"
model = "Hardware Token 1000"
secretKey = "6PJ4UKIW33NNXYZAEHQNFUFTZF7WFTFB"
timeIntervalInSeconds = "30"
hashFunction = "hmacsha1"
}
@{
"@contentId" = "2"
serialNumber = "TOTP654321"
manufacturer = "Contoso"
model = "Hardware Token 1000"
secretKey = "TXYZAE6PJ4UZF3NNKIW3HQNFUF7WFTFB"
timeIntervalInSeconds = "30"
hashFunction = "hmacsha1"
assignTo = @{
id = "0cadbf92-####-####-####-############"
}
}
)
}
New-MgBetaDirectoryAuthenticationMethodDeviceHardwareOathDevice -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.hardware_oath_token_authentication_method_device import HardwareOathTokenAuthenticationMethodDevice
# To initialize your graph_client, see https://learn.microsoft.com/en-us/graph/sdks/create-client?from=snippets&tabs=python
request_body = HardwareOathTokenAuthenticationMethodDevice(
additional_data = {
"@context" : "#$delta",
"value" : [
{
"@content_id" : "1",
"serial_number" : "TOTP123456",
"manufacturer" : "Contoso",
"model" : "Hardware Token 1000",
"secret_key" : "6PJ4UKIW33NNXYZAEHQNFUFTZF7WFTFB",
"time_interval_in_seconds" : "30",
"hash_function" : "hmacsha1",
},
{
"@content_id" : "2",
"serial_number" : "TOTP654321",
"manufacturer" : "Contoso",
"model" : "Hardware Token 1000",
"secret_key" : "TXYZAE6PJ4UZF3NNKIW3HQNFUF7WFTFB",
"time_interval_in_seconds" : "30",
"hash_function" : "hmacsha1",
"assign_to" : {
"id" : "0cadbf92-####-####-####-############",
},
},
],
}
)
result = await graph_client.directory.authentication_method_devices.hardware_oath_devices.post(request_body)
Respuesta
En el ejemplo siguiente se muestra la respuesta.
Nota: Se puede acortar el objeto de respuesta que se muestra aquí para mejorar la legibilidad.
HTTP/1.1 201 Created
Content-Type: application/json
{
"value": [
{
"@odata.type": "#microsoft.graph.hardwareOathAuthenticationMethod",
"id": "aad49556-####-####-####-############",
"device": {
"id": "aad49556-####-####-####-############",
"displayName": null,
"serialNumber": "TOTP123456",
"manufacturer": "Contoso",
"model": "Hardware Token 1000",
"secretKey": null,
"timeIntervalInSeconds": 30,
"status": "available",
"hashFunction": "hmacsha1",
"assignedTo": null
}
},
{
"@odata.type": "#microsoft.graph.hardwareOathAuthenticationMethod",
"id": "3dee0e53-####-####-####-############",
"device": {
"id": "3dee0e53-####-####-####-############",
"displayName": null,
"serialNumber": "TOTP654321",
"manufacturer": "Contoso",
"model": "Hardware Token 1000",
"secretKey": null,
"timeIntervalInSeconds": 30,
"status": "assigned",
"hashFunction": "hmacsha1",
"assignedTo": {
"id": "0cadbf92-####-####-####-############",
"displayName": "Amy Masters"
}
}
}
]
}