Muistiinpano
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää kirjautua sisään tai vaihtaa hakemistoa.
Tämän sivun käyttö edellyttää valtuutusta. Voit yrittää vaihtaa hakemistoa.
Authorizer User-Defined Functions (UDF) mahdollistavat räätälöidyn valtuutuslogiikan suorittamisen ennen kuin GraphQL API -pyyntö käsitellään. Tämä ominaisuus mahdollistaa API:n omistajille yrityskohtaisten pääsysääntöjen valvomisen, jotka menevät staattisten roolien jakamista pidemmälle. Authorizer UDF:n avulla voit arvioida tietoja todennetusta pyynnöstä – kuten vaatimuksia JSON Web Token (JWT) -tokenissa – ja päättää, tulisiko pyyntö sallia. Logiikka toteutetaan funktiona ja kutsutaan automaattisesti saapuville API-kutsuille.
Käyttötapaukset
Käytä valtuuttajan käyttäjätietotoimintoa, kun tarvitset:
- Sovella räätälöityä liiketoimintalogiikkaa ennen API:n suoritusta
- Rajoita pääsyä käyttäjä-identiteetin tai token-vaatimusten perusteella
- Validoi palveluperiaate erikseen käyttäjätileistä
Miten valtuutusominaisuus toimii
Kun räätälöity valtuutus on käytössä käyttäjätietotoiminnolla:
- Funktio käynnistyy ennen kuin GraphQL API käynnistyy.
- Se vastaanottaa kontekstin todennuksesta todennetusta pyynnöstä.
- Mukautettu logiikka tarkistaa valtuutuksen.
- API-pyyntö etenee, jos valtuutus onnistuu, muuten se hylätään.
- Tulos saavutetaan nopeammin tulevia pyyntöjä varten.
Käyttäjätietofunktion luominen
Fabric-käyttäjätietofunktion valtuutusfunktio vaatii tietyn muodon.
- Funktion nimi voidaan määritellä käyttäjän mukaan. Sillä ei ole GraphQL-kohtaisia rajoituksia, ja se tulisi määritellä käyttäjädatan funktiorajoitusten perusteella.
- Funktion argumentin/parametrin nimen tulisi olla request, ja sen tulisi olla tyyppisanakirja. Kun GraphQL-palvelu kutsuu funktion, se lähettää hyötykuorman, joka sisältää sanakirjan nimeltä request seuraavilla kentillä:
- tokenClaims (sanakirja): avain-arvoparit, jotka sisältävät token-vaatimuksia, jotka on poimittu saapuvasta käyttäjätunnuksesta.
- query(merkkijono): kyselymerkkijono, joka välittyy, kun GraphQL API kutsutaan.
- variables(sanakirja): avain-arvoparit, jotka sisältävät muuttujia, jotka välittyvät, kun GraphQL API kutsutaan.
-
Palautustyyppi (sanakirja): Funktio lähettää takaisin
isAuthorized.
Esimerkki
Luo käyttäjätietofunktio Fabric portal. Päivitä funktiokoodi tällä esimerkkivaltuutusfunktiolla.
from typing import TYPE_CHECKING
import fabric.functions as fn
import logging
user data function = fn.UserDataFunctions()
@user data function.function()
def invokeauthudf(request: dict) -> dict:
token_claims: dict = request.get("tokenClaims", {})
query: str = request.get("query", "")
variables: dict = request.get("variables", {})
domain = "onmicrosoft.com"
spn = "59f4323d-c886-4eaf-b686-1219c4f380ab"
# Extract claims from token_claims dictionary
tid_claim = token_claims.get("tid")
upn_claim = token_claims.get("upn")
appid_claim = token_claims.get("appid")
logging.info(f"Query: {query}");
logging.info(f"Claims: {token_claims}");
logging.info(f"Tenant: {tid_claim}");
logging.info(f"UPN: {upn_claim}");
logging.info(f"SPN: {appid_claim}");
# Authorization logic
if upn_claim is not None:
is_authorized = domain in upn_claim
else:
is_authorized = spn in appid_claim
logging.info(f"Authorized: {is_authorized}")
logging.info(f"SPN: {spn}")
logging.info(f"App ID: {appid_claim}")
return {
"isAuthorized": is_authorized
}
Mitä tämä toiminto tekee?
- Tämä Authorizerin käyttäjätietotoiminto suoritetaan ennen kuin GraphQL-pyyntö suoritetaan, lukee identiteettivaatimukset (UPN, sovellus-ID) kutsujan JSON Web Token (JWT) -tokenista ja kirjaa pyyntöjen tiedot.
- Se valtuuttaa käyttäjät tarkistamalla, kuuluuko heidän sähköpostinsa (UPN) tiettyyn verkkotunnukseen, ja valtuuttaa palvelupäähenkilöt yhdistämällä tunnetun sovellustunnuksen.
- Tuloksen perusteella palautetaan isAuthorized.
Lisää yhteys käyttäjätietofunktioon
Ennen ominaisuuden käyttöönottoa sinun täytyy lisätä yhteys käyttäjätietofunktiotyypille.
- Asetuksista valitse Hallinnoi yhteyksiä ja portteja.
- Linkit-välilehdeltä valitse Uusi.
- Uusi yhteys -sivulla valitse Pilvi, anna yhteydellesi nimi ja valitse yhteystyypiksi käyttäjätietofunktio. Käytä OAUth-menetelmää ja päivitä tunnistetiedot todennuksia varten. Sinun ei tarvitse valita "Salli tämän yhteyden käytön joko paikallisissa dataporteissa tai VNet-dataporteissa" tätä yhteyttä luodessasi.
Ota valtuutusominaisuus käyttöön
Ota valtuutusominaisuus käyttöön, kun funktio ja yhteys tälle käyttäjätietofunktiotyypille on asetettu. Tarvitset kirjoitusoikeudet tämän ominaisuuden käyttöönottoon tai poistamiseen.
- Avaa GraphQL-kohteen API ja valitse Asetukset.
- Valitse Valtuutus (Esikatselu) ja ota ominaisuus käyttöön.
- Anna käyttäjätietofunktiokohde ja haluamasi autentiusfunktio.
Rajoitukset ja käyttäytyminen
| Kategoria | Yksityiskohdat |
|---|---|
| Todentaminen | Vain OAuthia tuetaan |
| B2B-tuki | Ei saatavilla vieraskäyttäjille yhteysrajoitusten vuoksi |
| Käyttöoikeudet | Kirjoitusvaatimus konfigurointiin; API-kutsujen suorittaminen vaaditaan |
| Tuettomat konfiguraatiot | SPN, jossa objektitunniste (OID) ei tue |
| Caching | Muutosten tekeminen voi kestää jopa 15 minuuttia |
| Alueriippuvuus | UDF:n ja GraphQL:n on oltava samalla alueella |
| Yksityinen linkki | Ei tuettu, jos julkinen pääsy on estettyä |
| Valtuutuksen epäonnistumiset | Tapahtuu, kun isAuthorized = false |