Condividi tramite


Configurare il provider non autenticato

Il Unauthenticated provider indica al generatore di API dati (DAB) di non esaminare o convalidare qualsiasi token Web JSON (JWT). Ogni richiesta viene eseguita con il ruolo di anonymous. Non esistono eccezioni all'interno di DAB.

Annotazioni

La funzionalità Generatore API dati 2.0 descritta in questa sezione è attualmente in anteprima e potrebbe cambiare prima della disponibilità generale. Per altre informazioni, vedere Novità della versione 2.0.

Usare questo provider quando si vuole che DAB consideri ogni richiesta come anonymous, anche se un altro servizio davanti a DAB esegue l'autenticazione o applica i criteri di accesso.

Importante

Il Unauthenticated provider non trasforma mai l'identità upstream in un'identità DAB. Se è necessario che DAB convalidi i token, attiva il ruolo authenticated, utilizza ruoli personalizzati o trasferisci attestazioni utente ai criteri a valle, utilizza un provider di convalida, ad esempioEntraId, Custom o AppService.

Flusso di autenticazione

Con il Unauthenticated provider, DAB ignora completamente la convalida dei token e valuta le autorizzazioni come anonymous:

Fase Che succede
Richiesta client Il client invia una richiesta a DAB, direttamente o tramite un altro servizio
Controlli upstream Un front-end, un gateway o un proxy può autenticare il chiamante o applicare l'accesso con granularità grossolana prima di inoltrare la richiesta
Inoltra richiesta La richiesta raggiunge DAB
Elaborazione DAB DAB non convalida i token JWT e considera sempre la richiesta come anonymous
Autorizzazione DAB valuta le autorizzazioni di entità per il ruolo anonymous

Quando usare questo provider

Usare Unauthenticated in questi scenari:

Scenario Buona forma? Perché
La gestione delle API o il gateway autenticano prima gli utenti. Il front-end può controllare l'accesso, mentre DAB ancora autorizza le richieste solo per il ruolo anonymous
Servizio solo interno dietro un limite di rete privata L'accesso alla rete è controllato all'esterno di DAB e DAB può rimanere anonymoussolo
Configurazione locale rapida senza configurare la convalida JWT Modo più semplice per iniziare
DAB esposto direttamente a browser o clienti pubblici No DAB non convalida i token di identità
È necessaria l'attivazione di authenticated o di ruoli personalizzati all'interno di DAB. No Solo anonymous è attivo con questo provider

Riferimento rapido

Impostazione Valore
Provider Unauthenticated
Token obbligatorio No
Ruolo DAB attivo anonymous
Supporta la convalida JWT No
Supporta il ruolo di authenticated No
Supportano i ruoli personalizzati No

Passaggio 1: Configurare il provider

Impostare il provider di autenticazione su Unauthenticated.

CLI

dab configure \
  --runtime.host.authentication.provider Unauthenticated

Configurazione risultante

{
  "runtime": {
    "host": {
      "authentication": {
        "provider": "Unauthenticated"
      }
    }
  }
}

Annotazioni

Il Unauthenticated provider è l'impostazione predefinita per le nuove configurazioni in DAB 2.0. L'esecuzione dab init crea una configurazione funzionante senza impostazioni JWT.

Passaggio 2: Configurare le autorizzazioni per le entità per anonymous

Poiché DAB considera tutte le richieste come anonymous, le entità devono concedere l'accesso al ruolo anonymous per qualsiasi operazione che si desidera consentire.

Configurazione di esempio

{
  "entities": {
    "Book": {
      "source": "dbo.Books",
      "permissions": [
        {
          "role": "anonymous",
          "actions": ["read"]
        }
      ]
    }
  }
}

Se un'entità concede l'accesso solo a authenticated o a un ruolo personalizzato, le richieste hanno esito negativo perché tali ruoli non vengono mai attivati quando Unauthenticated viene configurato.

Importante

Quando Unauthenticated è attivo, authenticated e i ruoli personalizzati definiti nelle autorizzazioni di entità non vengono mai attivati. Se la configurazione contiene tali ruoli, DAB genera un avviso all'avvio.

Passaggio 3: Inserire facoltativamente un altro servizio davanti a DAB

Un altro servizio può comunque autenticare i chiamanti o applicare regole di accesso con granularità grossolana prima che la richiesta raggiunga DAB. Ciò non modifica il comportamento di DAB:

  1. Autenticare il chiamante nel front-end, nel gateway o nel proxy.
  2. Applicare i criteri di accesso con granularità grossolana qui.
  3. Inoltrare le richieste approvate a DAB.
  4. Usare le autorizzazioni dell'entità DAB per controllare le operazioni che il anonymous ruolo può eseguire.

Questo modello funziona bene quando una piattaforma circostante gestisce chi può accedere a DAB, mentre DAB rimane intenzionalmente solo anonymous.

Cosa non fa questo provider

Il Unauthenticated fornitore non:

  • convalidare i token di portatore
  • attivare il ruolo authenticated
  • attivare ruoli personalizzati da claims
  • rendere disponibili dichiarazioni nei criteri di database
  • eseguire l'autorizzazione specifica dell'utente all'interno di DAB

Se sono necessarie queste funzionalità, usare un provider che fornisce l'identità a DAB.

Esempio di configurazione completo

{
  "$schema": "https://github.com/Azure/data-api-builder/releases/latest/download/dab.draft.schema.json",
  "data-source": {
    "database-type": "mssql",
    "connection-string": "@env('SQL_CONNECTION_STRING')"
  },
  "runtime": {
    "host": {
      "authentication": {
        "provider": "Unauthenticated"
      }
    }
  },
  "entities": {
    "Book": {
      "source": "dbo.Books",
      "permissions": [
        {
          "role": "anonymous",
          "actions": ["read"]
        }
      ]
    }
  }
}