Ö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
appToken
verifiera .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
ochappToken
.Validering av egenskaper för Entra-token: Båda
subjectToken
ochappToken
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 ettscp
anspråk men bör ha ettidtyp
anspråk med appen som värde. Vi kontrollerar också dettid
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ångetFabricWorkloadControl
, att det inte finns någotidtyp
anspråk i token och att det har sammaappid
som iappToken
.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" }
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.
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.