5

abbiamo la seguente:Come utilizzare l'autenticazione di Azure AD per l'applicazione Web ASP.NET MVC separata e i siti Web Api?

  • ASP.NET MVC applicazione 5 web ospitato sul nostro server aziendale (non Azure) per esempio, ourcompany.com. Questa non è un'applicazione AngularJS o singola pagina.
  • ASP.NET MVC WebApi 2 ospitato sul nostro server aziendale (non Azure), ad esempio api.azienda.com. Questo è un progetto separato dal sito Web in modo che possa essere accessibile da più app/siti.
  • Azure Active Directory per la nostra azienda

Quello che vogliamo fare è: visite

  1. utente del sito web e accede tramite l'autenticazione AD Azure.
  2. L'applicazione Web esegue il rendering delle pagine con JavaScript.
  3. Pagina JS chiamate API Web

vedo i docs/campioni nella documentazione azzurro da:

  • Web App per Azure AD
  • Web App per WebAPI
  • SPA a WebAPI

Se i componenti dell'API erano contenuti nel progetto di applicazione Web, la chiamata JS per m la pagina avrebbe accesso alle credenziali dell'utente. Tuttavia, con l'API separata, le domande sono come utilizzare l'autenticazione in # 1 per consentire al # 3 di chiamare il WebApi usando JS e avere accesso a tutte le informazioni di autenticazione?

+0

Esaurito. Devo fare qualcosa di simile. – Sam

risposta

0

Sono riuscito a ottenere uno scenario simile a lavorare iniziando dall'esempio WebApp a WebApi utilizzando Azure AD e OpenID Connect.

Calling a web API in a web app using Azure AD and OpenID Connect

Il campione fornisce single sign on per gli utenti sul web app e delegherà l'identità dell'utente dal web app al web api. Lo ha fatto recuperando un token al portatore nel controller dell'app Web e utilizzandolo per invocare l'API Web. Possiamo facilmente utilizzare lo stesso motivo portatore per effettuare una chiamata ajax javascript mettendo il token portatore sulla intestazione di autorizzazione:

//jQuery example 
settings.headers = { 
    'Authorization': 'Bearer ' + bearerToken, 
}; 

sono stato in grado di farlo funzionare senza adal.js liberary. Cors è ancora necessario per effettuare la chiamata ajax su più domini.