Sdílet prostřednictvím


Přehled ověřování a autorizace back-endu

Ukázka úlohy vývojáře fabric obsahuje následující toky ověřování na straně back-endu.

Ověřování a autorizace požadavků z prostředků infrastruktury do úlohy

Struktura autorizační hlavičky

Autorizační hlavička používá konkrétní formát tokenu:

SubjectAndAppToken1.0 subjectToken="delegated token", appToken="S2S token"

Tento formát obsahuje dva odlišné tokeny:

  • subjectToken: Delegovaný token představující uživatele, jehož jménem se operace provádí.
  • appToken: Token specifický pro aplikaci Fabric.

Odůvodnění použití hlavičky se dvěma tokeny je trojnásobné:

  • Ověření: Úloha může ověřit, že požadavek pochází z prostředků infrastruktury ověřením appToken.

  • Kontext uživatele: Poskytuje subjectToken kontext uživatele pro provedenou akci.

  • Komunikace mezi službami: Úloha může pomocí tokenu subjectTokenOBO (On-Behalf-Of) získat token , který umožňuje volat jiné služby s tokenem uživatele.

Ověřování

Hlavní kontroly ověřování provedené pro SubjectAndAppToken jsou:

  • Ověření a analýza hodnoty autorizační hlavičky je provedena v AuthenticateControlPlaneCall metoda. Token musí začínat předponou SubjectAndAppToken1.0 a obsahovat dva tokeny – subjectToken a appToken.

  • Ověření vlastností tokenu Entra: Obě subjectToken a appToken jsou ověřeny pro běžné vlastnosti tokenu Microsoft Entra v ValidateAadTokenCommon metoda. Mezi tyto vlastnosti patří podpis tokenu, životnost tokenu, cílová skupina tokenů (cílová skupina aplikací úloh) a verze tokenu (1.0) a vystavitel.

  • ověření vlastností appToken: Deklarace appToken identity by neměla mít scp , ale měla by mít idtyp deklaraci identity s aplikací jako hodnotu. Zkontrolujeme také deklaraci tid identity v ID tenanta vydavatele úloh.

    Ukázkové deklarace identity appToken:

    {
    "aud": "api://localdevinstance/00001111-aaaa-2222-bbbb-3333cccc4444/Fabric.WorkloadSample/123",
    "iss": "https://sts.windows.net/12345678-77f3-4fcc-bdaa-487b920cb7ee/",
    "iat": 1700047232,
    "nbf": 1700047232,
    "exp": 1700133932,
    "aio": "E2VgYLjBuv2l+c6cmm/iP/bnL2v+AQA=",
    "appid": "11112222-bbbb-3333-cccc-4444dddd5555"
    "appidacr": "2",
    "idp": "https://sts.windows.net/12345678-77f3-4fcc-bdaa-487b920cb7ee/",
    "idtyp": "app",
    "oid": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    "rh": "0.ACgAGX-u-vN3zE-9qkh7kgy37hQbaU7-v2xFr59O_foS7VLZAAA.",
    "sub": "aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
    "tid": "bbbbcccc-1111-dddd-2222-eeee3333ffff",
    "uti": "5bgMXs3uMUSAHCruRjACAA",
    "ver": "1.0"
    }
    
  • subjectToken properties validation: Ujistěte se, že subjectToken obsahuje scp deklaraci identity s oborem FabricWorkloadControl , že v tokenu neexistuje žádná idtyp deklarace identity a že má stejnou appid hodnotu jako v objektu appToken.

    Ukázkové deklarace identity subjectToken:

    {
    "aud": "api://localdevinstance/00001111-aaaa-2222-bbbb-3333cccc4444/Fabric.WorkloadSample/123",
    "iss": "https://sts.windows.net/12345678-77f3-4fcc-bdaa-487b920cb7ee/",
    "iat": 1700050446,
    "nbf": 1700050446,
    "exp": 1700054558,
    "acr": "1",
    "aio": "ATQAy/8VAAAAUgWRMRnBo4VGHvrKRykUXOXBNKS1cHnBxLrYkZJJGSjAVyJGBecbLdSud1GUakER",
    "amr": [
        "pwd"
    ],
    "appid": "11112222-bbbb-3333-cccc-4444dddd5555"
    "appidacr": "2",
    "ipaddr": "46.117.19.50",
    "name": "john doe",
    "oid": "bbbbbbbb-1111-2222-3333-cccccccccccc",
    "rh": "0.ASgAGX-u-vN3zE-9qkh7kgy37hQbaU7-v2xFr59O_foS7VLZANQ.",
    "scp": "FabricWorkloadControl",
    "sub": "X0Wl85UA-uOmdkQz5MoT-hEgYZXDq9FYdS8g2bFUaZA",
    "tid": "bbbbcccc-1111-dddd-2222-eeee3333ffff",
    "unique_name": "user1@constso.com",
    "upn": "user1@constso.com",
    "uti": "_llZwmJoSUiHv-kw6tfDAA",
    "ver": "1.0"
    }
    

Viz IAuthenticationService.

Poznámka:

Všechna ověření v našem vzorovém kódu jsou určená pro tokeny verze 1.0.

Autorizace

Jakmile se potvrdí, že požadavek pochází ze služby Fabric (prostřednictvím appToken), služba Fabric ověřila, že uživatel má potřebná oprávnění k provedení akce na základě metadat oprávnění fabric.

Ověřování a autorizace požadavků z úloh do prostředků infrastruktury

Žádosti o řízení úloh

Rozhraní API pro řízení úloh jsou speciální rozhraní API prostředků infrastruktury, která podporují úlohy se správou životního cyklu položek infrastruktury. Tato rozhraní API používají stejný formát autorizační hlavičky SubjectAndAppToken1.0.

SubjectAndAppToken1.0 subjectToken="delegated token", appToken="S2S token"

Volání přicházející z úlohy, včetně následujících tokenů:

  • subjectToken: Token delegovaný uživatelem (získaný prostřednictvím toku OBO) představujícího uživatele, jehož jménem se operace provádí. Prostředky infrastruktury ověří, že má uživatel požadovaná oprávnění k provedení potřebné akce.

  • appToken: Token specifický pro aplikaci úloh. Prostředky infrastruktury kontrolují, že tento token pochází z aplikace Microsoft Entra úlohy, do které příslušná položka infrastruktury patří a která je v tenantovi vydavatele úloh.

ValidatePermissions Viz metoda v AuthorizationHandler.

Veřejná rozhraní API

Aby bylo možné volat veřejná rozhraní API prostředků infrastruktury, musí úloha získat standardní token Microsoft Entra OBO s příslušnými obory rozhraní API a předat ho jako nosný token v autorizační hlavičce požadavku.

Viz FabricExtensionController.

Ověřování a autorizace požadavků z úlohy FE do úlohy BE

Autorizační hlavička

Autorizační hlavička v požadavku odeslaném z úlohy FE do úlohy BE používá standardní nosný token.

Ověřování

Metoda AuthenticateControlPlaneCall v sadě funkcí BE zodpovídá za ověření tokenu. Primární kontroly jsou:

  • Životnost tokenu: Zajišťuje, že token je v platném období využití.

  • Podpis: Ověřuje pravost tokenu.

  • Cílová skupina: Kontroluje, jestli cílová skupina tokenu odpovídá úloze aplikace Microsoft Entra.

  • Vystavitel: Ověří vystavitele tokenu.

  • Povolené obory: Ověří obory, ke kterým má token povolený přístup.

Autorizace se dosahuje vyvoláním metody ValidatePermissions . Tato metoda volá resolvePermissions rozhraní API v koncovém bodu řízení úloh Infrastruktury pro příslušnou položku infrastruktury a ověřuje, že má uživatel potřebná oprávnění pro danou operaci.

Dlouhotrvající operace – obnovovací token

Autorizace se dosahuje vyvoláním metody ValidatePermissions . Tato metoda volá resolvePermissions rozhraní API v koncovém bodu řízení úloh Infrastruktury pro příslušnou položku infrastruktury a ověřuje, že má uživatel potřebná oprávnění pro danou operaci.

Pokud vaše úlohy zahrnují dlouhotrvající operace, například jako součást JobScheduler , můžete narazit na situaci, kdy životnost tokenu nestačí. Další informace o ověřování dlouhotrvajících procesů , dlouhotrvajících procesů OBO.