Diskuze: Autorizace a autentizace na klientu přes API

Člen

Zobrazeno 6 zpráv z 6.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke 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) 
Zobrazeno 6 zpráv z 6.