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.

ParametrsSkaidrojums
contextNorāda pielietojuma identifikatoru
timestampNorāda pieslēgšanas brīdi UTC laika zonā sekundēs kopš 1970. gada 1. janvāra.
context_signatureParaksts 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.

Test
kAcSOqF21Fu85e7zjz7ZN2U4ZRhfV3WpwPAoE3Z7kBw
1433171237
Test1433171237
4F 3B A1 B6 D0 0E 0C 9E 2E 5A FC FC 0B 12 51 B4

66 CC 98 7F
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/

(info) 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

ParametrsIegūtās vērtības
web lietotājsrobots
web lietotāja parolerobots

WebUser basic (web lietotajs:parole)

jeb robots:robots  => Base64

cm9ib3RzOnJvYm90cw==
contextPI
timestamp1702995853
context&timestampPI1702995853
context_signaturegmyE6EYMz+n0EuYaoyAO8TQ8tLE=


Header rest pieprasījumam

Piemēra header:
Authorization: WebUser basic="cm9ib3RzOnJvYm90cw==", context="PI", timestamp="1702995853", context_signature="gmyE6EYMz+n0EuYaoyAO8TQ8tLE="


Rest pieprasījums resursam