2016-01-25 10 views
6

Sto tentando di utilizzare Azure Active Directory per autenticare gli utenti per la mia applicazione web node.js, finora senza fortuna.Qualcuno ha utilizzato correttamente Azure AD per autenticare gli utenti di un'applicazione Web Node.js?

Mi chiedo se qualcuno lo abbia mai raggiunto da quando la documentazione è piuttosto scarsa. Di solito c'è un codice di esempio, ma in realtà non c'è alcuna indicazione su quali siano i parametri richiesti e quali dovrebbero essere.

Ho provato passport-azure-ad (che penso sia di Microsoft) e passport.azure-ad-oauth2 (che proviene da Auth0 (?)). Per passport-azure-ad, ho provato BearerStrategy e anche OIDCStrategy senza fortuna.

Per BearerStrategy Ricevo un messaggio criptico sul mio client e sulla risorsa che identifica la stessa applicazione, ma poiché non c'è documentazione che dimostri cosa dovrebbero essere, sono in perdita.

Per OIDCStrategy, sono un po 'più vicino nel fatto di essere reindirizzato a Microsoft per l'autenticazione, ma al ritorno viene visualizzato l'errore "Errore: ID Token non presente nella risposta". Immagino che la mia richiesta non sia abbastanza corretta da restituirmi un token per qualsiasi ragione, ma poiché non c'è documentazione ... (hai capito l'idea).

In ogni caso, se qualcuno ha effettivamente raggiunto con successo e è in grado di condividere alcune indicazioni su come è stato raggiunto, sarebbe grandioso.

Molte grazie.

risposta

0

Microsoft usa Node.js per autenticare e scrivere gli strumenti Azure xplat.

Guardare attraverso il loro codice, vi aiuterà a capire come lo fanno!

6

Ecco un esempio di codice relativo all'integrazione di Azure AD in un'applicazione Web NodeJS fornita da Microsoft su GitHub, https://github.com/Azure-Samples/active-directory-node-webapp-openidconnect.

E per eseguire l'esempio, è necessario configurare alcune impostazioni nel codice di esempio relativo a Azure AD.

possiamo trovare il contenuto come di seguito indicato nel file config.js nella directory principale dell'applicazione:

exports.creds = { 
    returnURL: 'http://localhost:3000/auth/openid/return', 
    identityMetadata: 'https://login.microsoftonline.com/common/.well-known/openid-configuration', // For using Microsoft you should never need to change this. 
    clientID: '<your app id>', 
    clientSecret: '<your secret>', // if you are doing code or id_token code 
    skipUserProfile: true, // for AzureAD should be set to true. 
    responseType: 'id_token code', // for login only flows use id_token. For accessing resources use `id_token code` 
    responseMode: 'query', // For login only flows we should have token passed back to us in a POST 
    //scope: ['email', 'profile'] // additional scopes you may wish to pass 
}; 

ora effettua il login Azure gestire portale, intestazione per la pagina dell'applicazione AD Azure. Fare clic sulla scheda CONFIGURE per configurare l'annuncio.

  • ingresso del returnURL nel config.js nella forma REPLY URL sotto il single sign-on sezione: enter image description here

  • riempire il AD endpoint Azure dell'applicazione dC nella proprietà identityMetadata in config.js. Come dice il commento nel codice, se Azure AD è nel dominio Microsoft come: enter image description here Quindi non è necessario modificare le impostazioni.In caso contrario, è necessario sostituire il common nell'endpoint in config.js al tuo ID AD, è possibile fare clic sul VISTA ENDPOINT al NAV fondo per trovare l'ID: enter image description here

  • configurare il clientID e clientSecret in config.js. Puoi trovarli tutti nella pagina CONFIGRE della tua applicazione AD: enter image description here Informazioni sulla chiave, puoi selezionare il menu a discesa per selezionare una durata di un tasto per crearne uno nuovo, fare clic sul pulsante Salva in fondo nav, puoi vedere i dati chiave al primo tentativo di creazione.

Dopo aver completato questi passaggi, è possibile provare il progetto di esempio.

+0

Grazie per la risposta. L'ho provato, ma non ha funzionato. Il codice microsoft originale avevo identityMetadata come https://login.microsoftonline.com/common/v2.0/.well-known/openid-configuration ma da quando lo ho modificato in https://login.microsoftonline.com/common/. ben noto/openid-configurazione come nel tuo esempio, ho avuto un po 'più fortuna ... – Darren

+0

Ti capita ancora il problema dopo aver cambiato l'endpoint in 'https://login.microsoftonline.com/common/.well -known/openid-configuration'? –

+0

Il nuovo (vecchio?) Endpoint sembra funzionare. Sono un po 'a disagio, anche se l'esempio ha quello che sembra essere un nuovo endpoint e perché dovrebbero utilizzare un endpoint nell'esempio che non funziona? Molte grazie per le vostre risposte ... – Darren

1

Per me questo (Nessuna soluzione Codice) ha lavorato nel new Azure Portal:

  • ospitare il mio Node.js Server
  • aggiungere un annuncio alla sottoscrizione
  • Registrati nuova applicazione all'interno dell'annuncio
  • Aggiungi "https://YourNodeJS.azurewebsites.net/.auth/login/aad/callback" come risposta URL
  • In AppServices, seleziona il tuo server Node.js
  • In Impostazioni vai al autenticazione/autorizzazione
  • Attiva AAD
  • Utilizzare la modalità avanzata di AAD
  • Inserire il ClientID (GUID) dell'applicazione registrato in precedenza in AD
  • Come issuerURL entrare in questo link: https://sts.windows.net/YourADGuid/ (si può vedere il GUID all'interno di "Endpoint" se si guarda indietro alla domanda registrata in AD in alto)