Projekt

Obecné

Profil

Požadavek #946

uzavřený

Požadavek #13: API

Autentizace a autorizace API

Přidáno uživatelem Ondřej Fibich před více než 9 roky(ů). Aktualizováno před více než 9 roky(ů).

Stav:
Uzavřený
Priorita:
Normální
Přiřazeno:
Kategorie:
Jádro systému
Cílová verze:
Začátek:
2014-10-20
Uzavřít do:
% Hotovo:

100%

Odhadovaná doba:
14:00hod

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.

U API je důležité logování, a proto vznikne také tabulka 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.

Aktualizováno uživatelem Ondřej Fibich před více než 9 roky(ů)

Nakonec implementováno i autentizace HTTP basic, jelikož se pro něj snadněji píší klientské aplikace. Vybraný typ autentizace lze vynutit pomocí Settings volby.

Vše ohledně autentizace zabaleno do samostatné knihovny: https://github.com/freenetis/php-http-auth-server

Aktualizováno uživatelem Ondřej Fibich před více než 9 roky(ů)

  • Stav změněn z Nový na Uzavřený
  • % Hotovo změněn z 10 na 100

Použito v sadě změn sourceforge|r2381.

Také k dispozici: Atom PDF