аутентифицировать Azure AD с Node.js через oauth2 - PullRequest
0 голосов
/ 03 октября 2019

каждый, кому я хочу аутентифицировать пользователей в активном каталоге Azure с помощью узла js (я действительно новичок в Azure и активном каталоге), я прочитал много документации, существует два способа сделать это. во-первых: мой веб-запрос проходит проверку подлинности через форму, которую мне предоставляет Microsoft, затем пользователь входит в систему и перенаправляет на мой URL <--- таким образом, мне не нужно </p>

, во-вторых: (этокак мне нужно) я использую Oauth2, с var BearerStrategy = require('passport-azure-ad').BearerStrategy для аутентификации, у меня есть мой идентификатор клиента, tenanId, client_Secret и т. д. В качестве первого шага мне нужно получить Acces_token, который я получаю запрос на отправку на этот URL через почтальона:

https://login.microsoftonline.com/My_alias_tenan/oauth2/token

Я отправляю следующие параметры на моем теле: {grant_type: client_credentials, client_id: 1f7bbc3e-19ed-4ae5-b16d..., client_secret: 98ijhi7tuf..., resource: https://management.azure.com/, .... }

Я просто слежу за этим блогом: https://blog.jongallant.com/2017/11/azure-rest-apis-postman/

я получил токен, подобный следующему:


"token_type": "Bearer",
    "expires_in": "3600",
    "ext_expires_in": "3600",
    "expires_on": "1570045543",
    "not_before": "1570041643",
    "resource": "https://management.azure.com/",
    "access_token": "eyJ0eXAiOiJKV

, который я ввожу в заголовок для моего следующего запроса, который указывает на мой локальный хост: потому что именно здесь у меня есть варианты отправки аутентификации, и это:


      identityMetadata: 'https://login.microsoftonline.com/alias_tenan/v2.0/.well-known/openid-configuration',
      clientID: process.env.AD_CLIENT_ID,
      audience : 'https://management.azure.com/',
      validateIssuer: false,
      passReqToCallback: true,
      isB2C: false,  
      allowMultiAudiencesInToken: false, 
      issuer:null,
      loggingLevel: 'info',
      loggingNoPII: false,
      responseMode: query

У меня есть такой код:


    return passport.authenticate('oauth-bearer', function(req, token, done) {
        console.log(token)    
        res.status(200).json({'name': 'name'});
    }
    )(req, res, next)

, но всегда получаю это сообщение:

    {"name":"AzureAD: Bearer Strategy","hostname":"DESKTOP-U0R9GTV","pid":1168,"level":30,"msg":"authentication failed due to: error: invalid_token","time":"2019-10-02T22:54:04.782Z","v":0}

Кто-нибудь сделал это успешно? спасибо заранее, и я надеюсь, что кто-нибудь может мне помочь.

1 Ответ

0 голосов
/ 03 октября 2019

Используйте любые пакеты npm, я использую https://www.npmjs.com/package/react-aad-msal для единого входа. Еще один полезный пакет: https://www.npmjs.com/package/@kdpw/msal-b2c-react

. Любой пакет использует MSAL.

...