Vraag

Check Things-Message-Token HTTPSplug

  • 23 March 2020
  • 16 reacties
  • 575 keer bekeken

Ik wil graag (zoals jullie aanbevelen) een Token-check toevoegen voor de data die binnenkomt via de HTTPSplug.  In jullie documentatie op https://docs.kpnthings.com/dm/plugs/https#the-request geven jullie aan dat de opbouw als volgt moet zijn:

token = sha256({senMLBody}{sharedSecret})

Ik heb dit in allerlei varianten geprobeerd, maar op geen enkele manier krijg ik een match met de Things-Message-Token die ik ontvang in de header van de post. 

Ik heb via https://emn178.github.io/online-tools/sha256.html  diverse opties geprobeerd zoals met en zonder {} rond de inhoud, met en zonder indented/pretty format, quotes, etc. Wat zou de exacte juiste opbouw moeten zijn?

Zie bijv. onderstaande opbouw. Wat is hier fout?

{[{"bn":"urn:dev:DEVEUI:0059AC00001B00B9:","bt":1584958638},{"n":"locOrigin","vs":"KPNLORA"},{"n":"latitude","u":"lat","v":52.215401},{"n":"longitude","u":"lon","v":6.01251},{"n":"radius","u":"m","v":127.929848},{"n":"locAccuracy","u":"%","v":9999},{"n":"locPrecision","u":"%","v":9999},{"n":"locTime","vs":"1584958638848"}]}{plainsecret}

 

Alvast bedankt!


16 reacties

Reputatie 7
Badge +6

Goedemorgen @Terralytics

Bedankt voor uw bericht! 
Het is goed dat u aan de bel trekt, we helpen u graag verder. 
Ook deze kwestie heb ik met wat collega's besproken en het zou in principe moeten werken. 

Het advies van mijn collega's is om de secret key aan te passen en dan een nieuwe poging te doen. We hebben ook een voorbeeld voor u. Als we als voorbeeld token ‘12345’ nemen en we verwerken dit in uw bericht dan wordt het: 

Token = sha256([{"bn":"urn:dev:DEVEUI:0059AC00001B00B9:","bt":1584958638},{"n":"locOrigin","vs":"KPNLORA"},{"n":"latitude","u":"lat","v":52.215401},{"n":"longitude","u":"lon","v":6.01251},{"n":"radius","u":"m","v":127.929848},{"n":"locAccuracy","u":"%","v":9999},{"n":"locPrecision","u":"%","v":9999},{"n":"locTime","vs":"1584958638848”}]12345)

Wilt u een nieuwe poging doen en laten weten of het gelukt is?

Helaas, ik heb het geprobeerd met de laatste data van de sensor na het aanpassen van de secret. Als ik bijvoorbeeld om te testen gebruik maak van https://emn178.github.io/online-tools/sha256.html , dan krijg ik op geen enkele manier een resultaat terug wat overeenkomt met de token in het bericht. Aangezien ik de secret nu wordt gebruikt voor het testen kan ik 'm wel gewoon delen. Als ik op de link hierboven de code invoer krijg ik “4706e2285643df8a61f769d045cb737a32b4cb3236fa3468c5439eac9a36fb4d” terug.

 

De code die ik heb gebruikt:

[{"bn":"urn:dev:DEVEUI:0059AC00001B00B9:","bt":1585136228},{"n":"locOrigin","vs":"KPNLORA"},{"n":"latitude","u":"lat","v":52.215561},{"n":"longitude","u":"lon","v":6.01558},{"n":"radius","u":"m","v":468.988464},{"n":"locAccuracy","u":"%","v":9999},{"n":"locPrecision","u":"%","v":9999},{"n":"locTime","vs":"1585136229152"}]x26WDqjZmPWm5FX1buvxKZ1RNGewRb5b&

 

Volgens de token die ik in de header meekrijg klopt dit niet. Daar is de token als volgt: “de4a0347768613405f6447db2322c0371fc32294fddbe88f3eb94b6cb9006120”

 

Waardoor zou dit kunnen komen?

Reputatie 7
Badge +6

Goedemiddag @Terralytics ,

Bedankt voor het delen van de code! 
Mijn collega's zijn weer aan de slag gegaan en komen er tot zover ook nog niet helemaal uit. 
Ik heb nu het verzoek gekregen om wat contactgegevens van u te vragen, zodat een van de specialisten direct contact met u op kan nemen. Wilt u mij een privébericht sturen met uw mobiele nummer? En kunnen wij het mailadres waarmee u geregistreerd bent ook gebruiken?

Reputatie 3
Badge

Hi,

Momenteel loop ik tegen dezelfde situatie aan. Is het probleem ooit achterhaald?

Moet zeggen dat het eigenlijk behoorlijk knullig is dat overal op die pagina geadviseerd wordt gebruik te maken van die Things-Message-Token maar de documentatie incompleet, onbegrijpbaar of onjuist blijkt te zijn.

It is very important to implement the token check before accepting the sent data in your application.

Groeten,

Reputatie 5
Badge +5

Durf ik niet te zeggen, zo te lezen is er destijds telefonisch contact geweest tussen de klant en 1 van onze IoT-specialisten. Ik zal eens navragen of het nog steeds speelt.

Reputatie 3
Badge

@Mark L. Heb je nog contact kunnen krijgen met de IoT-specialisten?

Reputatie 5
Badge +5

Goedemiddag @Timeless ik heb hier nog geen duidelijkheid over. Wordt vervolgd.

Reputatie 5
Badge +5

@Timeless Kun je de code die je gebruikt en de token die je in de header terugkrijgt in een privé bericht met mij delen?

Reputatie 3
Badge

@Mark L. Helemaal prima. ik heb je een prive bericht gestuurd.

@Mark L.Helemaal prima. ik heb je een prive bericht gestuurd.

Is het nog gelukt?

Reputatie 5
Badge +5

Goedemorgen @ruben.o, we hebben het aan onze kant nog niet kunnen reproduceren. Loop je tegen hetzelfde issue aan?

Ik heb via de arduino code de opzet van de things message token weten te verifieren. Wat mij opvalt is dat de SenML message anders is opgebouwd dan @Terralytics gebruikt. 

Wat de arduino code voor mij produceert is een dit SenML message:

[{"bn":"urn:dev:IMEI:865456053717862:","n":"temperature","u":"Cel","v":25.83269691}]

Als ik deze invoer in  https://emn178.github.io/online-tools/sha256.html met daarachter mijn secret key krijg ik wel dezelfde things-message-token die de arduino code ook voor mij genereerd. Waar ik problemen mee heb is om data in things te krijgen met een handmatige http request.

Reputatie 3
Badge

@Mark L.Helemaal prima. ik heb je een prive bericht gestuurd.

Is het nog gelukt?

Tot op heden nog niet, al ben ik er ook weinig mee bezig geweest moet ik eerlijk toegeven.
Wel heeft @Mark L. gevraagd hoe mijn complete request eruit ziet. Dit vind ik echter irrelevant, de specialisten hebben beknopte instructies gegeven hoe deze berekening zou moeten worden uitgevoerd, wanneer wij deze exact opvolgen lijkt deze niet te kloppen.

Op dit moment zijn er 3 (voor zover bekend) klanten van KPN met hetzelfde probleem, Ik ben daarom persoonlijk van mening dat KPN zal moeten aantonen dat de methode werkt alvorens ze specifieke cases gaan bekijken. En zodoende de documentatie hiermee aan te passen of te versterken zodat het ook voor anderen duidelijk wordt.

Reputatie 5
Badge +5

Ik heb jouw vraag doorgespeeld naar onze IoT-specialisten en vanuit hen kreeg ik het verzoek om het hele request op te vragen omdat zij het issue niet kunnen reproduceren. Met het volledige request kunnen zij gericht naar een oplossing zoeken. Mocht blijken dat het een algemeen issue is wat in de documentatie moet worden aangepast, dan zullen we dat zeker doen. Uiteraard hoef je het request niet te sturen als jij dit irrelevant vind, maar dan verwacht ik ook niet dat we veel verder gaan komen.

Reputatie 3
Badge

Dat begrijp ik, maar de documentatie zoals omschreven hier geeft aan welke parameters gebruikt worden om de messageToken te berekenen. hieronder het citaat:

messageToken = sha256({requestBody}{sharedSecret})

Deze requestBody en sharedSecret heb ik in een privé bericht doorgestuurd. Dus wat de documentatie betreft heb ik (en anderen in dit topic) alle informatie aangeleverd om door jullie IoT-specialisten te laten beoordelen. Als deze specialisten meer informatie uit het complete post bericht nodig hebben klopt de documentatie simpelweg niet.

Aangezien deze specialisten het niet kunnen reproduceren is mijn vraag, kunnen zij een voorbeeld met uitleg in dit topic plaatsen zodat wij hier allen van kunnen leren?

Reputatie 5
Badge +5

Ik heb de specialisten gevraagd of zij misschien een voorbeeld kunnen aanleveren.

Reageer