2017-08-03 38 views
6

Jestem nowy z Node js i chcę uwierzytelniać się z Azure Active Directory. Pobrałem Node i zainstalowane KMP jak wspomniano HereProblem z integracją z Active Directory Nodejs

npm install express 
npm install ejs 
npm install ejs-locals 
npm install restify 
npm install mongoose 
npm install bunyan 
npm install assert-plus 
npm install passport 
npm install passport-azure-ad 

po tym, jak na dokumencie Śledziłem Krok 3: Skonfiguruj swoją aplikację do korzystania z paszportu-node-js strategię

Oto config .js

exports.creds = { 
    returnURL: 'https://hpe.onmicrosoft.com/8d332647-xxxx-4xxc-8xx-11776XXXXX', 
    identityMetadata: 'https://login.microsoftonline.com', // For using Microsoft you should never need to change this. 
    clientID: '22XXXX9-b5fa-XXXXb-bc7a-XXXXXXXa92a', 
    clientSecret: 'Srekv8dM1NqP4Sqnxxxxxxxxxxxx', // 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 
}; 

i pozostałą część kodu napisałem zgodnie z dokumentem.

Ale po uruchomieniu app.js dostaję problemy.

C:\Nikunj Data\Project\Active Directory\WebApp-OpenIDConnect-NodeJS-skeleton\node_modules\passport-azure-ad\lib\validator.js:51 
     throw new TypeError(`Invalid value for ${item}.${checker.error}`); 
    ^

TypeError: Invalid value for redirectUrl.The URL must be valid and be https:// 
    at Object.keys.forEach (C:\Nikunj Data\Project\Active Directory\WebApp-OpenIDConnect-NodeJS-skeleton\node_modules\passport-azure-ad\lib\validator.js:51:13) 
    at Array.forEach (native) 
    at Validator.validate (C:\Nikunj Data\Project\Active Directory\WebApp-OpenIDConnect-NodeJS-skeleton\node_modules\passport-azure-ad\lib\validator.js:37:28) 
    at new Strategy (C:\Nikunj Data\Project\Active Directory\WebApp-OpenIDConnect-NodeJS-skeleton\node_modules\passport-azure-ad\lib\oidcstrategy.js:495:13) 
    at Object.<anonymous> (C:\Nikunj Data\Project\Active Directory\WebApp-OpenIDConnect-NodeJS-skeleton\app.js:42:14) 
    at Module._compile (module.js:569:30) 
    at Object.Module._extensions..js (module.js:580:10) 
    at Module.load (module.js:503:32) 
    at tryModuleLoad (module.js:466:12) 
    at Function.Module._load (module.js:458:3) 

Proszę mi pomóc ..

Pozdrowienia Nikunj

Spróbuj 1: Próbowałem sugerowane Nan Yu jest kod i mam błąd:

(node:2628) DeprecationWarning: `open()` is deprecated in mongoose >= 4.11.0, use `openUri()` instead, or set the `useMongoClient` option if using `connect()` or `createConnection()`. See http://mongoosejs.com/docs/connections.html#use-mongo-client 

events.js:182 
     throw er; // Unhandled 'error' event 
    ^
MongoError: failed to connect to server [localhost:27017] on first connect [MongoError: connect ECONNREFUSED 127.0.0.1:27017] 
    at Pool.<anonymous> (C:\Nikunj Data\Project\Active Directory\WebApp-OpenIDConnect-NodeJS-master\node_modules\mongodb\node_modules\mongodb-core\lib\topologies\server.js:329:35) 
    at emitOne (events.js:115:13) 
    at Pool.emit (events.js:210:7) 
    at Connection.<anonymous> (C:\Nikunj Data\Project\Active Directory\WebApp-OpenIDConnect-NodeJS-master\node_modules\mongodb\node_modules\mongodb-core\lib\connection\pool.js:280:12) 
    at Object.onceWrapper (events.js:318:30) 
    at emitTwo (events.js:125:13) 
    at Connection.emit (events.js:213:7) 
    at Socket.<anonymous> (C:\Nikunj Data\Project\Active Directory\WebApp-OpenIDConnect-NodeJS-master\node_modules\mongodb\node_modules\mongodb-core\lib\connection\connection.js:187:49) 
    at Object.onceWrapper (events.js:316:30) 
    at emitOne (events.js:115:13) 
    at Socket.emit (events.js:210:7) 
    at emitErrorNT (internal/streams/destroy.js:62:8) 
    at _combinedTickCallback (internal/process/next_tick.js:102:11) 
    at process._tickCallback (internal/process/next_tick.js:161:9) 

Odpowiedz

3

proszę patrz przykład kodu: Azure Active Directory OIDC Web Sample

Adres URL przekierowania powinien odpowiadać adresowi URL odpowiedzi zarejestrowanemu w aplikacji AAD dla Twojej aplikacji. W tym dokumencie, to http://localhost:3000/auth/openid/return

Aktualizacja

Aby przykładowy kod https://github.com/AzureADQuickStarts/WebApp-OpenIDConnect-NodeJS praca, patrz poniżej kroków:

  1. Zaloguj się do portalu Azure.

  2. Na górnym pasku kliknij swoje konto i pod listą Katalog wybierz najemcę Active Directory, w którym chcesz zarejestrować swoją aplikację.

  3. Kliknij Więcej usług w lewym panelu nawigacyjnym i wybierz polecenie Azure Active Directory.

  4. Kliknij na App registrations i wybierz Dodaj.

  5. Wprowadź przyjazną nazwę aplikacji, na przykład "WebApp-OpenIDConnect-nodejs" i wybierz "Aplikacja internetowa i/lub Web API" jako Typ aplikacji. W przypadku adresu URL wpisania podaj podstawowy adres URL próbki, która domyślnie jest http://localhost:3000/. Kliknij Utwórz, aby utworzyć aplikację.

  6. Będąc wciąż w portalu Azure, wybierz swoją aplikację, kliknij Settings i wybierz Reply URLs. Dodaj adres URL odpowiedzi: http://localhost:3000/auth/openid/return, kliknij przycisk Zapisz.

  7. Znajdź wartość identyfikatora aplikacji i skopiuj go do schowka. Otwórz plik config.js w przykładowym kodzie, zastąp wartość clientID wartością identyfikatora aplikacji.

  8. Ustawienie identityMetadata z nazwą domeny lub identyfikatorem dzierżawcy.

  9. W portalu Azure wybierz swoją aplikację, kliknij Settings i wybierz Keys. Dodaj klucz aplikacji i skopiuj go do clientSecret w config.js.

  10. Ustawianie useMongoDBSessionStore true, jeśli chcesz korzystać z magazynu sesji dla sesji MongoDB middleware, zaktualizuj poprawną wartość URL bazy danych do exports.databaseUri . Inaczej ustawić useMongoDBSessionStore false aby użyć domyślnego magazynu sesji.

  11. Uruchom aplikację. Użyj następującego polecenia w terminalu: node app.js.

  12. Otwórz przeglądarkę, wpisz http://localhost:3000 i wypróbuj aplikację.

+0

(węzeł: 2628) DeprecationWarning: 'otwarty() 'jest przestarzała gambianus> = 4.11.0 stosując' openUri() 'zamiast lub ustawienia opcji' useMongoClient' przypadku korzystania' połączenia() ' lub 'createConnection()'. Zobacz http://mongoosejs.com/docs/connections.html#use-mongo-client events.js: 182 throw er; // Nieobsługiwane zdarzenie "błąd" ^ MongoError: nie można połączyć się z serwerem [localhost: 27017] przy pierwszym połączeniu [MongoError: connect ECONNREFUSED 127.0.0.1:27017] w puli. (C: \ Nikunj Data \ Project \ Active ...................... –

+0

Mam ten błąd po pobraniu i wypróbuję ten kod –

+0

Do testowania, ustaw eksport .useMongoDBSessionStore w config.js na false, jeśli chcesz użyć domyślnego magazynu sesji dla sesji ekspresowej –