Přeskočit na hlavní obsah

FIM 2.0

Popis projektu

Aplikace slouží k přihlašení ke keycloaku a poskytovaní tokenu, zobrazení uživatelů, vytváření nových uživatelů, upravovaní uživatelů a deaktivaci a aktivici uživatele. Aplikace je napsaná v Pythonu a využívá knihovny FastAPI python-keycloak.

Spuštění aplikace

poetry shell
poetry install
uvicorn app.main:app --reload

Synchronizace s REDIS

Synchronizace keycloaku s Redisem je vždy naplánována na 3h ráno.

Práva

Uživatelské práva

  • Uživatelská práva fungují pouze pro frontend aplikace FIM.
SystemNázevPráva
adminAdminUživatel má práva na vše v aplikaci.
org_adminSprávce organizaceUživatel má právo manipulovat s uživateli pouze v rámci jeho organizace.

Aplikační práva

  • potřeba vytvořit nový client, který bude zabezpečený a potřeba mu přiřadit scopes s právy
Právopopis
users:createPrávo vytvářet uživatele.
users:readPrávo číst uživatele.
users:disablePrávo zneaktivnit uživatele
users:enablePrávo zaktivnit uživatele
users:updatePrávo aktualizovat uživatele
users:passwordPrávo resetovat heslo uživatele
users:groupsPrávo manipulovat se skupinami uživatele
users:rolesPrávo manipulovat s rolemi uživatele
users:permissionsprávo manipulovat s právy uživatele
groups:readPrávo číst skupiny
roles:readPrávo číst role
clients:readPrávo číst klienty
logs:readPrávo číst uživatelský log
organizations:readPrávo číst organizace
organizations:createPrávo vytvořit organizaci
organizations:disablePrávo zneaktivnit organizaci
organizations:enablePrávo zaktivnit organizaci
organizations:searchPrávo vyhledávat organizaci

Autentizace a Autorizace

Pro autentizaci uživatele slouží Keycloak, který na základě přihlašovacích údajů vrátí token, který z FrontEndu chodí v každém dotazu na API. Autorizaci obstarává autorizační modul v API, který na základě ověřeného tokenu zjišťuje práva uživatele a na základě toho mu povoluje nebo zakazuje manipulaci s endpointy.

Generovaní tokenu

  • Je potřeba vygenerovat token pro klienta pomocí keycloak tokenu.
curl -X POST https://keycloak.example.com/realms/myrealm/protocol/openid-connect/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=myclient" \
-d "client_secret=mysecret"

Využité technologie

  • fastapi==^0.115.8

Knihovna pro vytvoření API. https://fastapi.tiangolo.com/

  • pydantic==^2.10.6

Knihovna pro validaci dat. https://docs.pydantic.dev/latest/

  • toml==^0.10.2

Knihovna pro práci s konfiguračním souborem. https://pypi.org/project/toml/

  • python-keycloak==^5.3.1

Knihovna pro připojení ke keycloaku a jeho následnout manipulací. https://python-keycloak.readthedocs.io/en/latest/

  • aiosmtplib==^4.0.1

Knihovna pro asynchronní odesílání emailů. https://pypi.org/project/aiosmtplib/

  • sqlalchemy==^2.0.41

Knihovna pro práci s databází. https://www.sqlalchemy.org/

  • redis==^6.2.0

Knihovna pro práci s redisem. https://pypi.org/project/redis/

  • ldap3==^2.9.1

Knihovna pro práci s ldapem, který pracuje s AD. https://ldap3.readthedocs.io/en/latest/