Universal Print (UP) Printerregistratie

1. Registratie

1.1 Stroom

Registration Flow

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.

  1. Initiële registratieoproep om de printer te registreren

  2. 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 Azure AD 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
name 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 Azure AD 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 Beheer 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 Beheer vergeten te verwijderen/te verwijderen. 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 Azure AD door de apparaatcodestroom 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 Azure AD worden ondersteund, vindt u in Ondersteunde verificatiestromen.

1.2.1.3.1 Parameters voor apparaatcodestroom

Documentatie over Azure AD-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
AD-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_pendingde 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"
}

Verbinding maken iviteit 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 .