Háttérbeli hitelesítés és engedélyezés – áttekintés

A Fabric fejlesztői számítási feladatainak mintája a következő hitelesítési folyamatokat tartalmazza a háttéroldalon.

A Fabrictől a számítási feladathoz érkező kérések hitelesítése és engedélyezése

Engedélyezési fejlécstruktúra

Az engedélyezési fejléc egy adott jogkivonat-formátumot használ:

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

Ez a formátum két különböző jogkivonatot tartalmaz:

  • subjectToken: Egy delegált jogkivonat, amely azt a felhasználót jelöli, akinek a nevében a műveletet végrehajtják.
  • appToken: A Fabric-alkalmazáshoz tartozó jogkivonat.

A kettős jogkivonatos fejléc használatának indoka háromszoros:

  • Ellenőrzés: A számítási feladat ellenőrizheti, hogy a kérés a Fabricből származik-e a appToken.

  • Felhasználói környezet: Ez subjectToken egy felhasználói környezetet biztosít a végrehajtott művelethez.

  • Szolgáltatásközi kommunikáció: A számítási feladat egy OBO-jogkivonatot szerezhet be a subjectTokenfelhasználó jogkivonatával, lehetővé téve, hogy más szolgáltatásokat is meghívjon egy felhasználói jogkivonattal.

Hitelesítés

A SubjectAndAppToken fő hitelesítési ellenőrzései a következők:

  • Az engedélyezési fejléc értékének ellenőrzése és elemzése az AuthenticateControlPlaneCall metódusban történik. A jogkivonatnak a "SubjectAndAppToken1.0" előtaggal kell kezdődnie, és tartalmaznia kell két tokent – subjectToken és appToken.

  • Entra-jogkivonat tulajdonságainak érvényesítése: MindkettősubjectToken, és appToken a ValidateAadTokenCommon metódusban a Microsoft Entra-jogkivonatok közös tulajdonságai is érvényesítve vannak. Ezek a tulajdonságok közé tartozik a jogkivonat aláírása, a jogkivonat élettartama, a jogkivonat célközönsége (számítási feladat alkalmazás célközönsége), valamint a jogkivonat verziója (1.0) és a kiállító.

  • appToken-tulajdonságok érvényesítése: Az appToken alkalmazásnak nem scp kell jogcímet igényelnie, hanem az alkalmazássalidtypkell rendelkeznie értékként. Ezt a jogcímet tid a számítási feladat közzétevőjének bérlőazonosítójában is ellenőrizzük.

    Minta appToken-jogcímek:

    {
    "aud": "api://localdevinstance/aaaabbbb-0000-cccc-1111-dddd2222eeee/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 tulajdonságok érvényesítése: Győződjön meg arról, hogy a subjectToken tartalmaz egy scp hatókörrel rendelkező FabricWorkloadControl jogcímet, hogy nincs idtyp jogcím a jogkivonatban, és hogy az megegyezik appid a appToken.

    Minta subjectToken jogcímek:

    {
    "aud": "api://localdevinstance/aaaabbbb-0000-cccc-1111-dddd2222eeee/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"
    }
    

Lásd: IAuthenticationService.

Feljegyzés

A mintakódban szereplő összes ellenőrzés az 1.0-s verziójú jogkivonatokra érvényes.

Engedélyezés

Miután meggyőződött arról, hogy a kérés a Fabric szolgáltatásból származik (a appToken), a Fabric ellenőrizte, hogy a felhasználó rendelkezik-e a művelet végrehajtásához szükséges engedélyekkel a Fabric engedélyeinek metaadatai alapján.

A számítási feladatból a Fabricbe irányuló kérések hitelesítése és engedélyezése

Számítási feladatok vezérlési kérelmei

A munkaterhelés-vezérlési API-k speciális Fabric API-k, amelyek támogatják a számítási feladatokat a Fabric-elemek életciklusának felügyeletével. Ezek az API-k ugyanazt a SubjectAndAppToken1.0 engedélyezési fejlécformátumot használják.

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

A számítási feladatból érkező hívások a következő jogkivonatokat tartalmazzák:

  • subjectToken: A felhasználó által delegált jogkivonat (az OBO-folyamaton keresztül szerezve), amely azt a felhasználót jelöli, akinek a nevében a műveletet végrehajtják. A háló ellenőrzi, hogy a felhasználó rendelkezik-e a szükséges engedélyekkel a szükséges művelet végrehajtásához.

  • appToken: A számítási feladat alkalmazásához tartozó jogkivonat. A Fabric ellenőrzi, hogy ez a jogkivonat annak a számítási feladatnak a Microsoft Entra-alkalmazásából származik-e, amelyhez a releváns Fabric-elem tartozik, és amely a számítási feladat közzétevőjének bérlőjén található.

Tekintse meg a metódust az ValidatePermissions AuthorizationHandlerben.

Nyilvános API-k

A nyilvános Fabric API-k meghívásához a számítási feladatnak be kell szereznie egy szabványos Microsoft Entra OBO-jogkivonatot a vonatkozó API-hatókörökkel, és tulajdonosi jogkivonatként kell átadnia a kérés engedélyezési fejlécében.

Lásd: FabricExtensionController.

A számítási feladat fe-től a számítási feladat be-be felé irányuló kéréseinek hitelesítése és engedélyezése

Engedélyezési fejléc

A számítási feladat FE-éről a számítási feladat BE-nek küldött kérelem engedélyezési fejléce egy szabványos tulajdonosi jogkivonatot használ.

Hitelesítés

A token érvényesítéséért a számítási feladat BE-ben található AuthenticateControlPlaneCall metódus felelős. Az elsődleges ellenőrzések a következők:

  • Jogkivonat élettartama: Biztosítja, hogy a jogkivonat az érvényes használati időszakon belül legyen.

  • Aláírás: Ellenőrzi a jogkivonat hitelességét.

  • Célközönség: Ellenőrzi, hogy a jogkivonat célközönsége megegyezik-e a Számítási feladat Microsoft Entra alkalmazásával.

  • Kiállító: Ellenőrzi a jogkivonat kiállítóját.

  • Engedélyezett hatókörök: Ellenőrzi, hogy a jogkivonat mely hatókörökhöz férhet hozzá.

Az engedélyezés a ValidatePermissions metódus meghívásával érhető el. Ez a metódus meghívja az API-t a resolvePermissions Háló munkaterhelés-vezérlési végpontjában a megfelelő Fabric-elemhez, és ellenőrzi, hogy a felhasználó rendelkezik-e a művelethez szükséges engedélyekkel.

Hosszú ideig futó műveletek – jogkivonat frissítése

Az engedélyezés a ValidatePermissions metódus meghívásával érhető el. Ez a metódus meghívja az API-t a resolvePermissions Háló munkaterhelés-vezérlési végpontjában a megfelelő Fabric-elemhez, és ellenőrzi, hogy a felhasználó rendelkezik-e a művelethez szükséges engedélyekkel.

Ha a számítási feladatok hosszú ideig futó műveleteket tartalmaznak, például a JobScheduler részeként előfordulhat, hogy a token élettartama nem elegendő. A hosszú ideig futó folyamat hitelesítéséről további információt a hosszan futó OBO-folyamatokban talál.