Namespace: microsoft.graph
Importante
As APIs na versão /beta no Microsoft Graph estão sujeitas a alterações. Não há suporte para o uso dessas APIs em aplicativos de produção. Para determinar se uma API está disponível na v1.0, use o seletor Versão.
Crie um ou mais objetos hardwareOathTokenAuthenticationMethodDevice . Essa API dá suporte a dois cenários:
- Crie os novos tokens de hardware sem atribuir aos usuários. Em seguida, você pode atribuir a um usuário.
- Crie e atribua quaisquer tokens de hardware individuais aos usuários na mesma solicitação.
Permissões
Escolha a(s) permissão(s) marcada(s) como menos privilegiada(s) para essa API. Use uma permissão ou permissões com privilégios mais altos somente se o aplicativo exigir. Para obter detalhes sobre permissões delegadas e de aplicativo, consulte Tipos de permissão. Para saber mais sobre essas permissões, consulte a referência de permissões.
| Tipo de permissão |
Permissões menos privilegiadas |
Permissões com privilégios mais elevados |
| Delegada (conta corporativa ou de estudante) |
Policy.ReadWrite.AuthenticationMethod |
Indisponível. |
| Delegado (conta pessoal da Microsoft) |
Sem suporte. |
Sem suporte. |
| Aplicativo |
Policy.ReadWrite.AuthenticationMethod |
Indisponível. |
Importante
Ao usar permissões delegadas com contas corporativas ou de estudante, o usuário conectado deve ter uma função apropriada do Microsoft Entra ou uma função personalizada com as permissões necessárias. A função interna com privilégios mínimos necessária para essa operação é a de Administrador de Política de Autenticação.
Para criar e atribuir um token OATH de hardware a um usuário em uma única solicitação, o usuário conectado também deve ter:
- A permissão delegada UserAuthenticationMethod.ReadWrite.All .
-
Função de Administrador de Autenticação (função com privilégios mínimos para atribuir tokens de hardware a usuários não administradores) ou Administrador de Autenticação Privilegiada (função com privilégios mínimos para atribuir tokens de hardware a usuários administradores).
Solicitação HTTP
PATCH /directory/authenticationMethodDevices/hardwareOathDevices
| Nome |
Descrição |
| Autorização |
{token} de portador. Obrigatório. Saiba mais sobre autenticação e autorização. |
| Content-Type |
application/json. Obrigatório. |
Corpo da solicitação
No corpo da solicitação, forneça uma representação JSON do objeto hardwareOathTokenAuthenticationMethodDevice .
Você pode especificar as propriedades a seguir ao criar um hardwareOathTokenAuthenticationMethodDevice.
| Propriedade |
Tipo |
Descrição |
| serialNumber |
Cadeia de caracteres |
Número de série do token de hardware específico, geralmente encontrado na parte traseira do dispositivo. Obrigatório. |
| fabricante |
Cadeia de caracteres |
Nome do fabricante do token de hardware. Obrigatório. |
| modelo |
Cadeia de caracteres |
Nome do modelo do token de hardware. Obrigatório. |
| secretKey |
Cadeia de caracteres |
Chave secreta do token de hardware específico, fornecida pelo fornecedor. Obrigatório. |
| timeIntervalInSeconds |
Int32 |
Intervalo de atualização do código de verificação de 6 dígitos, em segundos. Os valores possíveis são: 30 ou 60. Obrigatório. |
| hashFunction |
hardwareOathTokenHashFunction |
Função de hash do token de hardrware. Os valores possíveis são: hmacsha1 ou hmacsha256. O valor padrão é: hmacsha1. Opcional. |
| assignTo |
identity |
ID do usuário, se desejar atribuir diretamente o token a um usuário. Opcional. |
Resposta
Se for bem-sucedido, esse método retornará um código de 201 Created resposta e um objeto hardwareOathTokenAuthenticationMethodDevice no corpo da resposta.
Exemplos
Solicitação
O exemplo a seguir mostra uma solicitação.
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)
Resposta
O exemplo a seguir mostra a resposta.
Observação: o objeto de resposta mostrado aqui pode ser encurtado para legibilidade.
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"
}
}
}
]
}