Overzicht van back-endverificatie en autorisatie
Het voorbeeld van een infrastructuurontwikkelaarsworkload bevat de volgende verificatiestromen aan de back-endzijde.
Verificatie en autorisatie van aanvragen van Fabric naar de workload
Structuur van autorisatieheader
De autorisatieheader maakt gebruik van een specifieke tokenindeling:
SubjectAndAppToken1.0 subjectToken="delegated token", appToken="S2S token"
Deze indeling bevat twee afzonderlijke tokens:
subjectToken
: Een gedelegeerd token dat de gebruiker vertegenwoordigt namens wie de bewerking wordt uitgevoerd.appToken
: Een token dat specifiek is voor de Fabric-toepassing.
De logica achter het gebruik van een header met twee tokens is drievoudig:
Validatie: De workload kan controleren of de aanvraag afkomstig is van Fabric door het
appToken
te valideren.Gebruikerscontext: De
subjectToken
context van de gebruiker biedt een gebruikerscontext voor de actie die wordt uitgevoerd.Communicatie tussen services: de workload kan een OBO-token (On-Behalf-Of) verkrijgen met behulp van het
subjectToken
, zodat het andere services kan aanroepen met een gebruikerstoken.
Verificatie
De belangrijkste verificatiecontroles die worden uitgevoerd voor het SubjectAndAppToken zijn:
Validatie en parsering van de waarde van de autorisatieheader wordt uitgevoerd in de methode AuthenticateControlPlaneCall . Het token moet beginnen met het voorvoegsel SubjectAndAppToken1.0 en moet twee tokens bevatten ,
subjectToken
enappToken
.Validatie van entra-tokeneigenschappen: Beide
subjectToken
enappToken
worden gevalideerd voor algemene Eigenschappen van Microsoft Entra-token in de methode ValidateAadTokenCommon . Deze eigenschappen omvatten tokenhandtekening, levensduur van tokens, tokendoelgroep (workload-app-doelgroep) en tokenversie (1.0) en verlener.validatie van appToken-eigenschappen: de
appToken
claim mag geen claim hebbenscp
, maar moet eenidtyp
claim met de app hebben als waarde. We controleren ook detid
claim in de tenant-id van de workloaduitgever.Voorbeeld van appTokenclaims:
{ "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" }
validatie van subjectToken-eigenschappen: Zorg ervoor dat het subjectToken een
scp
claim bevat met hetFabricWorkloadControl
bereik, dat er geenidtyp
claim aanwezig is in het token en dat het hetzelfdeappid
heeft als in hetappToken
.Voorbeeld van subjectTokenclaims:
{ "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" }
Notitie
Alle validaties in onze voorbeeldcode zijn voor versie 1.0-tokens.
Autorisatie
Zodra is bevestigd dat de aanvraag afkomstig is van de Fabric-service (via de appToken
Fabric), controleert Fabric of de gebruiker over de benodigde machtigingen beschikt om de actie uit te voeren, op basis van de metagegevens van de machtigingen van Fabric.
Verificatie en autorisatie van aanvragen van werkbelasting naar Fabric
Aanvragen voor workloadbeheer
Workloadbeheer-API's zijn speciale Fabric-API's die workloads ondersteunen met het levenscyclusbeheer van fabric-items. Deze API's maken gebruik van dezelfde indeling van de subjectAndAppToken1.0-autorisatieheader.
SubjectAndAppToken1.0 subjectToken="delegated token", appToken="S2S token"
Aanroepen die afkomstig zijn van de workload, bevatten de volgende tokens:
subjectToken
: Een door de gebruiker gedelegeerd token (verkregen via de OBO-stroom) die de gebruiker vertegenwoordigt namens wie de bewerking wordt uitgevoerd. Fabric controleert of de gebruiker over de vereiste machtigingen beschikt om de benodigde actie uit te voeren.appToken
: Een token dat specifiek is voor de workloadtoepassing. Fabric controleert of dit token afkomstig is van de Microsoft Entra-app van de workload waartoe het relevante Fabric-item behoort en dat zich in de tenant van de uitgever van de workload bevindt.
Zie de ValidatePermissions
methode in AuthorizationHandler.
Openbare API's
Als u openbare Fabric-API's wilt aanroepen, moet de workload een standaard Microsoft Entra OBO-token verkrijgen met de relevante API-bereiken en deze doorgeven als een bearer-token in de autorisatieheader van de aanvraag.
Zie FabricExtensionController.
Verificatie en autorisatie van aanvragen van workload FE naar workload BE
Autorisatieheader
De autorisatieheader in een aanvraag die is verzonden van de workload FE naar de workload BE maakt gebruik van een standaard bearer-token.
Verificatie
De methode AuthenticateControlPlaneCall in de workload BE is verantwoordelijk voor het valideren van het token. De primaire controles die worden uitgevoerd, zijn:
Levensduur van token: zorgt ervoor dat het token binnen de geldige gebruiksperiode valt.
Handtekening: Verifieert de echtheid van het token.
Doelgroep: Controleert of de doelgroep van het token overeenkomt met de workload van de Microsoft Entra-app.
Uitgever: valideert de uitgever van het token.
Toegestane bereiken: valideert de bereiken waartoe het token toegang heeft.
Autorisatie wordt bereikt door de methode ValidatePermissions aan te roepen. Met deze methode wordt de resolvePermissions
API aangeroepen in het eindpunt voor workloadbeheer van fabric voor het relevante Fabric-item en wordt gecontroleerd of de gebruiker over de benodigde machtigingen voor de bewerking beschikt.
Langlopende bewerkingen - Token vernieuwen
Autorisatie wordt bereikt door de methode ValidatePermissions aan te roepen. Met deze methode wordt de resolvePermissions
API aangeroepen in het eindpunt voor workloadbeheer van fabric voor het relevante Fabric-item en wordt gecontroleerd of de gebruiker over de benodigde machtigingen voor de bewerking beschikt.
Als uw workloads langdurige bewerkingen bevatten, bijvoorbeeld als onderdeel van JobScheduler, kunt u een situatie tegenkomen waarin de levensduur van het token niet voldoende is. Voor meer informatie over het verifiëren van langlopend proces, langlopende OBO-processen.