Delen via


Universal Print (UP) Printer Access Token Ophalen

Belangrijk

De printer moet al zijn geregistreerd bij Universal Print om het toegangstoken op te halen.

Als u een toegangstoken wilt ophalen dat de printer vertegenwoordigt, moet de printer een JSON Web Token (JWT) genereren en ondertekenen met de persoonlijke sleutel van het certificaat.
De procedure is als volgt:

  1. Vraag een Nonce aan bij het apparaattokeneindpunt.
  2. Genereer een JWT van een apparaat met de juiste informatie en onderteken deze met de persoonlijke sleutel.
  3. Verzend een aanvraag naar het eindpunt van het apparaattoken met de JWT in de hoofdtekst.

1 Aanvraag van een nonce

Als u een nonce wilt aanvragen, verzendt u een POST-aanvraag naar het eindpunt van het apparaattoken met de hoofdtekst met een servervraag.

1.1 HTTP-aanvraag

POST {device_token_url}

{device_token_url} is de URL die is ontvangen van het geslaagde registratieantwoord.

1.2 Inhoudstype aanvragen

  • application/x-www-form-urlencoded

1.3 Nettolading aanvragen

  • grant_type=srv_challenge&windows_api_version=2.0

1.4 Geslaagd antwoord

Retourneert 200 OK en de Nonce in de nettolading van het antwoord in JSON-indeling met de volgende waarden (hoofdlettergevoelig):

Waardenaam Waardetype Beschrijving Vereist
Nonce tekenreeks De niet-tekenreeks die moet worden gebruikt met de tokenaanvraag. Ja

1.5 Voorbeelden

1.5.1 Aanvraag

POST https://login.microsoftonline.com/425a8e89-feb9-40d2-9fe5-07fb45419e4b/oauth2/token HTTP/1.1
Host: login.microsoftonline.com
Content-Length: 48

grant_type=srv_challenge&windows_api_version=2.0

1.5.2 Antwoord

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Type: text/html; charset=utf-8
Content-Length: 132
{
  "Nonce": "AQABAAAAAADX8GCi6Js6SK82TsD2Pb7rO4c24C6C31bER-HgavkQr-xx11qx0DFkaB6rfm-ikMj\_eUCSQ12bS4Id06ae1CUQjd8jN7xc4uGK-PA6Bj83HyAA"
}

2 Het apparaat JWT genereren

De gegenereerde apparaat-JWT bevat de informatie die de tokenprovider nodig heeft om een apparaattoegangstoken uit te geven aan de printer. In de volgende secties worden de gegevens beschreven die nodig zijn in de JWT-header, hoofdtekst en handtekening.

2.1 De JWT-header

De volgende JWT-headerparameters zijn nodig:

Waardenaam Waardetype Beschrijving Vereist
Alg tekenreeks Het algoritme voor de openbare sleutel dat wordt gebruikt om de openbare sleutel te genereren. Moet overeenkomen met de registratieaanvraaggegevens die 'RS256' moeten zijn. Ja
typt u tekenreeks De headerparameter van het type. Moet 'JWT' zijn. Ja
x5c tekenreeks De volledige hoofdtekst van het apparaatcertificaat (bevat alleen openbare sleutel). Dit is het certificaat dat wordt geretourneerd door het geslaagde registratieantwoord. Ja

2.2 De JWT Body

De volgende JWT-hoofdtekstparameters zijn nodig:

Waardenaam Waardetype Beschrijving Vereist
request_nonce tekenreeks De niet-waarde die is verkregen in sectie 1. Ja
grant_type tekenreeks De vaste letterlijke tekenreeks 'device_token' die aangeeft aan de server dat alleen een token van een apparaat nodig is. Ja
resource tekenreeks De doelgroep van het toegangstoken. Dit is de waarde 'mcp_svc_resource_id' die wordt geretourneerd door het geslaagde voltooide registratieantwoord. Bijvoorbeeld https://print.print.microsoft.com Ja
client_id tekenreeks De toepassings-id (client) van een geregistreerde Azure-toepassing met API-machtigingen voor Universal Print. Als u een Azure-toepassing met de juiste API-machtigingen wilt maken, raadpleegt u de registratie van de OEM-client-id. Ja
redirect_uri tekenreeks Een geconfigureerde omleidings-URI voor de geregistreerde Azure-toepassing gebruikt voor 'client_id' in deze sectie. Als u een omleidings-URI wilt configureren voor een geregistreerde Azure-toepassing volgt u de registratie van de OEM-client-id. Ja
iss tekenreeks De cloudapparaat-id die de printer heeft ontvangen van het geslaagde registratieantwoord. Ja

2.3 De JWT-handtekening

De JWT die is ondertekend door de persoonlijke sleutel van het apparaat, die wordt gebruikt om te bewijzen dat de aanvraag is uitgegeven vanaf het apparaat en niet opnieuw wordt afgespeeld vanuit een ander apparaat.

2.4 Voorbeeld gegenereerde JWT

{
  "alg": "RS256",
  "typ": "JWT",
  "x5c": "MIID8jCCAtqgAwIBAgIQtJE/zIv3C5JOPoIeezhfLzANBgkqhkiG9w0BAQsFADB4MXYwEQYKCZImiZPyLGQBGRYDbmV0MBUGCgmSJomT8ixkARkWB3dpbmRvd3MwHQYDVQQDExZNUy1Pcmdhbml6YXRpb24tQWNjZXNzMCsGA1UECxMkODJkYmFjYTQtM2U4MS00NmNhLTljNzMtMDk1MGMxZWFjYTk3MB4XDTE4MDUxMDAzMjUzMVoXDTI4MDUxMDAzNTUzMVowLzEtMCsGA1UEAxMkZTlhNjc1YTItYTdjNS00ZmU3LThlODMtZmUxZWZhZjgyZWM2MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjGw0ePNEZTNgDbTMMb+m8feCQY70yotozZnMFh5HehO2AvlaR1mZnAI+7rWd5pUdmPo83wGSchqj4cOsOQF699UEmZllDDpCMd9e/kkyFFQYVFBjLV67jUNyM5yDwCqSsNyTImuBQjpgOCoYt7nrsJ5nlaEiWB7HNMbPEJI8Szp9eMci/5j5ktRqU9SeWBUF7SIruaFKt5i7phTwx9ELJo554/yaQtJx5gZs1hpO/z9iLORu+13cj5aruvNZFnlyNyD7LNZ43J5biIIuqbFaUhCLBX70vuE/yhxkKjvyZwovP1PP5Bqc7ZLD6vIdh80bgJLd+xFKbL4OcD2DgxWI4QIDAQABo4HAMIG9MAwGA1UdEwEB/wQCMAAwFgYDVR0lAQH/BAwwCgYIKwYBBQUHAwIwIgYLKoZIhvcUAQWCHAIEEwSBEKJ1punFp+dPjoP+Hvr4LsYwIgYLKoZIhvcUAQWCHAMEEwSBEHlLkyG0XmRHoNfDVt0FSVQwIgYLKoZIhvcUAQWCHAUEEwSBEImOWkK5/tJAn+UH+0VBnkswFAYLKoZIhvcUAQWCHAgEBQSBAk5BMBMGCyqGSIb3FAEFghwHBAQEgQEwMA0GCSqGSIb3DQEBCwUAA4IBAQB3q4Ey9AijQmHy0S3+fy1PV7pXq6aMhAgF7HvzmEwdmnjSCfvUd+fPkZA3tGQ6gkGlJ3mI4wq0xBZfk6YEQLLSuvukCphzZitz2NnpeCYMYpT2L7G1+EsIMu5+Wz84S4IO57IMBSLMDmsLLP2bHq+w1VOYgS9cO7Vha/nR3Z542LnaRKINUpFedHAtffv2tOQLRCPWk20KP5LEpKuEcM/r5EHFH6beKFuYePpJ7/dhKH69cZFWRtqgaV7BHxeDVr/n3kyHbDv1rwTXIYHaM3qEXDcSmyqEZqu0WEoz0FpVYt2pRw9pSb29+Y6n4vWTyWxVI8zMqDieYmaw7uXctqrr"
}.
{
  "request_nonce": "AQABAAAAAADX8GCi6Js6SK82TsD2Pb7rO4c24C6C31bER-HgavkQr-xx11qx0DFkaB6rfm-ikMj\_eUCSQ12bS4Id06ae1CUQjd8jN7xc4uGK-PA6Bj83HyAA",
  "grant_type": "device_token",
  "resource": "https://microsoft.com/mcp",
  "client_id": "1ef464e5-0b61-4c6f-b822-5dc015b9463e",
  "redirect_uri": "https://print.print.microsoft.com/",
  "iss": "e9a675a2-a7c5-4fe7-8e83-fe1efaf82ec6"
}.
[Signature]

3 Een apparaattoegangstoken aanvragen

Als u een apparaattoken wilt aanvragen, verzendt u een POST-aanvraag naar het eindpunt van het apparaattoken met de hoofdtekst met de JWT die is gegenereerd in sectie 2.

3.1 HTTP-aanvraag

POST {device_token_url}

{device_token_url} is de URL die is ontvangen van het geslaagde registratieantwoord.

3.2 Inhoudstype aanvragen

  • application/x-www-form-urlencoded

3.3 Nettolading aanvraag

Indeling van formulier-URL met de volgende naam/waardeparen:

Waardenaam Beschrijving/waarde Vereist
grant_type Moet worden ingesteld op urn:ietf:params:oauth:grant-type:jwt-bearer. Dit geeft aan dat de tokenaanvraag wordt beschreven in een JWT. Ja
aanvraag De met Base-64 gecodeerde JWT die is gegenereerd in sectie 2. Ja

Belangrijk

Zorg ervoor dat cookies niet zijn opgenomen bij het verzenden van de aanvraag voor het apparaattoken. Het verzenden van cookies kan leiden tot onverwacht gedrag.

3.4 Geslaagd antwoord

Retourneert 200 OK en het Toegangstoken in de nettolading van het antwoord in JSON-indeling met de volgende hoofdwaarden (hoofdlettergevoelig):

Waardenaam Waardetype Beschrijving Vereist
access_token tekenreeks Het aangevraagde toegangstoken als een ondertekend JSON-webtoken (JWT). De printer kan dit token gebruiken om te verifiëren bij de beveiligde resource, zoals een web-API. Ja
token_type tekenreeks Geeft de waarde van het tokentype aan. Het enige type dat moet worden geretourneerd, is momenteel Bearer. Ja
device_info tekenreeks Een JWT die het apparaat vertegenwoordigt. Ja
expires_in tekenreeks Hoe lang het toegangstoken geldig is, in seconden. Ja
expires_on tekenreeks De tijd waarop het token verloopt. De datum wordt weergegeven als het aantal seconden van 1970-01-01T0:0:0Z UTC tot de vervaltijd. Deze waarde wordt gebruikt om de levensduur van tokens in de cache te bepalen. Ja
not_before tekenreeks De tijd waarna de JWT NIET voor verwerking mag worden geaccepteerd. Ja
resource tekenreeks De app-id-URI van de web-API (beveiligde resource). Ja

3.5 Foutreactie

De gedetailleerde foutberichten worden hier beschreven: Gebruik de autorisatiecode om een toegangstoken aan te vragen

De nettolading van het antwoord heeft een JSON-indeling met de volgende hoofdwaarden (hoofdlettergevoelig):

Waardenaam Waardetype Beschrijving Vereist
error tekenreeks Een foutcodereeks die kan worden gebruikt voor het classificeren van typen fouten die optreden en die kan worden gebruikt om op fouten te reageren. Ja
error_description tekenreeks Een specifiek foutbericht waarmee een ontwikkelaar de hoofdoorzaak van een verificatiefout kan identificeren. Nee
error_codes Matrix van gehele getallen Een lijst met STS-specifieke foutcodes die kunnen helpen bij diagnostische gegevens. Nee
timestamp tekenreeks De tijd waarop de fout is opgetreden. Nee
trace_id tekenreeks Een unieke id voor de aanvraag die kan helpen bij diagnostische gegevens. Nee
correlation_id tekenreeks Een unieke id voor de aanvraag die kan helpen bij diagnostische gegevens over onderdelen. Nee

3.5.1 Kritieke fout

Als de printer niet is geregistreerd vanuit de UP-portal of het certificaat verloopt, kan de printer geen apparaattoegangstoken ophalen. In dit geval retourneert "error": "invalid_grant" het eindpunt van het apparaattoken en "suberror": "device_authentication_failed". Op dit moment moet de status van de printer opnieuw worden ingesteld om de registratie ongedaan te maken, omdat het apparaat opnieuw moet worden geregistreerd.
Bijvoorbeeld:

{
  "error": "invalid_grant",
  "error_description": "AADSTS70002: Error validating credentials. AADSTS50155: Device is not authenticated.\\r\\nTrace ID: b099e7ad-ccf8-4eb7-b105-cced2f724d00\\r\\nCorrelation ID: 0d72010c-5a1f-4c19-99a7-48df28c5db66\\r\\nTimestamp: 2018-05-14 01:06:51Z",
  "error_codes": [70002, 50155],
  "trace_id": "b099e7ad-ccf8-4eb7-b105-cced2f724d00",
  "correlation_id": "0d72010c-5a1f-4c19-99a7-48df28c5db66",
  "suberror": "device_authentication_failed"
}

3.6 Voorbeelden

3.6.1 Aanvraag

POST https://login.microsoftonline.com/425a8e89-feb9-40d2-9fe5-07fb45419e4b/oauth2/token HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Accept-Charset: utf-8
Host: login.microsoftonline.com
Content-Length: 2737
grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&request=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsIng1YyI6Ik1JSUQ4akNDQXRxZ0F3SUJBZ0lRdEpFL3pJdjNDNUpPUG9JZWV6aGZMekFOQmdrcWhraUc5dzBCQVFzRkFEQjRNWFl3RVFZS0NaSW1pWlB5TEdRQkdSWURibVYwTUJVR0NnbVNKb21UOGl4a0FSa1dCM2RwYm1SdmQzTXdIUVlEVlFRREV4Wk5VeTFQY21kaGJtbDZZWFJwYjI0dFFXTmpaWE56TUNzR0ExVUVDeE1rT0RKa1ltRmpZVFF0TTJVNE1TMDBObU5oTFRsak56TXRNRGsxTUdNeFpXRmpZVGszTUI0WERURTRNRFV4TURBek1qVXpNVm9YRFRJNE1EVXhNREF6TlRVek1Wb3dMekV0TUNzR0ExVUVBeE1rWlRsaE5qYzFZVEl0WVRkak5TMDBabVUzTFRobE9ETXRabVV4WldaaFpqZ3laV00yTUlJQklqQU5CZ2txaGtpRzl3MEJBUUVGQUFPQ0FROEFNSUlCQ2dLQ0FRRUFqR3cwZVBORVpUTmdEYlRNTWIrbThmZUNRWTcweW90b3pabk1GaDVIZWhPMkF2bGFSMW1abkFJKzdyV2Q1cFVkbVBvODN3R1NjaHFqNGNPc09RRjY5OVVFbVpsbEREcENNZDllL2treUZGUVlWRkJqTFY2N2pVTnlNNXlEd0NxU3NOeVRJbXVCUWpwZ09Db1l0N25yc0o1bmxhRWlXQjdITk1iUEVKSThTenA5ZU1jaS81ajVrdFJxVTlTZVdCVUY3U0lydWFGS3Q1aTdwaFR3eDlFTEpvNTU0L3lhUXRKeDVnWnMxaHBPL3o5aUxPUnUrMTNjajVhcnV2TlpGbmx5TnlEN0xOWjQzSjViaUlJdXFiRmFVaENMQlg3MHZ1RS95aHhrS2p2eVp3b3ZQMVBQNUJxYzdaTEQ2dklkaDgwYmdKTGQreEZLYkw0T2NEMkRneFdJNFFJREFRQUJvNEhBTUlHOU1Bd0dBMVVkRXdFQi93UUNNQUF3RmdZRFZSMGxBUUgvQkF3d0NnWUlLd1lCQlFVSEF3SXdJZ1lMS29aSWh2Y1VBUVdDSEFJRUV3U0JFS0oxcHVuRnArZFBqb1ArSHZyNExzWXdJZ1lMS29aSWh2Y1VBUVdDSEFNRUV3U0JFSGxMa3lHMFhtUkhvTmZEVnQwRlNWUXdJZ1lMS29aSWh2Y1VBUVdDSEFVRUV3U0JFSW1PV2tLNS90SkFuK1VIKzBWQm5rc3dGQVlMS29aSWh2Y1VBUVdDSEFnRUJRU0JBazVCTUJNR0N5cUdTSWIzRkFFRmdod0hCQVFFZ1FFd01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQjNxNEV5OUFpalFtSHkwUzMrZnkxUFY3cFhxNmFNaEFnRjdIdnptRXdkbW5qU0NmdlVkK2ZQa1pBM3RHUTZna0dsSjNtSTR3cTB4QlpmazZZRVFMTFN1dnVrQ3BoelppdHoyTm5wZUNZTVlwVDJMN0cxK0VzSU11NStXejg0UzRJTzU3SU1CU0xNRG1zTExQMmJIcSt3MVZPWWdTOWNPN1ZoYS9uUjNaNTQyTG5hUktJTlVwRmVkSEF0ZmZ2MnRPUUxSQ1BXazIwS1A1TEVwS3VFY00vcjVFSEZINmJlS0Z1WWVQcEo3L2RoS0g2OWNaRldSdHFnYVY3Qkh4ZURWci9uM2t5SGJEdjFyd1RYSVlIYU0zcUVYRGNTbXlxRVpxdTBXRW96MEZwVll0MnBSdzlwU2IyOStZNm40dldUeVd4Vkk4ek1xRGllWW1hdzd1WGN0cXJyIn0.eyJyZXF1ZXN0X25vbmNlIjoiQVFBQkFBQUFBQURYOEdDaTZKczZTSzgyVHNEMlBiN3JPNGMyNEM2QzMxYkVSLUhnYXZrUXIteHgxMXF4MERGa2FCNnJmbS1pa01qX2VVQ1NRMTJiUzRJZDA2YWUxQ1VRamQ4ak43eGM0dUdLLVBBNkJqODNIeUFBIiwiZ3JhbnRfdHlwZSI6ImRldmljZV90b2tlbiIsInJlc291cmNlIjoiaHR0cHM6Ly9taWNyb3NvZnQuY29tL21jcC1wcGUiLCJjbGllbnRfaWQiOiIxZWY0NjRlNS0wYjYxLTRjNmYtYjgyMi01ZGMwMTViOTQ2M2UiLCJyZWRpcmVjdF91cmkiOiJodHRwczovL21jcC1wcGUuYXp1cmV3ZWJzaXRlcy5uZXQvIiwiaXNzIjoiZTlhNjc1YTItYTdjNS00ZmU3LThlODMtZmUxZWZhZjgyZWM2In0.bmvBY7cdD\_dGtbB9dXbjbj5qc5k9ssqOMe1KQnnUnChLz1nkgBMLU\_jBMwsAoHCvI\_udQAdDgyNmWFcnWxTY0sLARZ6FQmjbGclqrqhj\_kkJXdkNBdGcwIXafjQiFkpDlpTMbVjBWoQq49aW-e\_OcmfsVIg8DCdS-s87x0fJ3fuHzZJzVGEHC4D-43EPxWTXfVbsvOV7RNK15lq5GXm10W4DkRngK6EpMq69g75KCUqT\_MEEh5dGezl5Kic8RLZQ72n5aEpc5Y6XK85b1TdOtBnxogVjJFSsxpz1sOIpODszVu9CSUg4CHEjadpKQ9DiYCg6zB9D5fYbMf3NrGWC9Q

3.6.2 Antwoord

HTTP/1.1 200 OK
Cache-Control: no-cache, no-store
Pragma: no-cache
Content-Type: application/json; charset=utf-8
Content-Length: 2473
{
  "token_type":"Bearer",
  "expires_in":"3599",
  "ext_expires_in":"0",
  "expires_on":"1525928144","not_before":"1525924244","resource":"<https://microsoft.com/mcp>",
  "access_token":"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImlCakwxUmNxemhpeTRmcHhJeGRacW9oTTJZayIsImtpZCI6ImlCakwxUmNxemhpeTRmcHhJeGRacW9oTTJZayJ9.eyJhdWQiOiJodHRwczovL21pY3Jvc29mdC5jb20vbWNwLXBwZSIsImlzcyI6Imh0dHBzOi8vc3RzLndpbmRvd3MubmV0LzQyNWE4ZTg5LWZlYjktNDBkMi05ZmU1LTA3ZmI0NTQxOWU0Yi8iLCJpYXQiOjE1MjU5MjQyNDQsIm5iZiI6MTUyNTkyNDI0NCwiZXhwIjoxNTI1OTI4MTQ0LCJhbXIiOlsicnNhIl0sImRldmljZWlkIjoiZTlhNjc1YTItYTdjNS00ZmU3LThlODMtZmUxZWZhZjgyZWM2IiwiaWRwIjoiaHR0cHM6Ly9zdHMud2luZG93cy5uZXQvNDI1YThlODktZmViOS00MGQyLTlmZTUtMDdmYjQ1NDE5ZTRiLyIsImlkdHlwIjoiZGV2aWNlIiwiaXBhZGRyIjoiMTY3LjIyMC4wLjc0Iiwib2lkIjoiZjM5NjNiMDItY2NjNS00NTg5LTkwYjQtMDJkNTA0OWE5ZGY3Iiwic3ViIjoiZTlhNjc1YTItYTdjNS00ZmU3LThlODMtZmUxZWZhZjgyZWM2IiwidGlkIjoiNDI1YThlODktZmViOS00MGQyLTlmZTUtMDdmYjQ1NDE5ZTRiIiwidXRpIjoiV005dVBHbXltRWV3RmdpMl9PcEdBQSIsInZlciI6IjEuMCJ9.gjCICKD2NT69bro4wK8r6SJhP6CBflnBqmlpF3pITl\_1Klv1DNYTue7a-Tup0vkFu0inN8njTG7rxlK\_j4m2mn1iUuh6CO-o98hN6VzjrarvZceBzGtsiOU2jtdacWP4JmePtTaXRmGDlK-PbTLy\_v4VmbL\_cQN2RIEiwf81suwnBacko0xbQhO3cPmGwKZcB5kFV4tnHp0uBnxyfcpRfV-ZR9Age41LWDW1ulOsTVuv1Q4XmmOmStkh2-TH1jOq1did6jyK1LKncdsSvEhKeo49-yBNshGntPs24qWL2WShz5cMQ3w5OBbAUOwl1DL-\_NtcUjCwbaLRwS6Dyliejw\",\"device\_info\":\"eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6ImlCakwxUmNxemhpeTRmcHhJeGRacW9oTTJZayIsImtpZCI6ImlCakwxUmNxemhpeTRmcHhJeGRacW9oTTJZayJ9.eyJhdWQiOiJiYWZjYjg2Zi1kYWFhLTQxYjEtYjQ5NC04NjA0MzZhNGMzMGQiLCJpc3MiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC80MjVhOGU4OS1mZWI5LTQwZDItOWZlNS0wN2ZiNDU0MTllNGIvIiwiaWF0IjoxNTI1OTI0MjQ0LCJuYmYiOjE1MjU5MjQyNDQsImV4cCI6MTUyNTkyODE0NCwiZGV2aWNlaWQiOiJlOWE2NzVhMi1hN2M1LTRmZTctOGU4My1mZTFlZmFmODJlYzYiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC80MjVhOGU4OS1mZWI5LTQwZDItOWZlNS0wN2ZiNDU0MTllNGIvIiwiaWR0eXAiOiJkZXZpY2UiLCJvaWQiOiJmMzk2M2IwMi1jY2M1LTQ1ODktOTBiNC0wMmQ1MDQ5YTlkZjciLCJzdWIiOiJlOWE2NzVhMi1hN2M1LTRmZTctOGU4My1mZTFlZmFmODJlYzYiLCJ0aWQiOiI0MjVhOGU4OS1mZWI5LTQwZDItOWZlNS0wN2ZiNDU0MTllNGIiLCJ1dGkiOiJXTTl1UEdteW1FZXdGZ2kyX09wR0FBIiwidmVyIjoiMS4wIn0.CPNbz9Cr20Ig\_i7Fc8GUx1NVpGXqQs9HsNH3F-QxUeJsep7m1rwiTE8WXsfXxiNGco0j1HFykiHdAsE\_-ymeVXaUtA5InC3uEeiHuIihQGbo9GC5gibzjsS\_psfqE74v\_9o7WuJTjFhpGdl1h57sOX49la312uR\_Khr6I6tIGiFon-gn4rGq5U0O4NV\_5LeitiHUXxuVxD2O9J5vERpwmnQ0UtyxX9skyFGEtcEruNch6noy\_5710xbcYv-8uO4VM8tM6CoqigWg\_7o18OciJ0VRBmsFLZtJUOxVSlPKeFneFDyKujpttbMIP-0-FdS75qckkqGYzoVbSuzsIcJa5g"
}