Device Authorization Grant: Jak na přihlášení bez rozumné možnosti uživatelského vstupu?

DomůSoftware

Device Authorization Grant: Jak na přihlášení bez rozumné možnosti uživatelského vstupu?

S pojmem Device Authorization Grant, nebo také Device Code Flow (dále již DCF) se ne úplně každý setkal, nicméně s jeho použitím téměř jistě ano.

Michal Merta: Ransomware nepadá na úrodnou půdu, hackeři nyní používají vydírací techniky
Komentář: Je nový iPad vhodný i pro vývojáře?
ICT 2022: růst kvantových počítačů, digitálních dvojčat a technologií v automobilech
3 otázky pro – Václava Muchnu, CEO Y Soft

S pojmem Device Authorization Grant, nebo také Device Code Flow (dále již DCF) se ne úplně každý setkal, nicméně s jeho použitím téměř jistě ano.

Zprovozňovali jste někdy chytrou televizi, domácího asistenta, párovali chytré hodinky, nebo streamovací zařízení typu Google Chromecast/Apple TV? Pokud ano, tak už jste se s DCF setkali. Dnes se podíváme pod pokličku toho, jak funguje, jak se dá velice jednoduše implementovat a proč bychom ho vůbec měli či neměli chtít používat.

Než se ponoříme hlouběji, pojďme se ve zkratce podívat na OAuth 2.0 jako takový, jehož je DCF součástí.

OAuth 2.0

OAuth 2.0 je otevřený standard pro autentizaci a autorizaci uživatelů, který nabízí vysokou úroveň zabezpečení díky využití šifrování a jedinečných tokenů pro každou autorizaci. Jeho klíčovým aspektem je schopnost umožnit aplikacím jednat ve jménu uživatele, aniž by musely být přenášeny citlivá data jako přístupové údaje uživatele.

Velkou výhodou OAuth 2.0 je také jeho flexibilita, která nám umožňuje použít různé způsoby autorizace, od klasických pomocí hesla až právě po DCF. V současné době se jedná v podstatě o industry standard. Pro větší vhled do tohoto standardu si můžete pročíst například  https://www.root.cz/clanky/prihlaseni-pomoci-treti-strany-overeni-identity-s-oauth-2-0/

Device Authorization Grant je takzvaný autorizační flow tohoto standardu, který umožňuje uživatelům získat přístup k zabezpečeným aplikacím a službám, bez nutnosti zadávání uživatelského jména a hesla přímo na zařízení s omezenými možnostmi vstupu nebo výstupu, tedy například bez klávesnice, nebo jen s několika znakovým displejem. K ověření identity uživatele je použito jiné zařízení, které má uživatel k dispozici a je schopno přijmout zabezpečeně uživatelovo jméno a heslo. Zpravidla se jedná o mobilní telefon, tablet nebo PC.

Jak to cele vypadá v praxi

Pojďme se podívat, jak v pár jednoduchých krocích provést Device Code Flow. Základním předpokladem je, že využíváme identitní server, který jej podporuje. To už v dnešní době není problém u žádného z větších řešení (ještě pár let zpátky byla situace o poznání složitější).

Požadavek klienta směrovaný na endpoint /device_authorization zahajuje celý autorizační flow:

POST /device_authorization HTTP/1.1

Host: sso.server.cz

Content-Type: application/x-www-form-urlencoded

 

client_id=6731de76-14a6-49ae-97bc-6eba6914391e&scope=user.read{94956223523e30c8113a3a8d6a5ce4812a2cbdf57d9d14e19ce953758f5ce762}20openid{94956223523e30c8113a3a8d6a5ce4812a2cbdf57d9d14e19ce953758f5ce762}20profile

 

Server na něj odpovídá informacemi o uživatelském kódu, a kódu zařízení:

{

„device_code“: „Pv_h1ENszDunF79FR8mZSQ5YrNA“,

„user_code“: „ABCD-1234“,

„interval“: 5,

„expires_in“: 259200,

„verification_uri“: „sso.server.cz“,

„verification_uri_complete“: „sso.server.cz“

}

Uživatelský kód je poté zobrazen uživateli, často spolu s adresou, na kterou by měl navigovat ve svém prohlížeči (například za použití QR kódu, který vede na adresu se zadaným uživatelským kódem). Uživatel zadává uživatelský kód a přihlašuje se svým jménem a heslem. Následně je požádán o udělení přístupu ke svým údajům v aplikaci, jež vyvolala DCF.

Klientská aplikace která vyvolal DCF se periodicky doptává serveru svým kódem zařízení, dokud uživatel nedokončí své přihlášení:

POST /token HTTP/1.1

Host: sso.server.cz

Content-Type: application/x-www-form-urlencoded grant_type=urn:ietf:params:oauth:grant-type:device_code&client_id=6731de76-14a6-49ae-97bc-6eba6914391e&device_code=GMMhmHCXhWEzkobqIHGG_EnNYYsAkukHspeYUk9E8…

 

Poté, co se uživatel přihlásí, aplikace získává uživatelské tokeny a je nyní schopna ověřeně komunikovat s jakoukoliv další aplikací/službou ve jménu uživatele:

{    „token_type“: „Bearer“,    „scope“: „User.Read profile openid email“,    „expires_in“: 3599,    „access_token“: „eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsIng1dCI6Ik5HVEZ2ZEstZnl0aEV1Q…“,    „refresh_token“: „AwABAAAAvPM1KaPlrEqdFSBzjqfTGAMxZGUTdM0t4B4…“,    „id_token“: „eyJ0eXAiOiJKV1QiLCJhbGciOiJub25lIn0.eyJhdWQiOiIyZDRkMTFhMi1mODE0LTQ2YTctOD…“}

Více se dočtete ve zdrojovém článku portálu Root.cz

KOMENTÁŘE

WORDPRESS: 0
DISKUZE 0