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 . Esta API suporta dois cenários:
- Crie os novos tokens de hardware sem atribuir aos utilizadores. Em seguida, pode atribuir a um utilizador.
- Crie e atribua tokens de hardware individuais aos utilizadores no mesmo pedido.
Permissões
Escolha a permissão ou permissões marcadas como menos privilegiadas para esta API. Utilize uma permissão ou permissões com privilégios mais elevados apenas se a sua aplicação o exigir. Para obter detalhes sobre as permissões delegadas e de aplicação, veja Tipos de permissão. Para saber mais sobre estas permissões, veja a referência de permissões.
| Tipo de permissão |
Permissões com menos privilégios |
Permissões com privilégios superiores |
| 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 utilizar permissões delegadas com contas escolares ou profissionais, o utilizador com sessão iniciada tem de ter uma função de Microsoft Entra adequada ou uma função personalizada com as permissões necessárias. A função incorporada com menos privilégios necessária para esta operação é Administrador de Políticas de Autenticação.
Para criar e atribuir um token OATH de hardware a um utilizador num único pedido, o utilizador com sessão iniciada também tem de ter:
- A permissão delegada UserAuthenticationMethod.ReadWrite.All .
-
Administrador de Autenticação (função com menos privilégios para atribuir tokens de hardware a utilizadores não administradores) ou Administrador de Autenticação Privilegiada (função com menos privilégios para atribuir tokens de hardware a utilizadores 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 do pedido, forneça uma representação JSON do objeto hardwareOathTokenAuthenticationMethodDevice .
Pode especificar as seguintes propriedades 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 de trás 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, fornecido 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 hash do token hardrware. Os valores possíveis são: hmacsha1 ou hmacsha256. O valor predefinido é: hmacsha1. Opcional. |
| assignTo |
identity |
ID de utilizador se pretender atribuir diretamente o token a um utilizador. Opcional. |
Resposta
Se for bem-sucedido, este método devolve um 201 Created código de 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"
}
}
}
]
}