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
subjectToken
OBO (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
aappToken
.Ověření vlastností tokenu Entra: Obě
subjectToken
aappToken
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ítscp
, ale měla by mítidtyp
deklaraci identity s aplikací jako hodnotu. Zkontrolujeme také deklaracitid
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 oboremFabricWorkloadControl
, že v tokenu neexistuje žádnáidtyp
deklarace identity a že má stejnouappid
hodnotu jako v objektuappToken
.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" }
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.