Přeskočit obsah

SeaCat Auth v ASAB Maestro

SeaCat Auth je open-source technologie pro kontrolu přístupu vyvinutá v TeskaLabs. Integrace do ASAB Maestro zajišťuje automatickou introspekci pro všechny api lokace na https serveru.

"Sherpa obsahu Mongo" služby SeaCat Auth vytváří záznamy v databázi auth v Mongo. Pomáhá integrovat autorizaci třetích stran.

Další služby mohou přidat dodatečnou konfiguraci instancí SeaCat Auth, pokud je to potřeba.

Sekce deskriptoru seacat-auth

Každý deskriptor může použít sekci seacat-auth k přidání konfigurační sekce do služby SeaCat Auth a požadovaných dat do databáze auth v Mongo.

seacat-auth:
    config:
        "batman:elk":
        url: "http://{{NODE_ID}}:9200"
        username: elastic
        password: "{{ELASTIC_PASSWORD}}"
    content:
    - "cl.json": |
        [{
            "_id": "kibana",
            "application_type": "web",
            "authorize_anonymous_users": false,
            "client_name": "Kibana",
            "code_challenge_method": "none",
            "grant_types": [
            "authorization_code"
            ],
            "redirect_uri_validation_method": "prefix_match",
            "redirect_uris": [
            "{{PUBLIC_URL}}/kibana"
            ],
            "response_types": [
            "code"
            ],
            "token_endpoint_auth_method": "none",
            "cookie_entry_uri": "{{PUBLIC_URL}}/api/cookie-entry",
            "client_uri": "{{PUBLIC_URL}}/kibana"
        }]

Sekce seacath-auth:config

Přidá konfiguraci do všech instance SeaCat Auth ve formátu YAML.

Sekce seacat-auth:content

Stejně jako v sekci files sekce deskriptoru, toto je seznam záznamů.

Každý záznam je buď název souboru uvnitř adresáře /Site/Files/<service_id>/ nebo záznam klíč:hodnota, kde klíč je název souboru a hodnota je samotný soubor napsaný jako řetězec.

Název souboru musí odpovídat názvu cílové Mongo kolekce.

Interakce s konfigurací NGINX

Přítomnost SeaCat Auth v clusteru přidává introspekci do konfigurace NGINX. Introspekční endpoint je přidán a všechny lokace NGINX pocházející z nginx:api používají tuto introspekci. S SeaCat Auth v clusteru mohou do backendových služeb projít pouze autorizované požadavky.

Pro interní komunikaci mezi službami použijte internal HTTP server nginx.

Například, asab-governator lokace, která vyžaduje introspekční endpoint (zpracovávaný SeaCat Auth)

# GENEROVANÝ SOUBOR!

location /api/asab-governator {
    auth_request /_oauth2_introspect;
    auth_request_set $authorization $upstream_http_authorization;
    proxy_set_header Authorization $authorization;

    rewrite ^/api/asab-governator/(.*) /$1 break;
    proxy_pass http://upstream-asab-governator-8892;
# GENEROVANÝ SOUBOR!

location = /_oauth2_introspect {
    internal;
    proxy_method POST;
    proxy_set_body "$http_authorization";
    proxy_pass http://upstream-seacat-auth-private/nginx/introspect/openidconnect;
    proxy_set_header X-Request-URI "$scheme://$host$request_uri";
    proxy_ignore_headers Cache-Control Expires Set-Cookie;
    proxy_cache oauth2_introspect;
    proxy_cache_key "$http_authorization $http_sec_websocket_protocol";
    proxy_cache_lock on;
    proxy_cache_valid 200 30s;