Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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 specifici.
Per simulare una richiesta autenticata senza configurare un provider di autenticazione, come ad esempio Microsoft Entra ID, è possibile utilizzare i provider di autenticazione Simulator o StaticWebApps.
Utilizzare il provider Simulator
Simulator è un provider di autenticazione configurabile che indica al motore di Generatore API dati di considerare 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-ROLEHttp.
Annotazioni
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 siano specificati il Simulator provider di autenticazione e la modalità development. 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 di API dati, non è necessaria alcuna intestazione personalizzata per impostare il contesto del ruolo sul ruolo di sistema Authenticated:
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 istruisce il Data API builder a cercare un set di intestazioni HTTP presenti solo durante l'esecuzione all'interno di un ambiente Static Web Apps. Il client imposta queste intestazioni HTTP durante l'esecuzione in locale per simulare un utente autenticato, inclusa qualsiasi appartenenza al ruolo o attestazioni personalizzate.
Annotazioni
Le istanze fornite dal client dell'intestazione Http, X-MS-CLIENT-PRINCIPAL, funzioneranno solo durante lo sviluppo in locale perché gli ambienti di app Web statiche di Azure di produzione rilasciano tutte le istanze fornite dal client di tale intestazione.
Assicurati che nel file di configurazione in uso sia presente il provider di autenticazione StaticWebApps. Fare riferimento a questa sezione di configurazione di esempio host :
"host": {
"mode": "development",
"authentication": {
"provider": "StaticWebApps"
}
}
1. Inviare richieste fornendo un'intestazione generata X-MS-CLIENT-PRINCIPAL
Dopo aver avviato Data API builder in locale e configurato per l'uso del provider di autenticazione StaticWebApps, è possibile generare manualmente un oggetto client utilizzando 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 |
|---|---|
| Fornitore di identità | Qualsiasi valore stringa. |
| ID utente | Un identificatore univoco per l'utente. |
| Dettagli utente | Nome utente o indirizzo di posta elettronica dell'utente. |
| userRoles | Matrice dei ruoli assegnati dell'utente. |
Annotazioni
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'