Condividi tramite


Scenario: API Web che chiama un'API Web (Scenario "Per conto di")

Informazioni su come creare un'API Web che chiama un'altra API Web per conto dell'utente.

Prima di leggere questo articolo, è consigliabile avere familiarità con i concetti di AD FS e il flusso on-Behalf_Of

Panoramica

  • Un client (app Web), non rappresentato nel diagramma seguente, chiama un'API Web protetta e fornisce un token di connessione JWT nell'intestazione HTTP "Authorization".

  • L'API Web protetta convalida il token e usa il metodo AcquireTokenOnBehalfOf di MSAL per richiedere (da AD FS) un altro token in modo da poter chiamare autonomamente una seconda API Web (denominata API Web downstream) per conto dell'utente.

  • L'API Web protetta usa questo token per chiamare un'API downstream. Può anche chiamare AcquireTokenSilentlater per richiedere token per altre API downstream, ma sempre per conto dello stesso utente. AcquireTokenSilent aggiorna il token quando necessario.

    informazioni generali

Per comprendere meglio come configurare lo scenario di autenticazione "Per conto di" in AD FS, si userà un esempio disponibile qui e la procedura dettagliata per la registrazione dell'app e i passaggi di configurazione del codice.

Prerequisiti

  • Strumenti client di GitHub
  • AD FS 2019 o versioni successive configurati e in esecuzione
  • Visual Studio 2013 o versione successiva

Registrazione app in AD FS

Questa sezione mostra come registrare l'app nativa come client pubblico e le API Web come relying party in AD FS

  1. In Gestione di AD FS fare clic con il pulsante destro del mouse su Gruppi di applicazioni e selezionare Aggiungi gruppo di applicazioni.

  2. Nella configurazione guidata del gruppo di applicazioni immettere WebApiToWebApi in Nome e in Applicazioni client-server selezionare il modello Applicazione nativa che accede a un modello API Web. Fare clic su Avanti.

    Screenshot della pagina iniziale della Procedura guidata Aggiungi gruppo di applicazioni che mostra l'applicazione nativa che accede a un modello di API Web evidenziato.

  3. Copia il identificatore Client valore. Verrà usato in seguito come valore per ClientId nel file App.config dell'applicazione. Immettere le informazioni seguenti per URI di reindirizzamento: - https://ToDoListClient. Fare clic su Aggiungi. Fare clic su Avanti.

    Screenshot della pagina Applicazione nativa della Procedura guidata Aggiungi gruppo di applicazioni che mostra il reindirizzamento di U R I .

  4. Nella schermata Configura API Web, immettere l'identificatore:https://localhost:44321/. Fare clic su Aggiungi. Fare clic su Avanti. Questo valore verrà usato in seguito nei file App.config e Web.config dell'applicazione.

    Screenshot della pagina Configura API Web della Procedura guidata Aggiungi gruppo di applicazioni che mostra l'identificatore corretto.

  5. Nella schermata Applica criteri di controllo degli accessi, selezionare Autorizza tutti e fare clic su Avanti.

    Screenshot della pagina Scegli criteri Controllo di accesso della Procedura guidata Aggiungi gruppo di applicazioni che mostra l'opzione Consenti tutti evidenziata.

  6. Nella schermata Configura autorizzazioni applicazione selezionare openid e user_impersonation. Fare clic su Avanti.

    Screenshot della pagina Configura autorizzazioni applicazione della Procedura guidata Aggiungi gruppo di applicazioni che mostra l'opzione I D aperta selezionata.

  7. Nella schermata Riepilogo fare clic su Avanti.

  8. Nella schermata Completa fare clic su Chiudi.

  9. In Gestione di AD FS fare clic su Gruppi di applicazioni e selezionare il gruppo di applicazioni WebApiToWebApi. Fare clic con il pulsante destro del mouse e selezionare Proprietà.

    Screenshot della finestra di dialogo Gestione di A D F S che mostra il gruppo WebApiToWebApi evidenziato e l'opzione Proprietà nell'elenco a discesa.

  10. Nella schermata delle proprietà WebApiToWebApi fare clic su Aggiungi applicazione.

    Screenshot della finestra di dialogo Proprietà WebApiToWebApi che mostra l'applicazione WebApiToWebApi - Web A I elencata.

  11. In Applicazioni autonome selezionare Applicazione Server.

    Screenshot della pagina iniziale della procedura guidata Aggiungi una nuova applicazione a WebApiToWebApi che mostra l'opzione Applicazione server evidenziata.

  12. Nella schermata Applicazione server aggiungere https://localhost:44321/ come Identificatore client e URI di reindirizzamento.

    Screenshot della pagina Applicazione server della procedura guidata Aggiungi una nuova applicazione a WebApiToWebApi che mostra l'identificatore client corretto e reindirizza U R I.

  13. Nella schermata Configura credenziali applicazione selezionare Genera un segreto condiviso. Copiare il segreto per usarlo in un secondo momento.

    Screenshot della pagina Configura applicazione credenziali applicazione della procedura guidata Aggiungi una nuova applicazione a WebApiToWebApi che mostra l'opzione Genera un segreto condiviso selezionata e il segreto condiviso generato evidenziato.

  14. Nella schermata Riepilogo fare clic su Avanti.

  15. Nella schermata Completa fare clic su Chiudi.

  16. In Gestione di AD FS fare clic su Gruppi di applicazioni e selezionare il gruppo di applicazioni WebApiToWebApi. Fare clic con il pulsante destro del mouse e selezionare Proprietà.

    Secondo screenshot della finestra di dialogo Gestione di A D F S che mostra il gruppo WebApiToWebApi evidenziato e l'opzione Proprietà nell'elenco a discesa.

  17. Nella schermata delle proprietà WebApiToWebApi fare clic su Aggiungi applicazione.

    Secondo screenshot della finestra di dialogo Proprietà WebApiToWebApi che mostra l'applicazione WebApiToWebApi - Web A P I elencata.

  18. In Applicazioni autonome selezionare API Web.

    Screenshot della pagina iniziale della procedura guidata Aggiungi una nuova applicazione a WebApiToWebApi che mostra l'opzione Web A P I evidenziata.

  19. In Configura API Web aggiungere https://localhost:44300 come Identificatore.

    Screenshot della pagina Configure Web A P I della procedura guidata Add a new application to WebApiToWebApi (Aggiungi una nuova applicazione a WebApiToWebApi) che mostra il reindirizzamento corretto di U R I.

  20. Nella schermata Applica criteri di controllo degli accessi, selezionare Autorizza tutti e fare clic su Avanti.

    Screenshot della pagina Scegli criteri Controllo di accesso della procedura guidata Aggiungi una nuova applicazione a WebApiToWebApi che mostra l'opzione Consenti tutti evidenziata.

  21. Nella schermata Configura autorizzazioni applicazione fare clic su Avanti.

    Screenshot della pagina Configura autorizzazioni applicazione della procedura guidata Aggiungi una nuova applicazione a WebApiToWebApi che mostra l'opzione Avanti evidenziata.

  22. Nella schermata Riepilogo fare clic su Avanti.

  23. Nella schermata Completa fare clic su Chiudi.

  24. Fare clic su OK nella schermata WebApiToWebApi - Proprietà API Web 2

  25. Nella schermata Proprietà WebApiToWebApi selezionare WebApiToWebApi – API Web e fare clic su Modifica.

    Screenshot della finestra di dialogo Proprietà WebApiToWebApi che mostra l'applicazione WebApiToWebApi - Web A P I evidenziata.

  26. Nella schermata WebApiToWebApi – Proprietà API Web selezionare la scheda Regole di trasformazione rilascio e fare clic su Aggiungi regola.

    Screenshot della finestra di dialogo Proprietà WebApiToWebApi - Web A P che mostra la scheda Regole di trasformazione rilascio.

  27. Nell'Aggiunta guidata regole attestazione di trasformazione selezionare Invio di attestazioni mediante una regola personalizzata dall'elenco a discesa e fare clic su Avanti.

    Screenshot della pagina Selezione modello di regola dell'Aggiunta guidata regola attestazione trasformazione che mostra l'opzione Invia attestazioni tramite una regola personalizzata selezionata.

  28. Immettere PassAllClaims nel campo Nome regola attestazione e la regola di attestazione x:[] = issue(claim=x); nel campo Regola personalizzata e fare clic su >Fine.

    Screenshot della pagina Configura regola della Procedura guidata Aggiungi regola attestazione trasformazione che mostra la configurazione illustrata in precedenza.

  29. Fare clic su OK nella schermata WebApiToWebApi - Proprietà API Web

  30. Nella schermata Proprietà WebApiToWebApi selezionare WebApiToWebApi – API Web 2 e fare clic su Modifica
    Screenshot della finestra di dialogo Proprietà WebApiToWebApi che mostra l'applicazione WebApiToWebApi - Web A P 2 evidenziata..

  31. Nella schermata WebApiToWebApi – Proprietà API Web 2 selezionare la scheda Regole di trasformazione rilascio e fare clic su Aggiungi regola.

  32. Nell'Aggiunta guidata regole attestazione di trasformazione selezionare Invio di attestazioni mediante una regola personalizzata dall'elenco a discesa e fare clic su Avanti Secondo screenshot della pagina Seleziona modello di regola della Procedura guidata Aggiungi regola attestazione trasformazione che mostra l'opzione Invia attestazioni usando una regola personalizzata selezionata.

  33. Immettere PassAllClaims nel campo Nome regola attestazione e la regola di attestazione x:[] => issue(claim=x); nel campo Regola personalizzata e fare clic su Fine.

    Secondo screenshot della pagina Configura regola della Procedura guidata Aggiungi regola attestazione trasformazione che mostra la configurazione illustrata in precedenza.

  34. Fare clic su OK nella schermata WebApiToWebApi – Proprietà API Web 2 e quindi nella schermata Proprietà WebApiToWebApi.

Configurazione del codice

Questa sezione illustra come configurare un'API Web per chiamare un'altra API Web

  1. Scaricare l'esempio da qui

  2. Aprire l'esempio usando Visual Studio

  3. Aprire il file App.config. Modificare quanto segue:

    • ida:Authority: immettere https://[nome host di AD FS]/adfs/

    • ida:ClientId: immettere il valore dal passaggio 3 della sezione Registrazione app in AD FS precedente.

    • ida:RedirectUri: immettere il valore dal passaggio 3 della sezione Registrazione app in AD FS precedente.

    • todo:TodoListResourceId: immettere il valore dell'identificatore dal passaggio 4 della sezione Registrazione app in AD FS precedente.

    • ida: todo:TodoListBaseAddress: immettere il valore dell'identificatore dal passaggio 4 della sezione Registrazione app in AD FS precedente.

      Screenshot del file di configurazione dell'app che mostra i valori modificati.

  4. Aprire il file Web.config in ToDoListService. Modificare quanto segue:

    • ida:Audience: immettere il valore dell'identificatore client dal passaggio 12 della sezione Registrazione app in AD FS precedente.

    • ida:ClientId: immettere il valore dell'identificatore client dal passaggio 12 della sezione Registrazione app in AD FS precedente.

    • Ida: ClientSecret: immettere il valore del segreto condiviso copiato dal passaggio 13 della sezione Registrazione app in AD FS precedente.

    • ida:RedirectUri: immettere il valore RedirectUri dal passaggio 12 della sezione Registrazione app in AD FS precedente.

    • ida: AdfsMetadataEndpoint: immettere https://[nome host di AD FS]/federationmetadata/2007-06/federationmetadata.xml

    • ida:OBOWebAPIBase: immettere il valore dell'identificatore dal passaggio19 della sezione Registrazione app in AD FS precedente.

    • ida:Authority: immettere https://[nome host di AD FS]/adfs

      Screenshot del file di configurazione Web in ToDoListService che mostra i valori modificati.

  5. Aprire il file Web.config in WebAPIOBO. Modificare quanto segue:

    • ida: AdfsMetadataEndpoint: immettere https://[nome host di AD FS]/federationmetadata/2007-06/federationmetadata.xml

    • ida:Audience: immettere il valore dell'identificatore client dal passaggio 12 della sezione Registrazione app in AD FS precedente.

      Screenshot del file di configurazione Web in WebAPIOBO che mostra i valori modificati.

Testare l'esempio

Questa sezione mostra come testare il campione configurato in precedenza.

Dopo aver apportato le modifiche al codice, ricompilare la soluzione

  1. In Visual Studio fare clic con il pulsante destro del mouse sulla soluzione e selezionare Imposta progetti di avvio.

    Screenshot dell'elenco visualizzato quando si fa clic con il pulsante destro del mouse sulla soluzione con l'opzione Configura progetti di avvio evidenziata.

  2. Nelle pagine delle proprietà assicurarsi che l’opzione Azione sia impostata su Avvia per ognuno dei progetti, ad eccezione di TodoListSPA.

    Screenshot della finestra di dialogo Pagine delle proprietà della soluzione che mostra l'opzione Più progetti di avvio selezionata e tutte le azioni dei progetti impostate su Avvia.

  3. Nella parte superiore di Visual Studio fare clic sulla freccia verde.

    Screenshot dell'interfaccia utente di Visual Studio con l'opzione Start evidenziata.

  4. Nella schermata principale dell'app nativa fare clic su Accedi.

    Screenshot della finestra di dialogo To Do List Client .

    Se non viene visualizzata la schermata dell'app nativa, cercare e rimuovere i file *msalcache.bin dalla cartella in cui è salvato il repository del progetto sul sistema.

  5. Si sarà reindirizzati alla pagina di accesso di ADFS. Andare avanti ed eseguire l'accesso.

    Screenshot della pagina Di accesso.

  6. Dopo aver eseguito l'accesso, immettere testo API Web nella chiamata API Web in Crea un'attività. Fare clic su Aggiungi elemento. Verrà chiamata l'API Web (Servizio elenco attività) che chiama quindi l'API Web 2 (WebAPIOBO) e aggiunge l'elemento nella cache.

    Screenshot della finestra di dialogo To Do List Client con la nuova attività che popola la sezione Elementi attività.

Passaggi successivi

Flussi e scenari applicativi di OpenID Connect/OAuth in AD FS