Diskusia: Autorizace a autentizace na klientu přes API

Člen

Zobrazené 6 správy z 6.
Na prispôsobenie obsahu a reklamy, poskytovanie funkcií sociálnych médií a analýzu našej návštevnosti používame súbory cookie. Informácie o tom, ako náš web používaš, zdieľame s našimi partnermi pre sociálne médiá, inzerciu a analýzy. Partneri môžu tieto údaje kombinovať s ďalšími informáciami, ktoré si im poskytol alebo ktoré získali v dôsledku toho, že používaš ich služby.
Používame nevyhnutné cookies na fungovanie webu a s tvojím súhlasom aj analytické a marketingové cookies.
Zaisťujú základné funkcie, bezpečnosť a služby, ktoré si si vyžiadal. Nedajú sa vypnúť.
| Služba | Poskytovateľ | Účel | Cookies a úložisko | Doba uloženia |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Prevádzka webu, relácia, prihlásenie a uloženie nastavenia cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relácia až 1 rok |
| Google Tag Manager | Správa značiek a načítanie meracích nástrojov webu. | Žiadne | Neukladá sa | |
| Google Fonts | Načítanie typografie webu. | Úložisko riadené poskytovateľom | Podľa podmienok poskytovateľa | |
| Google Hosted Libraries | Načítanie potrebných knižníc a štýlov webu. | Úložisko riadené poskytovateľom | Podľa podmienok poskytovateľa | |
| Google reCAPTCHA | Ochrana formulárov a webu pred zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relácia až 180 dní | |
| YouTube | Prehrávanie vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relácia až trvalé úložisko | |
| Vimeo | Vimeo | Prehrávanie vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relácia až 2 roky |
| Facebook Login | Meta | Prihlásenie pomocou účtu tretej strany. | Úložisko riadené poskytovateľom | Relácia až 1 rok |
| GoPay | GoPay | Spracovanie používateľom vyžiadanej platby. | Úložisko riadené poskytovateľom | Podľa podmienok poskytovateľa |
Pomáhajú nám porozumieť používaniu webu a zlepšovať ho.
| Služba | Poskytovateľ | Účel | Cookies a úložisko | Doba uloženia |
|---|---|---|---|---|
| Google Analytics 4 | Meranie návštevnosti a používania webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Meranie návštevnosti a používania webu. | _clck, _clsk, _cltk | Relácia až 1 rok |
Slúžia na meranie kampaní, personalizáciu reklamy a marketingovú komunikáciu.
| Služba | Poskytovateľ | Účel | Cookies a úložisko | Doba uloženia |
|---|---|---|---|---|
| Google Ads | Meranie kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relácia až 90 dní | |
| Meta Pixel | Meta | Meranie kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Meranie kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relácia až trvalé úložisko |
| LinkedIn Insight | Meranie kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relácia až 1 rok | |
| Ecomail | Ecomail.cz | Meranie kampaní, reklama a remarketing. | ecmid, Úložisko riadené poskytovateľom | Podľa podmienok poskytovateľa |
| Atribúcia kampaní ITnetwork | ITnetwork | Priradenie návštevy a objednávky ku kampani. | campaign_clid[*], user_session_context | Až 1 rok |


Webovky sice nedělám, ale obecně je to u klient/server architektury tak, že bezpečnost (autentizaci, autorizaci) musíš řešit na serveru. Musíš předpokládat, že někdo <dpolň vhodné přídavné jméno> se pokusí přistupovat přímo k serveru (přes API), a tak klientský kód úplně obejde.
Tudíž bych autentizaci i autorizaci řešil přes API (tzn. serveru by se odeslaly požadované přihlašovací údaje či rozumná identifikace uživatele a on by sám rozhodl, zda-li přihlášení či jinou operaci provede či ne).
Stejně budete muset přemýšlet nad tím, kolik toho bude umět server a kolik klienti (tzn. kdo bude tlustý a kdo tenký). Od toho se pak odvíjí různé výhody a problémy.
Zamýšlím to jako tenký server a tlustí klienti. Samozřejmě že mě
nenapadlo řešit autentizační a autorizační logiku v javascriptu na klientu
, jde mě spíš o to, jak
bezpečně odeslat údaje a přijmou nějaký session id nebo tak
BUMP a chtěl jsem ještě něco doplnit:
Možná, že backend bude nakonec realizován jako ASP.NET Web API 2 a frontend
použije AngularJS nebo ekvivalent. Jak se vůbec tato moderní architektura
jmenuje a jak dnes konkrétně v tomto případě autorizace a autentizace
probíhá?
Pokud bych tyhle bezpečnostní věci měl dělat já, člověk neznalý věcí webových, tak by to bylo asi následovně:
Při autentizaci by klient na server poslal přihlašovací údaje, samozřejmě zašifrované veřejným klíčem od serveru (SSL to pořeší). Server by v případě úspěšné autentizace vrátil to, čemu říkáš session ID, což bude pro klienta taková zkratka, jak serveru prokázat, že se jedná o daného uživatele (aniž by bylo nutné znovu posílat přihlašovací údaje). Samozřejmě, session ID bude muset putovat v zašifrované podobě.
Pak klient může s každým požadavkem na server posílat ono session ID, čímž serveru sdělí identitu uživatele. Takže server může rozhodnout, zda-li na příslušnou operaci má uživatel dost oprávnění.
Pokud by převažoval objektový přístup (klient si vyžádá přístup k entitám, se kterými pak pracuje), můžeš koncept session ID rozšířit tak, že klient na počátku práce s entitou serveru sdělí, že s ní chce pracovat a jaké operace s ní bude cca provádět. Server mu vystaví speciální ID (v žargonu Windows kernelu a systému se tomu říká handle), která opravňuje daného uživatele provádět s entitou určité operace. Pak stačí kontrolovat, že handle předané při žádost o provedení operace s entitou má dovoleno tuto operaci provést a nemusí se kontrolovat přímo oprávnění uživatele (to se udělalo při vydávání handle).
To je flexibilnější přístup, ale je otázka, zda-li se ti vyplatí. Pak se musíš rozhodnout, jak moc budou handle unikátní (jestli v rámci jednoho uživatele, nebo úplně všechna) a po jakém časte tyhle všechny identifikátory na serveru zrušit, pokud to klient explicitně neudělá.
EDIT: Ale vsadím se, že v těch různých knihovnách tenhle problém bude nějak řešen, protože potká asi spoustu lidí. Takže spíš by bylo lepší nastudovat ty knihovny.
Ano, to s tím session ID mě napadlo, ale ty handle zní taky zajímavě.
Otázka je, jestli jsou potřeba. Každopádně to nastuduju, jestli jsou
takové knihovny (to snad jsou) 
Zobrazené 6 správy z 6.