Dela via


Översikt över serverdelsautentisering och auktorisering

Arbetsbelastningsexemplet för Infrastrukturutvecklare har följande autentiseringsflöden på serversidan.

Autentisering och auktorisering av begäranden från Infrastrukturresurser till arbetsbelastningen

Auktoriseringshuvudstruktur

Auktoriseringshuvudet använder ett specifikt tokenformat:

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

Det här formatet innehåller två distinkta token:

  • subjectToken: En delegerad token som representerar användaren för vars räkning åtgärden utförs.
  • appToken: En token som är specifik för Fabric-programmet.

Logiken bakom att använda en rubrik med dubbla token är tredubbel:

  • Validering: Arbetsbelastningen kan kontrollera att begäran kommer från Infrastrukturresurser genom att appTokenverifiera .

  • Användarkontext: Tillhandahåller subjectToken en användarkontext för åtgärden som utförs.

  • Kommunikation mellan tjänster: Arbetsbelastningen kan hämta en OBO-token (On-Behalf-Of) med hjälp av subjectToken, så att den kan anropa andra tjänster med en användartoken.

Autentisering

De viktigaste autentiseringskontrollerna som utförs för SubjectAndAppToken är:

  • Verifiering och parsning av värdet för auktoriseringshuvudet görs i metoden AuthenticateControlPlaneCall . Token måste börja med prefixet "SubjectAndAppToken1.0" och innehålla två token - subjectToken och appToken.

  • Validering av egenskaper för Entra-token: Båda subjectToken och appToken verifieras för vanliga Egenskaper för Microsoft Entra-token i metoden ValidateAadTokenCommon . Dessa egenskaper omfattar tokensignatur, tokenlivslängd, tokenpublik (målgrupp för arbetsbelastningsapp) och tokenversion (1.0) och utfärdare.

  • appToken-egenskapsvalidering: Ska appToken inte ha ett scp anspråk men bör ha ett idtyp anspråk med appen som värde. Vi kontrollerar också det tid anspråket i klient-ID:t för arbetsbelastningsutgivaren.

    Exempel på appToken-anspråk:

    {
    "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: Se till att subjectToken innehåller ett scp anspråk med omfånget FabricWorkloadControl , att det inte finns något idtyp anspråk i token och att det har samma appid som i appToken.

    Exempel på subjectToken-anspråk:

    {
    "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"
    }
    

Se IAuthenticationService.

Kommentar

Alla valideringar i vår exempelkod gäller för version 1.0-token.

Auktorisering

När du har bekräftat att begäran kommer från Fabric-tjänsten (via appToken), verifierade Infrastrukturresursen att användaren har de behörigheter som krävs för att utföra åtgärden, baserat på Fabrics behörighetsmetadata.

Autentisering och auktorisering av begäranden från arbetsbelastning till infrastrukturresurser

Begäranden om arbetsbelastningskontroll

API:er för arbetsbelastningskontroll är särskilda Infrastruktur-API:er som stöder arbetsbelastningar med livscykelhantering för infrastrukturobjekt. Dessa API:er använder samma subjectAndAppToken1.0-auktoriseringshuvudformat.

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

Samtal som kommer från arbetsbelastningen inkluderade följande token:

  • subjectToken: En användardelegeringstoken (hämtad via OBO-flödet) som representerar användaren för vars räkning åtgärden utförs. Fabric verifierar att användaren har de behörigheter som krävs för att utföra den nödvändiga åtgärden.

  • appToken: En token som är specifik för arbetsbelastningsprogrammet. Infrastrukturresurser kontrollerar att den här token kommer från Microsoft Entra-appen för arbetsbelastningen som det relevanta infrastrukturobjektet tillhör och som finns i arbetsbelastningsutgivarens klientorganisation.

ValidatePermissions Se metoden i AuthorizationHandler.

Offentliga API:er

Om du vill anropa offentliga Infrastruktur-API:er bör arbetsbelastningen hämta en Microsoft Entra OBO-standardtoken med relevanta API-omfång och skicka den som en ägartoken i begärans auktoriseringshuvud.

Se FabricExtensionController.

Autentisering och auktorisering av begäranden från arbetsbelastningen FE till arbetsbelastningEN BE

Auktoriseringshuvud

Auktoriseringshuvudet i en begäran som skickas från arbetsbelastningen FE till arbetsbelastningen BE använder en standard-ägartoken.

Autentisering

Metoden AuthenticateControlPlaneCall i arbetsbelastningen BE ansvarar för att verifiera token. De primära kontroller som utförs är:

  • Tokenlivslängd: Säkerställer att token ligger inom dess giltiga användningsperiod.

  • Signatur: Verifierar tokens äkthet.

  • Målgrupp: Kontrollerar att tokens målgrupp matchar arbetsbelastningens Microsoft Entra-app.

  • Utfärdare: Validerar utfärdaren av token.

  • Tillåtna omfång: Verifierar de omfång som token har åtkomst till.

Auktorisering uppnås genom att metoden ValidatePermissions anropas . Den här metoden anropar API:et resolvePermissions i fabric-arbetsbelastningskontrollslutpunkten för det relevanta infrastrukturobjektet och verifierar att användaren har de behörigheter som krävs för åtgärden.

Tidskrävande åtgärder – uppdateringstoken

Auktorisering uppnås genom att metoden ValidatePermissions anropas . Den här metoden anropar API:et resolvePermissions i fabric-arbetsbelastningskontrollslutpunkten för det relevanta infrastrukturobjektet och verifierar att användaren har de behörigheter som krävs för åtgärden.

Om dina arbetsbelastningar inkluderar tidskrävande åtgärder, till exempel som en del av JobScheduler , kan du stöta på en situation där tokenlivslängden inte räcker. Mer information om hur du autentiserar tidskrävande processer, långvariga OBO-processer.