Pielietojuma identifikācija
Horizon piedāvā risinājumu kopā ar lietotāju identificēt arī pielietojumu, kurš pieslēdzas REST serverim. Risinājums balstīts uz to, ka abām pusēm ir zināma pielietojuma slepenā parole, kuru izmanto, lai zināmā veidā samaisītu nosūtāmos datus iegūstot pielietojuma parakstu.
Var tikt izmantota Horizon iebūvēta saskarne Horizon saimes produktiem un partneru produktiem kā arī veidotas jaunas saskarnes individuālajām izstrādēm. Biežs pielietojuma identifikātoru izmantošanas scenārijs ir darbības sync izmantošana Horizon pamatdatu klasifikatoriem, šādos gadījumos pietiek ar context lauka izmantošanu un obligāti nav jāizmanto paraksta iespēja.
Autorizācijas galvenē norādāmie parametri.
Parametrs | Skaidrojums |
---|---|
context | Norāda pielietojuma identifikatoru |
timestamp | Norāda pieslēgšanas brīdi UTC laika zonā sekundēs kopš 1970. gada 1. janvāra. |
context_signature | Paraksts vērtībai, kurā iekļautas abas iepriekšējās datu vienības. Paraksta iegūšanai izmanto HMAC-SHA1 algoritmu. |
Galvenes vērtības piemērs.
Kopā ar pielietojuma identificēšanu jāizmanto kādu lietotāja identificēšanas metodi – piemērā tikai pielietojuma identifcēšanas specifiskie parametri.
Authorization: WebUser timestamp="laiks", context="pielietojums", context_signature="paraksts"
Piemērs 1
Parakstīšanas piemērs pielietojumam Test
veicot parakstīšanu 2015-06-01 18:07:17
. Horizon ir pieejams testa pielietojums, kuru var izmantot lai testētu pielietojuma paraksta saformēšanu. Šis pielietojums nav izmantojams lai darbotos ar Horizon entītēm vai entīšu kolekcijām.
- Pielietojuma identifikators:
Test
- Pielietojuma slepenā parole:
kAcSOqF21Fu85e7zjz7ZN2U4ZRhfV3WpwPAoE3Z7kBw
- Parakstīšanas brīža laika vērtība:
1433171237
- Parakstāmā datu vienība:
Test1433171237
- Samaisītā paraksta vērtība atbilstoši HMAC-SHA1 algoritmam:
4F 3B A1 B6 D0 0E 0C 9E 2E 5A FC FC 0B 12 51 B4 66 CC 98 7F
- Paraksta vērtība Base64 kodējumā:
TzuhttAODJ4uWvz8CxJRtGbMmH8=
REST pieprasījums
GET /rest/user HTTP/1.1 Accept: application/xml, text/xml, application/xhtml+xml, application/atom+xml Authorization: WebUser basic="RlRHQ0xJRU5UOmZ0Z2NsaWVudA==", timestamp="1433171237", context="Test", context_signature="TzuhttAODJ4uWvz8CxJRtGbMmH8=" Host: localhost:81 Proxy-Connection: Keep-Alive
REST atbilde
HTTP/1.1 200 OK Connection: keep-alive Content-Type: application/xml; charset=UTF-8 Content-Length: 372 Date: Mon, 01 Jun 2015 15:07:17 GMT Organization: 2, "Programmas izstrade - MSSQL" Set-Cookie: IDHTTPSESSIONID=wact9ARozhwgasE; Path=/ <?xml version="1.0" encoding="UTF-8" standalone="no"?> <resource xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><description>Lietotāja resursi</description><link><href>/rest/user/organization</href><description>Lietotājam atļautas firmas</description></link><link><href>/rest/user/changePassword</href><description>ChangePassword</description></link></resource>
Šeit var lejupielādēt .net projekta kodu kurā nodemonstrēts kā lietot dažādas REST autorizācijas metodes, tai skaitā ar pielietojuma identifikāciju.
Piemērs 2
Horizon izveido saskarni
Sistēma → Administrēt → Saskarnes.
Piemērā būs saskarne PI, kurai slepenā parole ir - jyRHv4Kb3Eo684YBeIyi6M
Timestamp
Var izmantot saiti https://unixtimeconverter.net/
Atceramies ka timestamp varēsim rest pieprasījumā izmantot, ja tas būs max 5 minūtes pagātnē.
Iegūstam timestamp = 1702995853
Šifrē ar HMAC-SHA1 algoritmu un Base64
Var izmantot saiti https://www.liavaag.org/English/SHA-Generator/HMAC/
Šifrējam PI1702995853 - saskarni un timestamp - uz HMAC-SHA1 un Base64 = gmyE6EYMz+n0EuYaoyAO8TQ8tLE=
Rezultāts
Parametrs | Iegūtās vērtības |
---|---|
web lietotājs | robots |
web lietotāja parole | robots |
WebUser basic (web lietotajs:parole) jeb robots:robots => Base64 | cm9ib3RzOnJvYm90cw== |
context | PI |
timestamp | 1702995853 |
context×tamp | PI1702995853 |
context_signature | gmyE6EYMz+n0EuYaoyAO8TQ8tLE= |
Header rest pieprasījumam
Authorization: WebUser basic="cm9ib3RzOnJvYm90cw==", context="PI", timestamp="1702995853", context_signature="gmyE6EYMz+n0EuYaoyAO8TQ8tLE="
Rest pieprasījums resursam