Räätälöity valtuutus käyttäjätietofunktioilla GraphQL API:lle

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.

  1. 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.
  2. 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.

  1. Asetuksista valitse Hallinnoi yhteyksiä ja portteja.
  2. Linkit-välilehdeltä valitse Uusi.
  3. 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.

  1. Avaa GraphQL-kohteen API ja valitse Asetukset.
  2. Valitse Valtuutus (Esikatselu) ja ota ominaisuus käyttöön.
  3. 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

Seuraavat vaiheet