Požadavek #946
uzavřenýPožadavek #13: API
Autentizace a autorizace API
100%
Popis
Autentizace bude nezávislá na uživatelských účtech FreenetISu. Jelikož se účty vytvářejí pro aplikace napojené na systém a ne pro uživatele. Autorizaci nemá cenu řešit složitě, jelikož by ji ve výsledku skoro nikdo neřešil. Důležitý je IMHO pouze přístup s omezením čtení pro nedůvěryhodné protějšky a v ojedinělých případech přístup pouze do částí API (pro paranoidní :-)).
Požadavek na zakázání čtení lze vyřešit filtrováním HTTP požadavků, tj. pokud je zakázáno tak se propustí pouze HTTP požadavky s GET metodou. U omezení na cesty to lze učinit podobně.
Datová skruktura¶
Tabulka api_accounts
s atributy id
, username
, token
(obdoba hesla, ale hash o 60 znacích), enabled
(pro dočasné zakázání účtu), readonly
(flag povolující pouze GET požadavky), allowed_paths
(povolené cesty v API - defaultně /*
tj. povoleno vše, jinak je to seznam URL cest oddělených čárkou s možností použítí zástupného znaku *
) bude sloužit pro uchování účtů k API.
api_account_logs
s atributy id
, type
, date
, description
(popis požadavku k API - pouze uněkterý typů), responsible_user_id
(odpovědný uživatel - pouze u některý typů). Logy budou použity k logování požadaků k API, ale také jejich modifikací uživatelem FreenetISu. V budoucnu mohou složit i k omezení počtu dotazů/uživatel/časová jednotka. Zakladní typy logů budou:
- požadavek čtení (GET)
- požadavek na vytvoření (POST)
- požadavek na změnu (PUT)
- požadavek na odstranění (DELETE)
- vytvoření účtu
- změna detailů účtu
- změna tokenu účtu
Implementace¶
Autorizace a autentifikace bude probíhat v API controleru před propuštěním požadavku do koncových služeb. Jelikož je nutné podporovat i instalace bez HTTPS je ideální použít HTTP Digest Access Authentication.
Konfigurační rozhraní¶
Jednoduchý grid s editačními formuláři a odkazem na tabulku s logy v sekci Nastavení -> API.