Koncepti
Nekoliko ideja objašnjava gotovo sve u platformi Usher: gdje se što nalazi, tko izdaje tokene, gdje se ljudi prijavljuju i koliko dugo koji token traje.
Radni prostori, projekti i okruženja
- Radni prostor je vaš tim ili tvrtka u sučelju Usher Console. Njegovi članovi i revizijski zapisnik pripadaju njemu.
- Projekt je jedan proizvod: vaša web-aplikacija ili portal za partnere. Radni prostor može sadržavati mnogo projekata.
- Okruženje je jedna pokrenuta kopija projekta, obično razvojno i produkcijsko. U okruženjima se nalaze ljudi, aplikacije, ključevi i postavke.
Radni prostor · Acme Ltd
Projekt · Web
- development · wise-otter-42
- production · acme
Projekt · Portal za partnere
- development · calm-heron-17
- production · acme-partners
Okruženja ne dijele ništa bitno. Svako ima vlastitu Postgres shemu, vlastite ključeve za potpisivanje i vlastite tajne zapečaćene vlastitim podatkovnim ključem. Osoba koja se registrira u razvojnom okruženju ne postoji u produkcijskom, a token iz jednoga nikad se ne može provjeriti ključevima drugoga.
Administrator radnog prostora može izbrisati projekt na dnu njegove stranice Pregled, nakon što upiše njegov naziv. Sva okruženja u njemu nestaju odjednom: njihovi ljudi, aplikacije, ključevi i postavke te svaka sesija i svaki token koje su izdala. Njihove adrese prestaju odgovarati i nikad se više ne dodjeljuju, pa aplikaciju koja nekoj od njih još vjeruje ne može prevariti tuđi projekt.
Izdavatelji
Svako je okruženje zaseban izdavatelj za OpenID Connect, na vlastitom hostu na domeni zakupaca:
https://<handle>.usherid.com- Produkcijska okruženja imaju oznaku koju sami odaberete: od 3 do 32 mala slova, znamenke i pojedinačne crtice, kao što je naziv vaše tvrtke. Jednom upotrijebljena oznaka nikad se više ne dodjeljuje.
- Razvojna okruženja dobivaju nasumičnu oznaku, kao što je
wise-otter-42, koju nitko neće zamijeniti za marku.
Izdavatelj se utvrđuje pri izradi okruženja jer ga svaki token koji potpiše navodi u iss, a svaka aplikacija koja mu vjeruje provjerava tu vrijednost.
Domena zakupaca druga je registrabilna domena od vlastite domene platforme Usher (usheridentity.com), pa stranice za prijavu kupaca nikad nisu na istom mjestu (same-site) kao Usher Console, a kolačići su vezani samo uz host: preglednik šalje kolačiće okruženja isključivo tom okruženju.
Lobby
Lobby je stranica za prijavu koju svako okruženje hostira na adresi svojeg izdavatelja. Vaša aplikacija šalje ljude onamo; Lobby ih prijavljuje i vraća natrag.
- Uvijek navodi aplikaciju u koju osoba ide, u oznaci „Nastavljate u aplikaciju”.
- Nudi samo načine prijave koje okruženje dopušta: pristupne ključeve, kôdove poslane e-poštom, čarobne poveznice, račune na društvenim mrežama (Google, GitHub, Microsoft, Apple) i lozinke.
- Može zahtijevati drugi faktor: aplikaciju za provjeru autentičnosti (s rezervnim kôdovima) ili pristupni ključ.
- Može biti otvoren svima ili ograničen na popis gostiju s adresama i domenama.
Izgleda isto koji god proizvod poslao osobu. To je namjerno: ljudi nauče kako izgleda pravi Lobby i primijete kad neka stranica to nije.
Usher računi
Većina okruženja ima vlastite korisnike. Usher računi su drukčiji: jedan račun prijavljuje osobu u svaku aplikaciju koja nudi „Nastavi uz Usher”. Ljudi svojim računom upravljaju na adresi account.usheridentity.com.
Tokeni i trajanje
| Token | Zadano | Može se postaviti na | Čemu služi |
|---|---|---|---|
| Autorizacijski kôd | 5 minuta | Fiksno | Jednom se mijenja za tokene. Jednokratan. |
| ID token | 10 minuta | Od 1 do 60 minuta | Govori vašoj aplikaciji tko se prijavio. Nije za pozivanje API-ja. |
| Pristupni token | 10 minuta | Od 1 do 60 minuta | Šalje se vašem API-ju, koji ga provjerava. |
| Token za osvježavanje | 30 dana | Od 1 do 90 dana | Dobiva nove pristupne tokene. Rotira se pri svakoj upotrebi. Zahtijeva offline_access. |
| Strojni pristupni token | 15 minuta | Od 1 do 60 minuta | Za client_credentials: poslužitelji iza kojih nema osobe. |
| Kôd e-poštom, čarobna poveznica | 10 minuta | Fiksno | Jedna prijava. Kôd dopušta tri pokušaja. |
I sesije na stranici Lobby imaju trajanje: sesija završava nakon 7 dana nekorištenja (od 1 do 30) i nakon ukupno 30 dana (od 1 do 90). Za promjenu nečeg osjetljivog, kao što je adresa e-pošte, potrebna je prijava iz posljednjih 10 minuta.
Ključevi za potpisivanje
Tokeni se zadano potpisuju algoritmom RS256; okruženje umjesto njega može koristiti ES256 ili EdDSA. Javni ključevi objavljuju se na adresi jwks_uri okruženja, pa ih vaše biblioteke dohvaćaju i preuzimaju nove kad se ključevi rotiraju.
Opsezi
| Opseg | Što vaša aplikacija dobiva |
|---|---|
openid | Obavezno. ID token s vrijednošću sub osobe. |
profile | Ime i sliku osobe. |
email | Adresu e-pošte osobe i podatak je li potvrđena. |
offline_access | Token za osvježavanje, kako bi osoba ostala prijavljena. |