Condividi tramite


Registrazione stampante stampa universale (UP)

1. Registrazione

1.1 Flusso

Flusso di registrazione

1.2 API

Le API seguenti sono disponibili con il servizio di registrazione UP globale per la registrazione delle stampanti. URL di base del servizio di registrazione UP globale:https://register.print.microsoft.com

L'URL completo sarà la combinazione dell'URL di base globale e degli endpoint seguenti.

1.2.1 /register

L'endpoint /register viene usato per registrare una stampante. Sono disponibili 2 fasi per la registrazione.

  1. Chiamata di registrazione iniziale per registrare la stampante

  2. Stato di registrazione del polling per il completamento della richiesta di registrazione

1.2.1.1 Avvio della registrazione

La prima fase consiste nell'avviare una richiesta di registrazione con il servizio di registrazione globale. Questa operazione viene eseguita inviando una richiesta POST all'endpoint /register con il payload di registrazione in formato JSON.

1.2.1.1.1 Richiesta HTTP
POST /api/{version}/register

{version} è la versione dell'API/protocollo di registrazione UP usata dalla stampante. Le versioni attualmente supportate sono:

  • v1.0
1.2.1.1.2 Intestazioni di richiesta

Per v1.0:

Nome Descrizione
Autorizzazione Connessione {token} obbligatoria. La stampante deve accedere all'amministratore di Microsoft Entra ID, seguendo il flusso del codice del dispositivo o un altro flusso di autorizzazione.
1.2.1.1.3 Tipo di contenuto della richiesta
  • application/json
1.2.1.1.4 Payload della richiesta

Il payload della richiesta di registrazione sarà in formato JSON con i valori seguenti (con distinzione tra maiuscole e minuscole):

Nome valore Tipo di valore Descrizione Richiesto
name string Nome descrittivo della stampante.
manufacturer string Produttore della stampante.
modello string Modello della stampante.
device_id string UUID dispositivo fisico della stampante.
device_type string Tipo di dispositivo. Valori supportati (senza virgolette): "stampante"
certificate_request Oggetto DeviceCertRequest Richiesta di firma del certificato X.509 per il certificato creato e usato dalla stampante per identificarsi. Fare riferimento all'Appendice A.1 per un esempio di codifica su come creare una richiesta di firma del certificato con la libreria BouncyCastle .NET.

L'oggetto DeviceCertRequest ha i valori seguenti (con distinzione tra maiuscole e minuscole):

Nome valore Tipo di valore Descrizione Richiesto
type string Proprietà che DEVE contenere "pkcs10".
data string Proprietà che contiene una richiesta di certificato PKCS#10 con codifica Base64 RFC4211. La richiesta di certificato DEVE usare un algoritmo di chiave pubblica RSA con una chiave a 2048 bit, un algoritmo di firma SHA256WithRSAEncryption e un algoritmo hash SHA256.
transport_key string Parte pubblica con codifica Base64 di una chiave asimmetrica generata dal client.
1.2.1.1.5 Risposta riuscita

In caso di esito positivo (202 Accettato), il payload della risposta di registrazione sarà in formato JSON con i valori seguenti (con distinzione tra maiuscole e minuscole):

Nome valore Tipo di valore Descrizione Richiesto
registration_id string ID univoco che rappresenta questa richiesta di registrazione. Questa operazione verrà usata durante il polling dello stato di registrazione.
interval integer Intervallo di polling (in secondi) per verificare il completamento della richiesta di registrazione.
1.2.1.1.6 Risposta errore

In caso di errore, verranno restituiti i codici di stato HTTP seguenti insieme a un payload di risposta di errore. Il payload della risposta di errore conterrà un oggetto JSON di errore seguendo il formato nella sezione 2.

Codici di stato HTTP

Codice di stato HTTP Descrizione
400 (Richiesta non valida) La richiesta non è valida o non è valida. Per informazioni dettagliate, vedere payload della risposta agli errori. Correggere e inviare nuovamente la richiesta.
500 (errore interno del server) Si è verificato un errore interno nel servizio. Per informazioni dettagliate, vedere payload della risposta agli errori. Riprovare la richiesta (se possibile, retry_timeout verrà impostata).

Codici errore

Codici di errore Descrizione Codice di stato HTTP
invalid_request Il payload della richiesta di registrazione non è valido o non è valido. Questo problema si verifica in genere durante le fasi di sviluppo. Per altri dettagli, vedere error_description. 400
device_code_error Il servizio non è riuscito a generare una coppia device/user code. 500
storage_error Il servizio ha riscontrato un errore con Archiviazione back-end. 500
service_error Si è verificato un errore nel servizio. Per altri dettagli, vedere error_description. 500
1.2.1.1.7 Esempi
1.2.1.1.7.5 Richiesta v1.0
POST https://register.print.microsoft.com/api/v1.0/register HTTP/1.1
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
Accept-Encoding: gzip, deflate
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IkZ6U3pHTVZ1a0U2Nm9EQnpwR0JUY2NBMlVRYyIsImtpZCI6IkZ6U3pHTVZ1a0U2Nm9EQnpwR0JUY2NBMlVRYyJ9.eyJhdWQiOiJodHRwczovL3ByaW50LnByaW50LXBwZS5taWNyb3NvZnQuY29tIiwiaXNzIjoiaHR0cHM6Ly9zdHMud2luZG93cy1wcGUubmV0LzIwZGY5NTlmLWE0OTItNGU3NC05N2E3LTE0YWJiM2ZlZjFkYi8iLCJpYXQiOjE1NjE2NzUxNjYsIm5iZiI6MTU2MTY3NTE2NiwiZXhwIjoxNTYxNjc5MDY2LCJhY3IiOiIxIiwiYWlvIjoiNDJOZ1lOQXNYbUtTSHZSM3Jvcjd2RVdMMWtmc0NMUi93R085cjYzMGl2T1RLWlVoV1ZzQSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiI0MTdhZTZlYi1hYWM4LTQyYzgtOTAwYy0wZTUwZGViYmE2ODgiLCJhcHBpZGFjciI6IjAiLCJmYW1pbHlfbmFtZSI6IlN0YWdlciIsImdpdmVuX25hbWUiOiJNYWRlbGluZSIsImdyb3VwcyI6WyI1YjljNGVkMS0yMWUyLTRkNzktYjE0Zi1mMzYyMTI5ODcyYjIiXSwiaXBhZGRyIjoiMTMxLjEwNy4xNTkuMjAiLCJuYW1lIjoiTWFkZWxpbmUgU3RhZ2VyIiwib2lkIjoiYzJmMjg2NDctMWQ4ZS00YTdhLWIzZjctZjU4YmQ3ODYxODk4IiwicHVpZCI6IjEwMDM0MDAwMDA2OEJFQzgiLCJzY3AiOiJzYW1wbGVzLnJlYWQgc2FtcGxlcy53cml0ZSIsInN1YiI6IlR6b2hRcmNzTHNjNUNHR09hWndxa1ZiajhaSkh4MnB1dzdpcWhWVXFWRGsiLCJ0ZW5hbnRfY3RyeSI6IlVTIiwidGlkIjoiMjBkZjk1OWYtYTQ5Mi00ZTc0LTk3YTctMTRhYmIzZmVmMWRiIiwidW5pcXVlX25hbWUiOiJtYXN0YWdlckBjbG91ZHByaW50cHBlLmNjc2N0cC5uZXQiLCJ1cG4iOiJtYXN0YWdlckBjbG91ZHByaW50cHBlLmNjc2N0cC5uZXQiLCJ1dGkiOiJlal84QlAtLW1rZWNNWjdncFJNR0FBIiwidmVyIjoiMS4wIiwid2lkcyI6WyI2MmU5MDM5NC02OWY1LTQyMzctOTE5MC0wMTIxNzcxNDVlMTAiXX0.e1RpyZDQzqlV11uyRXWRmaqf6wk2mg763muoIiMG2Qq8DW221Rg91cLP5px6KSfhpd7nv-Ln_KUFsZ4IlJqfmsrfCL_vgKHjYQuRDv2BY8-vrIqUC_5XVA_sj2Ib7iT7SjDYyMv6QDZM2rf7kVggvRuaZihUxxGZWby84EXD8KKAYfAQGo3r6AceuSDJOvToMy-Kp-MEqRuzExZdq2p1_qRIBtHe8Its4xuR8ZHEVqWnY0Y_qeVA8uxl3mQxZSvH8BVYn4Bdy_VZcNtrNKt3YpHFzG4kgy5V6wGLecRI7IBzYd4uK_FwpaYXHpkrSbO0ATEX3tjrgPnHbicA053Ilw
Content-Length: 1600

{
  "name": "Test Printer",
  "manufacturer": "Test Manufacturer",
  "model": "Test Model",
  "device_type": "printer",
  "device_id": "a188d9e8-8daa-44c9-862b-d6202bcf1b68",
  "certificate_request":
  {
    "type": "pkcs10",
    "data": "MIICpDCCAYwCAQAwYTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCldhc2hpbmd0b24xEDAOBgNVBAcMB1JlZG1vbmQxFzAVBgNVBAoMDk1pY3Jvc29mdCBDb3JwMRIwEAYDVQQDDAlNaWNyb3NvZnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDJ1xUdFKBlFdS9dHqSrD7YS0ZJ6MgcYy5wI3P0wOWrDi28OCBLbt6HBg02KDh1MlmVrfIR2O6WWeJ59M63JuwEn2e2WoGnIb/M6NyANyBBmgZ3bjp39UJHbXtYYXm/VJrPcOLM09dST7KR1zAcD2J+rnK8ZVUtYuTl58D7R6zsrYshw5CwxfLYPXeXwiSoKhtEC8Xn1lz3mi5B2SdsFHdjaQb6E0tCG5zdrVzzhCEVPaoo4e9SCTB9jDNulTU1ZkHzGBk+UzlKv4APsclyGCTEgA01T6/ueBrVeKY9d4DYfz/pu4sm0Vf1E+2hggtwbBOP60sFtkfnKiwtVoDF1KC9AgMBAAEwDQYJKoZIhvcNAQELBQADggEBACdggPBJ5MoJJ3QjVYDypuJGWDVWBT0G4pXNZHNz5Q4OVDze7aCw3Sl78Qdzy++XsrSXjtyZyEb+A5R36YKTpzRBCHSOWyZkZKpxj0Uo8/+RzjzJ1uvtwfhelfQ6EVktFsz6a2hixcaa47bN/bjj9stJbbRsxjJwR1K5YI/i+9DaUE7r7VDXiknQ7/ZyEYquAqY/O/LEnFOGhkSvkLlFPTbnJ7fzURyNnQhmp8p3DMj5dXYgKfWPxViqvJChx8pJf9zM4TjzaTZIj08tSOp2LtWGeMNkFgYJH4URe3t4OPx5crkKj8i5aIW1Ulb8ezJLW1IU7W8hF71ooZWFTOsAnjQ=",
    "transport_key":"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAydcVHRSgZRXUvXR6kqw+2EtGSejIHGMucCNz9MDlqw4tvDggS27ehwYNNig4dTJZla3yEdjullniefTOtybsBJ9ntlqBpyG/zOjcgDcgQZoGd246d/VCR217WGF5v1Saz3DizNPXUk+ykdcwHA9ifq5yvGVVLWLk5efA+0es7K2LIcOQsMXy2D13l8IkqCobRAvF59Zc95ouQdknbBR3Y2kG+hNLQhuc3a1c84QhFT2qKOHvUgkwfYwzbpU1NWZB8xgZPlM5Sr+AD7HJchgkxIANNU+v7nga1XimPXeA2H8/6buLJtFX9RPtoYILcGwTj+tLBbZH5yosLVaAxdSgvQIDAQAB"
  }
}
1.2.1.1.7.6 Risposta v1.0
HTTP/1.1 202 Accepted
Date: Thu, 27 Jun 2019 22:47:34 GMT
Content-Type: application/json; charset=utf-8
Transfer-Encoding: chunked

{
  "registration_id": "fbbd6371-7e88-4881-8818-8d2ea2e8fe88",
  "interval": 5
}
1.2.1.2 Ottenere lo stato di registrazione

Dopo che la richiesta di registrazione è stata accettata correttamente, la stampante eseguirà il polling dell'endpoint /register per lo stato della richiesta di registrazione. La stampante deve eseguire il polling in base al valore di intervallo ricevuto nella risposta di registrazione e deve fornire il registration_id ricevuto.

1.2.1.2.1 Richiesta HTTP
GET /api/{version}/register?{Query Parameters}

{version} è la versione dell'API/protocollo di registrazione UP usata dalla stampante.
Le versioni attualmente supportate sono:

  • v1.0

{Query Parameters} vengono specificati nella sezione successiva.

1.2.1.2.2 Intestazioni di richiesta

Per v1.0:

Nome Descrizione
Autorizzazione Connessione {token} obbligatoria. La stampante deve accedere all'amministratore di Microsoft Entra ID o seguire il flusso del codice del dispositivo. È possibile usare lo stesso token acquisito per la prima richiesta di registrazione.
1.2.1.2.3 Parametri di query di richiesta
Nome parametro Descrizione Richiesto
registration_id ID di registrazione ricevuto dalla risposta della richiesta di registrazione.
1.2.1.2.4 Risposte riuscite

I codici di stato HTTP seguenti verranno restituiti per gli scenari di "esito positivo" seguenti:

Codice di stato HTTP Fase di registrazione
200 (OK) Registrazione completata
202 (Accettato) Registrazione in corso - Effettuare un'altra richiesta dopo il superamento dell'intervallo

Payload di risposta

Registrazione in corso (202 accettato):

Il payload della risposta di registrazione sarà in formato JSON con i valori seguenti (con distinzione tra maiuscole e minuscole):

Nome valore Tipo di valore Descrizione Richiesto
interval integer Intervallo di polling (in secondi) per verificare il completamento della richiesta di registrazione. Si noti che l'intervallo di polling non sarà necessario ogni volta.

Registrazione completata (200 OK):

Il payload della risposta di registrazione sarà in formato JSON con i valori seguenti (con distinzione tra maiuscole e minuscole):

Nome valore Tipo di valore Descrizione Richiesto
cloud_device_id string UUID della stampante nel cloud rappresentato dalla stampante.
certificato string Certificato X.509 con codifica Base64.
print_svc_url string URL del servizio Stampa universale (UP) che gestisce le operazioni della stampante.
notification_url string URL che deve essere utilizzato dalla stampante per ascoltare le notifiche (nuovo processo di stampa, annulla processo di stampa e così via).
mcp_svc_resource_id string ID risorsa del servizio UP. Obbligatorio quando si richiede il token OAuth per la comunicazione con UP e UP Notification Services.
device_token_url string URL dell'autorità di token sicura (STA) che la stampante deve usare per ottenere i token per UP e UP Notification Services.
1.2.1.2.5 Risposta errore

In caso di errore, verranno restituiti i codici di stato HTTP seguenti insieme a un payload di risposta di errore. Il payload della risposta di errore conterrà un oggetto JSON di errore seguendo il formato nella sezione 2.

Codici di stato HTTP

Codice di stato HTTP Descrizione
400 (Richiesta non valida) La richiesta non è valida o non è valida. Per informazioni dettagliate, vedere payload della risposta agli errori. La registrazione deve essere avviata nuovamente.
500 (errore interno del server) Si è verificato un errore interno nel servizio. Per informazioni dettagliate, vedere payload della risposta agli errori. La registrazione deve essere avviata nuovamente.

Codici errore

Codici di errore Descrizione Codice di stato HTTP
invalid_registration_id L'ID di registrazione specificato non è valido. Ciò può verificarsi se l'ID di registrazione è stato archiviato in modo non corretto o se la registrazione della stampante non è stata completata entro il timeout di registrazione. La registrazione deve essere avviata nuovamente. 400
device_already_exists Il dispositivo registrato è già registrato. Il Amministrazione deve controllare il portale UP per verificare se il dispositivo registrato è presente. In caso affermativo, potrebbe trattarsi di una voce non aggiornata che il Amministrazione ha dimenticato di eliminare/annullare la registrazione. La registrazione deve essere avviata nuovamente. 400
user_token_error Il servizio non è riuscito a ottenere il token utente per eseguire la registrazione. La registrazione deve essere avviata nuovamente. 500
storage_error Il servizio ha riscontrato un errore con Archiviazione back-end. La registrazione deve essere avviata nuovamente. 500
service_error Si è verificato un errore nel servizio. Per altri dettagli, vedere error_description. La registrazione deve essere avviata nuovamente. 500
1.2.1.2.6 Esempi
1.2.1.2.6.3 Richiesta v1.0
GET https://register.print.microsoft.com/api/v1.0/register?registration_id=bb86db79-2918-
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6IkZ6U3pHTVZ1a0U2Nm9EQnpwR0JUY2NBMlVRYyIsImtpZCI6IkZ6U3pHTVZ1a0U2Nm9EQnpwR0JUY2NBMlVRYyJ9.eyJhdWQiOiJodHRwczovL3ByaW50LnByaW50LXBwZS5taWNyb3NvZnQuY29tIiwiaXNzIjoiaHR0cHM6Ly9zdHMud2luZG93cy1wcGUubmV0LzIwZGY5NTlmLWE0OTItNGU3NC05N2E3LTE0YWJiM2ZlZjFkYi8iLCJpYXQiOjE1NjE2NzUxNjYsIm5iZiI6MTU2MTY3NTE2NiwiZXhwIjoxNTYxNjc5MDY2LCJhY3IiOiIxIiwiYWlvIjoiNDJOZ1lOQXNYbUtTSHZSM3Jvcjd2RVdMMWtmc0NMUi93R085cjYzMGl2T1RLWlVoV1ZzQSIsImFtciI6WyJwd2QiXSwiYXBwaWQiOiI0MTdhZTZlYi1hYWM4LTQyYzgtOTAwYy0wZTUwZGViYmE2ODgiLCJhcHBpZGFjciI6IjAiLCJmYW1pbHlfbmFtZSI6IlN0YWdlciIsImdpdmVuX25hbWUiOiJNYWRlbGluZSIsImdyb3VwcyI6WyI1YjljNGVkMS0yMWUyLTRkNzktYjE0Zi1mMzYyMTI5ODcyYjIiXSwiaXBhZGRyIjoiMTMxLjEwNy4xNTkuMjAiLCJuYW1lIjoiTWFkZWxpbmUgU3RhZ2VyIiwib2lkIjoiYzJmMjg2NDctMWQ4ZS00YTdhLWIzZjctZjU4YmQ3ODYxODk4IiwicHVpZCI6IjEwMDM0MDAwMDA2OEJFQzgiLCJzY3AiOiJzYW1wbGVzLnJlYWQgc2FtcGxlcy53cml0ZSIsInN1YiI6IlR6b2hRcmNzTHNjNUNHR09hWndxa1ZiajhaSkh4MnB1dzdpcWhWVXFWRGsiLCJ0ZW5hbnRfY3RyeSI6IlVTIiwidGlkIjoiMjBkZjk1OWYtYTQ5Mi00ZTc0LTk3YTctMTRhYmIzZmVmMWRiIiwidW5pcXVlX25hbWUiOiJtYXN0YWdlckBjbG91ZHByaW50cHBlLmNjc2N0cC5uZXQiLCJ1cG4iOiJtYXN0YWdlckBjbG91ZHByaW50cHBlLmNjc2N0cC5uZXQiLCJ1dGkiOiJlal84QlAtLW1rZWNNWjdncFJNR0FBIiwidmVyIjoiMS4wIiwid2lkcyI6WyI2MmU5MDM5NC02OWY1LTQyMzctOTE5MC0wMTIxNzcxNDVlMTAiXX0.e1RpyZDQzqlV11uyRXWRmaqf6wk2mg763muoIiMG2Qq8DW221Rg91cLP5px6KSfhpd7nv-Ln_KUFsZ4IlJqfmsrfCL_vgKHjYQuRDv2BY8-vrIqUC_5XVA_sj2Ib7iT7SjDYyMv6QDZM2rf7kVggvRuaZihUxxGZWby84EXD8KKAYfAQGo3r6AceuSDJOvToMy-Kp-MEqRuzExZdq2p1_qRIBtHe8Its4xuR8ZHEVqWnY0Y_qeVA8uxl3mQxZSvH8BVYn4Bdy_VZcNtrNKt3YpHFzG4kgy5V6wGLecRI7IBzYd4uK_FwpaYXHpkrSbO0ATEX3tjrgPnHbicA053Ilw
Host: register.print.microsoft.com
1.2.1.2.6.4 Risposta in corso v1.0
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Pragma: no-cache

{
  "interval": 15
}
1.2.1.2.6.7 Risposta completata v1.0
HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Content-Length: 267
Content-Type: application/json; charset=utf-8

{
  "cloud_device_id": "7c907b43-d8f0-4e42-a279-1e37eb4fd2bf",
  "certificate": "MIID8jCCAtqgAwIBAgIQR2Y15zkurJhCGxcaQ0d7tjANBgkqhkiG9w0BAQsFADB4MXYwEQYKCZImiZPyLGQBGRYDbmV0MBUGCgmSJomT8ixkARkWB3dpbmRvd3MwHQYDVQQDExZNUy1Pcmdhbml6YXRpb24tQWNjZXNzMCsGA1UECxMkODJkYmFjYTQtM2U4MS00NmNhLTljNzMtMDk1MGMxZWFjYTk3MB4XDTE4MDExOTAwNTIxM1oXDTI4MDExOTAxMjIxM1owLzEtMCsGA1UEAxMkZjVlYjVmNWUtMDYyNC00YTNiLThmZjItNjQ5ZTAyM2ZiNzJkMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApQc0Twp+vlT5Vc74zLoXbrufcIKnoW980OWFKHf7lRlRqjj9MWpea99j+3K8JQSoifXJvS5QzyjXrH9phsrfX84I258y6dM/aUadLYYKjO38wx9c1vQppZi1P3LcDaJiXPgNQ8omWCtDNoVwQlTUmB9Pq6h+V6S4P59Mq9cem6yEE7pu4DLqLSB68jexvLQnuGDfn6PsVUC3ML21zDmAr3QDikiZDe9Iy03IRrXvl6obj5QZtkGFbK9ueArFcWpymsEK
  FfVhrKL7ca/rAEFHsHacJYHkJNMw3Qzs0yMYZRsH/fS+eBebvQWUEujQ+BX8xZQX48ukwtC8R37RsqrLjwIDAQABo4HAMIG9MAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwIwIgYLKoZIhvcUAQWCHAIEEwSBEF5f6/UkBjtKj/JkngI/ty0wIgYLKoZIhvcUAQWCHAMEEwSBEHXH6W+38IhBoi1uqlWcNhUwIgYLKoZIhvcUAQWCHAUEEwSBEAWT1qlxl5pLvXhzFTIfL2swFAYLKoZIhvcUAQWCHAgEBQSBAk5BMBMGCyqGSIb3FAEFghwHBAQEgQEwMA0GCSqGSIb3DQEBCwUAA4IBAQCXpFMa9DCgIIJTD3RlEyPN8WB/HgMkhLBqwtZugkmIn8D80ckuhrfa2jJfWkNxEfFXanjq9B4tAvkNt7vBXiYw+PKj8+CE5FgfUTNtIw3Q/06tnJBj20mz28ZNbdRUgXzxXiY7oZss54dbHH+7TFO9k9Pm1CuUOzLFX4LeC48wo/S6uN7JDeID6pQjcR00eYJ+gcD800AXBYXrqSreYhdtl1swcD71qgshELAo2qXu0kzuKj05GIB5SXFOoU+KhuB0LMuEZF5rsQPN4KcasGaAb/8MIORAxkYStNLQZQLYbDve/dUownbfruW/o3tnjJP0GA0gY/Ohv5ssgrCFsiBq",
  "print_svc_url": "https://print.print.microsoft.com/",
  "notification_url": "https://notification.print.microsoft.com/",
  "mcp_svc_resource_id":"https://print.print.microsoft.com",
  "device_token_url": "https://login.microsoftonline.com/common/oauth2/token"
}

1.2.1.3 Autenticazione

Prima di registrare la stampante, è necessario autenticare l'amministratore in Microsoft Entra ID, seguendo il flusso del codice del dispositivo o un altro flusso di autorizzazione. Il token di accesso amministratore della stampante ottenuto deve essere inviato nell'intestazione di autorizzazione della richiesta per registrare una stampante. La documentazione del codice del dispositivo e di altri flussi di autenticazione supportati da Microsoft Entra ID è disponibile in Flussi di autenticazione supportati.

1.2.1.3.1 Parametri del flusso di codice del dispositivo

La documentazione del supporto di Microsoft Entra ID del flusso di codice del dispositivo è disponibile in Flusso del codice del dispositivo OAuth 2.0. L'elenco client_id seguente è temporaneo. In futuro verranno fornite informazioni aggiuntive.

Nome parametro Descrizione Richiesto
tenant Usare "Organizations" per il parametro tenant.
client_id Usare registered client ID per il client_id. Altre informazioni in Registrazione del client OEM.
ambito Usare https://print.print.microsoft.com/.default per l'ambito
1.2.1.3.2 Richieste di flusso del codice del dispositivo di esempio
1.2.1.3.2.1 Avviare il flusso del codice del dispositivo

Richiesta:

POST https://login.microsoftonline.com/organizations/oauth2/v2.0/devicecode HTTP/1.1
Accept-Charset: utf-8
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Host: login.microsoftonline.com
Content-Length: 103
Expect: 100-continue
Connection: Keep-Alive

client_id=<registered_client_id>&scope=https%3A%2F%2Fprint.print.microsoft.com%2F.default

Risposta:

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Content-Length: 473

{
  "user_code": "FMTB7B3WR",
  "device_code": "FAQABAAEAAAAP0wLlqdLVToOpA4kwzSnx3SB1wjNptiBt5jFM8ePgJKGOjX-WOEksHYT3zgqz9VVg4MqY8J6Tej_rpniyj4WjOsVe-RCJuGexX-IwPKDK-df38P0zpLv5ktxSCflT_F-8Cbef6BRDpk0Qm-lPOhC4bcbtdIaM8yqf-cS962rGC9VdVNFVFStePppCDRcumjAgAA",
  "verification_uri": "https://microsoft.com/devicelogin",
  "expires_in": 900,
  "interval": 5,
  "message": "To sign in, use a web browser to open the page https://microsoft.com/devicelogin and enter the code FMTB7B3WR to authenticate."
}
1.2.1.3.2.2 Recupero del token utente

Richiesta:

POST https://login.microsoftonline.com/tenant/oauth2/v2.0/token HTTP/1.1
Accept-Charset: utf-8
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Host: login.microsoftonline.com
Content-Length: 289
Expect: 100-continue

grant_type=device_code&client_id=<registered_client_id>&device_code=FAQABAAEAAAAP0wLlqdLVToOpA4kwzSnx3SB1wjNptiBt5jFM8ePgJKGOjX-WOEksHYT3zgqz9VVg4MqY8J6Tej_rpniyj4WjOsVe-RCJuGexX-IwPKDK-df38P0zpLv5ktxSCflT_F-8Cbef6BRDpk0Qm-lPOhC4bcbtdIaM8yqf-cS962rGC9VdVNFVFStePppCDRcumjAgAA

Risposta: authorization_pending, l'utente non ha ancora eseguito l'accesso.

HTTP/1.1 400 Bad Request
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Content-Length: 469

{
  "error": "authorization_pending",
  "error_description": "AADSTS70016: Pending end-user authorization.\r\nTrace ID: 60997c8b-15ed-4d12-99b6-6da879fd1400\r\nCorrelation ID: 7300aba9-1698-4a4e-b6dd-66459a828108\r\nTimestamp: 2019-09-26 23:13:43Z",
  "error_codes": [70016],
  "timestamp": "2019-09-26 23:13:43Z",
  "trace_id": "60997c8b-15ed-4d12-99b6-6da879fd1400",
  "correlation_id": "7300aba9-1698-4a4e-b6dd-66459a828108",
  "error_uri": https://login.microsoftonline.com/error?code=70016
}

Risposta: success, l'utente ha eseguito l'accesso, viene restituito il token. Questo token può essere usato nell'intestazione di autorizzazione richiesta (descritta nella sezione 1.2.1.1.2) quando si invia una richiesta per registrare una stampante con Stampa universale.

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Expires: -1
Content-Length: 1763

{
  "token_type": "Bearer",
  "scope": "https://print.print.microsoft.com/Print.Device https://print.print.microsoft.com/.default",
  "expires_in": 3599,
  "ext_expires_in": 3599,
  "access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImFQY3R3X29kdlJPb0VOZzNWb09sSWgydGlFcyIsImtpZCI6ImFQY3R3X29kdlJPb0VOZzNWb09sSWgydGlFcyJ9.eyJhdWQiOiJodHRwczovL3ByaW50LnByaW50Lm1pY3Jvc29mdC5jb20iLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC9mMGQ4ODMyMy04OGY2LTQ4MTMtOGI0ZC05NGVjNjdlNjA3YmQvIiwiaWF0IjoxNTY5NTM5Mzc3LCJuYmYiOjE1Njk1MzkzNzcsImV4cCI6MTU2OTU0MzI3NywiYWNyIjoiMSIsImFpbyI6IkFTUUEyLzhNQUFBQVA1U1NzTklCYXRVQ2UxSGZXaEdvNHhqbUM4b2RCckNpeDNaN0dyZWJUMEE9IiwiYW1yIjpbInB3ZCJdLCJhcHBpZCI6IjQxN2FlNmViLWFhYzgtNDJjOC05MDBjLTBlNTBkZWJiYTY4OCIsImFwcGlkYWNyIjoiMCIsImdyb3VwcyI6WyIzMjVhNDljOS1mNjQ0LTQxNjEtODdmZS1kZTQ5ZGEyNDhjZTkiXSwiaXBhZGRyIjoiMTY3LjIyMC4yLjE4IiwibmFtZSI6Ik1hZGVsaW5lIFN0YWdlciIsIm9pZCI6ImIzZTE1ODM0LTAxZmUtNDIwNi05MjkwLTk5OTNiMzM1MWM2MSIsInB1aWQiOiIxMDAzN0ZGRUFDRjVBNUE1Iiwic2NwIjoiUHJpbnQuRGV2aWNlIiwic3ViIjoiN2hhQzVjdEZlYjZPVHBsMHROUDJmRDJVY3pWTFRjbTZlNkQ1eEZkOEpvYyIsInRlbmFudF9jdHJ5IjoiVVMiLCJ0aWQiOiJmMGQ4ODMyMy04OGY2LTQ4MTMtOGI0ZC05NGVjNjdlNjA3YmQiLCJ1bmlxdWVfbmFtZSI6Im1hc3RhZ2VyQGNsb3VkcHJpbnRwcm9kdWN0aW9uLm9ubWljcm9zb2Z0LmNvbSIsInVwbiI6Im1hc3RhZ2VyQGNsb3VkcHJpbnRwcm9kdWN0aW9uLm9ubWljcm9zb2Z0LmNvbSIsInV0aSI6Inp2N2EtdGRrR0VHQkFSMl9zWU1UQUEiLCJ2ZXIiOiIxLjAiLCJ3aWRzIjpbIjYyZTkwMzk0LTY5ZjUtNDIzNy05MTkwLTAxMjE3NzE0NWUxMCJdfQ.Nfz82GPdQUx6py2xwhVhI4hvpbLTdaaDSVFnGx4Eb3CeJHcQvCmmKoB9Lze7YITcEcLdxUkGEQGEXSh6M3yDrNP_hsoIROdWhe6RDjbYVPmJUL319lL4eNtQTJq8bKcJVbeM5SamlY1mBIhxH_sjL4TX0NN2RnDIuF_L1NSRW0IaHoZxzf257y0n7BqPROl3VpQ97wA8P-hhVBbfwwB9i-sLbsoCVszuE9JnHpgJPm6h9FDL9Px57ddTMZDvJchxOL5gUTA76gdRqUUzLROCMlz0R7vTJotl2RQnrzZBoNNoM9iJHL2KqQKuuezHEro1453lSRASiBkZHHEOFglzSg"
}

2. Struttura della risposta di errore

Per le API precedenti, in caso di errore, la struttura di errore seguente verrà restituita nel payload in formato JSON con i valori seguenti (con distinzione tra maiuscole e minuscole). Queste risposte di errore sono principalmente a scopo di sviluppo e spetta allo sviluppatore cosa mostrare all'utente, se qualcosa.

Nome valore Tipo di valore Descrizione Richiesto
Errore string Stringa di codice di errore utilizzata per classificare il tipo di errore che si è verificato.
error_description string Messaggio di errore specifico che consente di identificare la causa radice dell'errore. No
error_code integer Codice di errore aggiuntivo che consente di diagnosticare il problema. No
http_status_code integer Codice di stato HTTP restituito con questa risposta di errore. No
retry_timeout integer Numero di secondi di attesa della stampante prima di ripetere la richiesta. No

Ogni API precedente elenca le possibili stringhe di codice di errore.

2.1 Risposta di esempio

{
  "error": "invalid_request",
  "error_description": "Missing required field device_type"
}

Connessione ivity with Universal Print service after printer registration

Universal Print supporta la funzionalità richiesta definita in PWG 5100.18 (IPP Infra). Le stampanti pronte per la stampa universale devono usare questo protocollo per comunicare con Stampa universale dopo aver completato il processo di registrazione della stampante. Per garantire che il chiamante sia una stampante con accesso, la stampante userà il token di accesso del dispositivo, come descritto in Recupero token di accesso alla stampante, come valore di connessione per l'intestazione HTTP Authorization .