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:
- Vraag een Nonce aan bij het apparaattokeneindpunt.
- Genereer een JWT van een apparaat met de juiste informatie en onderteken deze met de persoonlijke sleutel.
- 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"
}