Universal Print (UP) Printerregistratie
1. Registratie
1.1 Stroom
1.2 API's
De volgende API's zijn beschikbaar bij de Global UP Registration Service voor het registreren van printers.
Algemene BASIS-URL voor UP-registratieservice: https://register.print.microsoft.com
De volledige URL is de combinatie van de algemene basis-URL en de eindpunten hieronder.
1.2.1 /register
Het eindpunt /register wordt gebruikt om een printer te registreren. Er zijn twee fasen voor registratie.
Initiële registratieoproep om de printer te registreren
De registratiestatus peilen voor voltooiing van de registratieaanvraag
1.2.1.1 Initiërende registratie
De eerste fase is het initiëren van een registratieaanvraag met de globale registratieservice. Dit wordt gedaan door een POST-aanvraag uit te geven aan het /register-eindpunt met de nettolading van de registratie in JSON-indeling.
1.2.1.1.1 HTTP-aanvraag
POST /api/{version}/register
{version}
is de versie van de UP Registration API/protocol die door de printer wordt gebruikt.
Momenteel ondersteunde versies zijn:
- v1.0
1.2.1.1.2 Aanvraagheaders
Voor v1.0:
Name | Beschrijving |
---|---|
Autorisatie | Bearer {token} vereist. De printer moet de beheerder aanmelden bij Microsoft Entra ID door de apparaatcodestroom of een andere autorisatiestroom te volgen. |
1.2.1.1.3 Inhoudstype aanvragen
application/json
1.2.1.1.4 Nettolading aanvraag
De nettolading van de registratieaanvraag heeft de JSON-indeling met de volgende waarden (hoofdlettergevoelig):
Waardenaam | Waardetype | Beschrijving | Vereist |
---|---|---|---|
naam | tekenreeks | De beschrijvende naam van de printer. | Ja |
fabrikant | tekenreeks | De fabrikant van de printer. | Ja |
model | tekenreeks | Het model van de printer. | Ja |
device_id | tekenreeks | De UUID van het fysieke apparaat van de printer. | Ja |
device_type | tekenreeks | Het type apparaat. Ondersteunde waarden (zonder aanhalingstekens): "printer" | Ja |
certificate_request | DeviceCertRequest-object | De X.509 Certificate Signing Request (CSR) voor het certificaat dat door de printer is gemaakt en gebruikt om zichzelf te identificeren. Raadpleeg bijlage A.1 voor een codevoorbeeld over het maken van een CSR met BouncyCastle .NET-bibliotheek. | Ja |
Het object DeviceCertRequest heeft de volgende waarden (hoofdlettergevoelig):
Waardenaam | Waardetype | Beschrijving | Vereist |
---|---|---|---|
type | tekenreeks | Een eigenschap die pkcs10 moet bevatten. | Ja |
gegevens | tekenreeks | Een eigenschap die een PKCS#10-certificaataanvraag met base64-codering bevat RFC4211. De certificaataanvraag MOET een algoritme voor openbare RSA-sleutels gebruiken met een 2048-bits sleutel, een SHA256WithRSAEncryption-handtekeningalgoritme en een SHA256-hashalgoritme. | Ja |
transport_key | tekenreeks | Het met base64 gecodeerde openbare gedeelte van een asymmetrische sleutel die door de client wordt gegenereerd. | Ja |
1.2.1.1.5 Geslaagd antwoord
Bij succes (202 Geaccepteerd) heeft de nettolading van het registratieantwoord een JSON-indeling met de volgende waarden (hoofdlettergevoelig):
Waardenaam | Waardetype | Beschrijving | Vereist |
---|---|---|---|
registration_id | tekenreeks | De unieke id die deze registratieaanvraag vertegenwoordigt. Dit wordt gebruikt bij het peilen naar de registratiestatus. | Ja |
interval | geheel getal | Polling-intervaltijd (in seconden) om te controleren of de registratieaanvraag is voltooid. | Ja |
1.2.1.1.6 Foutreactie
Bij een fout worden de volgende HTTP-statuscodes geretourneerd, samen met een nettolading van het foutbericht. De nettolading van het foutantwoord bevat een JSON-foutobject volgens de indeling in sectie 2.
HTTP-statuscodes
HTTP-statuscode | Beschrijving |
---|---|
400 (Foute aanvraag) | De aanvraag is ongeldig of onjuist. Zie nettolading voor foutreacties voor meer informatie. Corrigeer de aanvraag en verzend deze opnieuw. |
500 (interne serverfout) | Er is een interne fout opgetreden in de service. Zie nettolading voor foutreacties voor meer informatie. Voer de aanvraag opnieuw uit (indien mogelijk wordt retry_timeout ingesteld). |
Foutcodes
Foutcodes | Beschrijving | HTTP-statuscode |
---|---|---|
invalid_request | De nettolading van de registratieaanvraag is ongeldig/ongeldig. Dit gebeurt meestal tijdens ontwikkelingsfasen. Zie error_description voor meer informatie. | 400 |
device_code_error | De service kan geen apparaat-/gebruikerscodepaar genereren. | 500 |
storage_error | Er is een fout opgetreden in de service met back-endopslag. | 500 |
service_error | Er is een fout opgetreden in de service. Zie error_description voor meer informatie. | 500 |
1.2.1.1.7 Voorbeelden
1.2.1.1.7.5 Aanvraag 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 Antwoord 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 Registratiestatus ophalen
Nadat de registratieaanvraag is geaccepteerd, controleert de printer het /register
eindpunt op de status van de registratieaanvraag. De printer moet pollen op basis van de intervalwaarde die is ontvangen in het registratieantwoord en moet de registration_id
ontvangen waarde opgeven.
1.2.1.2.1 HTTP-aanvraag
GET /api/{version}/register?{Query Parameters}
{version}
is de versie van de UP Registration API/protocol die door de printer wordt gebruikt.
Momenteel ondersteunde versies zijn:
- v1.0
{Query Parameters}
worden opgegeven in de volgende sectie.
1.2.1.2.2 Aanvraagheaders
Voor v1.0:
Name | Beschrijving |
---|---|
Autorisatie | Bearer {token} vereist. De printer moet de beheerder aanmelden bij Microsoft Entra ID of de apparaatcodestroom volgen. Hetzelfde token dat is verkregen voor de eerste registratieaanvraag kan worden gebruikt. |
1.2.1.2.3 Queryparameters aanvragen
Parameternaam | Beschrijving | Vereist |
---|---|---|
registration_id | De registratie-id die is ontvangen van het antwoord van de registratieaanvraag. | Ja |
1.2.1.2.4 Geslaagde antwoorden
De volgende HTTP-statuscodes worden geretourneerd voor de volgende geslaagde scenario's:
HTTP-statuscode | Registratiefase |
---|---|
200 (OK) | Registratie voltooid |
202 (Geaccepteerd) | Registratie wordt uitgevoerd- Voer een andere aanvraag uit nadat de intervaltijd is verstreken |
Nettoladingen van antwoorden
Registratie wordt uitgevoerd (202 geaccepteerd):
De nettolading van het registratieantwoord heeft de JSON-indeling met de volgende waarden (hoofdlettergevoelig):
Waardenaam | Waardetype | Beschrijving | Vereist |
---|---|---|---|
interval | geheel getal | Polling-intervaltijd (in seconden) om te controleren of de registratieaanvraag is voltooid. Let op: de tijd van het polling-interval hoeft niet telkens hetzelfde te zijn. | Ja |
Registratie voltooid (200 OK):
De nettolading van het registratieantwoord heeft de JSON-indeling met de volgende waarden (hoofdlettergevoelig):
Waardenaam | Waardetype | Beschrijving | Vereist |
---|---|---|---|
cloud_device_id | tekenreeks | De UUID van de printer in de cloud die deze printer vertegenwoordigt. | Ja |
certificaat | tekenreeks | Base64-gecodeerd ondertekend X.509-certificaat. | Ja |
print_svc_url | tekenreeks | De URL naar de UP-service (Universal Print) die printerbewerkingen afhandelt. | Ja |
notification_url | tekenreeks | De URL die door de printer moet worden gebruikt om te luisteren naar meldingen (nieuwe afdruktaak, afdruktaak annuleren, enzovoort). | Ja |
mcp_svc_resource_id | tekenreeks | De resource-id van de UP-service. Vereist bij het aanvragen van OAuth-token voor communicatie met de UP- en UP Notification Services. | Ja |
device_token_url | tekenreeks | De URL van de Secure Token Authority (STA) die de printer moet gebruiken om tokens op te halen voor de UP- en UP Notification Services. | Ja |
1.2.1.2.5 Foutreactie
Bij een fout worden de volgende HTTP-statuscodes geretourneerd, samen met een nettolading van het foutbericht. De nettolading van het foutantwoord bevat een JSON-foutobject volgens de indeling in sectie 2.
HTTP-statuscodes
HTTP-statuscode | Beschrijving |
---|---|
400 (Foute aanvraag) | De aanvraag is ongeldig of onjuist. Zie nettolading voor foutreacties voor meer informatie. Registratie moet opnieuw worden gestart. |
500 (interne serverfout) | Er is een interne fout opgetreden in de service. Zie nettolading voor foutreacties voor meer informatie. Registratie moet opnieuw worden gestart. |
Foutcodes
Foutcodes | Beschrijving | HTTP-statuscode |
---|---|---|
invalid_registration_id | De opgegeven registratie-id is ongeldig. Dit kan gebeuren als de registratie-id onjuist is opgeslagen of als de printerregistratie niet is voltooid binnen de time-out van de registratie. Registratie moet opnieuw worden gestart. | 400 |
device_already_exists | Het apparaat dat wordt geregistreerd, is al geregistreerd. De beheerder moet de UP-portal controleren om te zien of het apparaat dat wordt geregistreerd aanwezig is. Als dat zo is, kan het een verouderde vermelding zijn die de beheerder vergeten is om het register te verwijderen/ongedaan te maken. Registratie moet opnieuw worden gestart. | 400 |
user_token_error | De service kan het gebruikerstoken niet ophalen om registratie uit te voeren. Registratie moet opnieuw worden gestart. | 500 |
storage_error | Er is een fout opgetreden in de service met back-endopslag. Registratie moet opnieuw worden gestart. | 500 |
service_error | Er is een fout opgetreden in de service. Zie error_description voor meer informatie. Registratie moet opnieuw worden gestart. | 500 |
1.2.1.2.6 Voorbeelden
1.2.1.2.6.3 Aanvraag 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 In voortgangsreactie v1.0
HTTP/1.1 202 Accepted
Cache-Control: no-cache
Pragma: no-cache
{
"interval": 15
}
1.2.1.2.6.7 Voltooid antwoord 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-verificatie
Voordat u de printer registreert, moet u de beheerder verifiëren bij Microsoft Entra ID door de stroom Apparaatcode of een andere autorisatiestroom te volgen. Het verkregen toegangstoken van de printerbeheerder moet worden verzonden in de autorisatieheader van de aanvraag om een printer te registreren. Documentatie over apparaatcode en andere verificatiestromen die door Microsoft Entra ID worden ondersteund, vindt u in Ondersteunde verificatiestromen.
1.2.1.3.1 Parameters voor apparaatcodestroom
Documentatie over microsoft Entra ID-ondersteuning van de apparaatcodestroom vindt u in de OAuth 2.0-apparaatcodestroom. De client_id
onderstaande lijst is tijdelijk. We zullen in de nabije toekomst aanvullende informatie verstrekken.
Parameternaam | Beschrijving | Vereist |
---|---|---|
tenant | Gebruik 'Organisaties' voor de tenantparameter. | Ja |
client_id | Gebruik registered client ID deze voor de client_id. Aanvullende informatie bij het registreren van OEM-client. |
Ja |
bereik | Gebruiken https://print.print.microsoft.com/.default voor het bereik |
Ja |
1.2.1.3.2 Voorbeeld van stroomaanvragen voor apparaatcode
1.2.1.3.2.1 Start de apparaatcodestroom
Aanvraag:
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
Respons:
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 Het gebruikerstoken ophalen
Aanvraag:
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
Antwoord: authorization_pending
de gebruiker heeft zich nog niet aangemeld.
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
}
Antwoord: success
, gebruiker heeft aangemeld, token wordt geretourneerd. Dit token kan worden gebruikt in de vereiste autorisatieheader (beschreven in sectie 1.2.1.1.2) wanneer u een aanvraag verzendt om een printer te registreren bij Universal Print.
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. Structuur van foutreactie
Voor de bovenstaande API's wordt bij fout de volgende foutstructuur geretourneerd in de nettolading in JSON-indeling met de volgende waarden (hoofdlettergevoelig). Deze foutreacties zijn voornamelijk bedoeld voor ontwikkelingsdoeleinden en het is aan de ontwikkelaar om aan de gebruiker te tonen, indien van toepassing.
Waardenaam | Waardetype | Beschrijving | Vereist |
---|---|---|---|
error | tekenreeks | Een tekenreeks met foutcodes die wordt gebruikt om het type fout te classificeren dat is opgetreden. | Ja |
error_description | tekenreeks | Een specifiek foutbericht dat kan helpen de hoofdoorzaak van de fout te identificeren. | Nee |
code_fout | geheel getal | Aanvullende foutcode die kan helpen bij het vaststellen van het probleem. | Nee |
http_status_code | geheel getal | De HTTP-statuscode die is geretourneerd met deze foutreactie. | Nee |
retry_timeout | geheel getal | Het aantal seconden dat de printer moet wachten voordat de aanvraag opnieuw wordt uitgevoerd. | Nee |
Elke bovenstaande API vermeldt de mogelijke foutcodetekenreeksen.
2.1 Voorbeeldantwoord
{
"error": "invalid_request",
"error_description": "Missing required field device_type"
}
Connectiviteit met Universal Print-service na printerregistratie
Universal Print ondersteunt de vereiste functionaliteit die is gedefinieerd in PWG 5100.18 (IPP Infra). Printers die gereed zijn voor Universal Print zullen dit protocol naar verwachting gebruiken om met Universal Print te communiceren zodra het registratieproces van de printer is voltooid. Om ervoor te zorgen dat de beller een printer met toegang is, gebruikt de printer het toegangstoken van het apparaat, zoals beschreven in Het ophalen van tokens voor printertoegang, als de Bearer-waarde voor de HTTP-header Authorization
.