Single sign-on ve vpsAdminu

Chtěl bych vám představit nový systém přihlašování do vpsAdminu. Cílem mojí snahy bylo sjednotit způsob přihlašování do vpsAdminu, znalostní báze, Discourse a případně dalších služeb do budoucna.

Změny se týkají především webového rozhraní vpsAdminu běžícího na vpsadmin.vpsfree.cz. Přihlašování nyní využívá OAuth2 a máme tak jeden autorizační server pro všechny webové služby. Mezi vpsAdminem, znalostní bázi i Discourse funguje single sign-on, tzn. přihlašovací údaje stačí zadat jen jednou. Přihlašovací formulář je sice na jiné adrese, i tak by ale prohlížeč měl být schopen doplnit údaje, pokud je máte uložené.

Single sign-on

Když se přihlásíte do libovolné služby, autorizační server si vás zapamatuje. Pokud pak přejdete na jinou službu a budete se chtít přihlásit, už nebude potřeba znovu zadávat jméno a heslo. Single sign-on bude fungovat až do odhlášení ze všech služeb, do kterých jste se v daném prohlížeči přihlásili. Přesněji řečeno, single sign-on bude aktivní, dokud budou platit vystavené OAuth2 přístupové tokeny. Například Discourse použije token jen k ověření identity, založení účtu, a dále funguje nezávisle.

Pokud by někdo nechtěl single sign-on využívat, v nastavení profilu ve vpsAdminu je možné tuto funkci vypnout. Každé přihlášení pak bude vyžadovat zadání jména a hesla.

Nastavitelná délka sezení

Webové rozhraní vpsAdminu vás po 20 minutách neaktivity odhlásí. Tuto dobu lze nyní změnit v nastavení v profilu ve vpsAdminu. Pokud nastavíte délku sezení na nulu, k automatickému odhlášení nedojde nikdy. Používejte dle vlastního uvážení.

Alternativně, pokud kliknete na čas zbývající do odhlášení, dojde k jeho prodloužení. Dlouhý klik ho potom zruší úplně. Tato funkce už je ve vpsAdminu dlouho, ale není nikde popsaná.

Hromadné odhlášení

V nastavení profilu ve vpsAdminu si nyní můžete nastavit, že při odhlášení sezení se odhlásí všechny sezení dané služby. Například, pokud se do webového rozhraní přihlásíte 2x z jiného prohlížeče, nebo úplně jiného zařízení, odhlášení jednoho z nich ukončí obě sezení.

Malé zlepšováky

Noví členové si musí při prvním přihlášení změnit heslo. Někdo to buď nestihl a došlo k automatickému odhlášení, nebo omylem klikl na tlačitko “Login” dvakrát, tím první přihlášení vyčerpal a skončil s uzamčeným účtem. Nový přihlašovací formulář řeší obě situace: změna hesla je vynucena během přihlašovacího procesu, tj. bez ní k přihlášení nedojde a účet tak nejde tímto způsobem zablokovat. Potvrzení přihlašovacího formuláře je taktéž vizuálně znázorněno a je zabráněno opakovanému odeslání formuláře.

Dále je možné si zobrazit heslo a ověřit tak, že váše klávesnice píše to, co čekáte. Pokud zapomenete heslo nebo ztratíte autentizační zařízení pro TOTP, hned vidíte co máte dělat: použít tzn. recovery code a nebo napsat na podporu.

Nastavitelné oprávnění v API

Pokud používáte API, mohou vás zajímat nastavitelné scopes. Každá akce v API je jedno scope, jehož název najdete v dokumentaci API. U jednotlivých přístupových tokenů si můžete nastavit, jaké scopes bude mít k dispozici, tedy jaké akce bude moct volat. Scopes lze použít u přihlašování pomocí tokenů a OAuth2.

Například s vpsfreectl použijeme scopes takto:

vpsfreectl --auth token --scope 'vps#*:vps_id=123' --save-token vps show 123

Příkaz výše vytvoří autentizační token, který bude omezen na volání akcí nad resource vps s ID 123.

Další příklady scopes:

  • all povolí přístup ke všem akcím, toto scope využívá webové rozhraní
  • prázdný scope, přístup je povolen jen k akci user#current, což zobrazí info o aktuálním uživateli;
  • toto se využívá pro přihlášení do Discourse a KB
  • vps#show povolí zobrazení info o jakékoli VPS
  • vps#show:vps_id=123 info o VPS s ID 123
  • vps#* umožní volat všechny akce nad všemi VPS
  • vps#*:vps_id=123 všechny akce nad VPS s ID 123
  • {vps,dataset}#{index,show} umožní vylistovat VPS a datasety a zobrazit údaje o jednom konkrétním

Scope může obsahovat globy pro název resource a akce. Akce je od resource oddělena křížkem (#). Volitelné ID objektů se píšou za dvojtečkou a nemohou obsahovat globy, musí být přesně. Názvy scopes a parametrů najdete v dokumentaci API. Každý token může mít více nastavených scopes, oddělují se mezerou. Pro udělení přístupu musí aspoň jedno nastavené scope platit pro volanou akci v API.

Pro použití této funkce musíte mít aktuální verzi vpsfree-client (>= 0.18.0). Starší verze se budou na scope ptát na standardním vstupu.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *