Condividi tramite


Autenticazione locale nel generatore di API dati

Quando si sviluppa una soluzione usando Generatore API dati in locale o quando si esegue Generatore API dati in locale, è necessario testare le opzioni di autenticazione e autorizzazione configurate simulando una richiesta con un ruolo o un'attestazione specifica.

Per simulare una richiesta autenticata senza configurare un provider di autenticazione , ad esempio Microsoft Entra ID, è possibile usare i Simulator provider di autenticazione o StaticWebApps :

Usare il Simulator provider

Simulator è un provider di autenticazione configurabile che indica al motore del generatore di API dati di trattare tutte le richieste come autenticate.

  • Come minimo, tutte le richieste vengono valutate nel contesto del ruolo Authenticateddi sistema .
  • Se lo si desidera, la richiesta viene valutata nel contesto di qualsiasi ruolo indicato nell'intestazione X-MS-API-ROLE Http.

Nota

Anche se il ruolo desiderato verrà rispettato, le autorizzazioni di autorizzazione che definiscono i criteri di database non funzioneranno perché le attestazioni personalizzate non possono essere impostate per l'utente autenticato con il Simulator provider. Passare alla sezione Usare il provider per testare i StaticWebApps criteri di autorizzazione del database.

1. Aggiornare il provider di autenticazione della configurazione di runtime

Assicurarsi che nel file di configurazione in uso sia specificato il provider di autenticazione e development la Simulator modalità. Fare riferimento a questa sezione di configurazione di esempio host :

"host": {
  "mode": "development",
  "authentication": {
    "provider": "Simulator"
  }
}

2. Specificare il contesto del ruolo della richiesta

Con Simulator come provider di autenticazione di Generatore API dati, non è necessaria alcuna intestazione personalizzata per impostare il contesto del ruolo sul ruolo Authenticateddi sistema :

curl --request GET \
  --url http://localhost:5000/api/books \

Per impostare il contesto del ruolo su qualsiasi altro ruolo, incluso il ruolo Anonymousdi sistema , l'intestazione X-MS-API-ROLE deve essere inclusa nel ruolo desiderato:

curl --request GET \
  --url http://localhost:5000/api/books \
  --header 'X-MS-API-ROLE: author' \

Usare il StaticWebApps provider

Il StaticWebApps provider di autenticazione indica al generatore di API dati di cercare un set di intestazioni HTTP presenti solo quando viene eseguito all'interno di un ambiente App Web statiche. Il client imposta queste intestazioni HTTP durante l'esecuzione in locale per simulare un utente autenticato, incluse eventuali appartenenze ai ruoli o attestazioni personalizzate.

Nota

Le istanze fornite dal client dell'intestazione Http, X-MS-CLIENT-PRINCIPAL, funzioneranno solo durante lo sviluppo in locale perché gli ambienti di produzione App Web statiche di Azure rilasciano tutte le istanze del client fornite di tale intestazione.

Assicurarsi che nel file di configurazione che si sta usando il StaticWebApps provider di autenticazione. Fare riferimento a questa sezione di configurazione di esempio host :

"host": {
  "mode": "development",
  "authentication": {
    "provider": "StaticWebApps"
  }
}

1. Inviare richieste che forniscono un'intestazione generata X-MS-CLIENT-PRINCIPAL

Dopo aver eseguito il generatore di API dati in locale e configurato per l'uso del StaticWebApps provider di autenticazione, è possibile generare manualmente un oggetto entità client usando il modello seguente:

{  
  "identityProvider": "test",
  "userId": "12345",
  "userDetails": "john@contoso.com",
  "userRoles": ["author", "editor"]
}

I metadati utente autenticati dell'app Web statica hanno le proprietà seguenti:

Proprietà Descrizione
identityProvider Qualsiasi valore stringa.
userId Identificatore univoco per l'utente.
userDetails Nome utente o indirizzo di posta elettronica dell'utente.
userRoles Matrice dei ruoli assegnati dell'utente.

Nota

Come indicato nella documentazione di App Web statiche, l'intestazione X-MS-CLIENT-PRINCIPAL non contiene la claims matrice.

Per essere passato con l'intestazione X-MS-CLIENT-PRINCIPAL , il payload JSON deve essere codificato in Base64. A tale scopo, è possibile usare qualsiasi strumento online o offline. Uno di questi strumenti è DevToys. Payload con codifica Base64 di esempio che rappresenta il codice JSON a cui si fa riferimento in precedenza:

eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9

La richiesta cURL seguente simula un utente autenticato che recupera l'elenco dei record di entità disponibili Book nel contesto del author ruolo:

curl --request GET \
  --url http://localhost:5000/api/books \
  --header 'X-MS-API-ROLE: author' \
  --header 'X-MS-CLIENT-PRINCIPAL: eyAgCiAgImlkZW50aXR5UHJvdmlkZXIiOiAidGVzdCIsCiAgInVzZXJJZCI6ICIxMjM0NSIsCiAgInVzZXJEZXRhaWxzIjogImpvaG5AY29udG9zby5jb20iLAogICJ1c2VyUm9sZXMiOiBbImF1dGhvciIsICJlZGl0b3IiXQp9'