使用 Node.js 通过 oauth2 对 Azure AD 进行身份验证



我想使用node js对Azure Active Directory中的用户进行身份验证(我在Azure和Active Directory中真的很新(,我阅读了很多文档,有两种方法可以做到这一点。 首先:我的 Web 请求通过 Microsoft 提供给我的表单进行身份验证,然后用户登录并重定向到我的 URL <---这样我不需要

第二:(这是我需要的方式(我正在使用 Oauth2,与var BearerStrategy = require('passport-azure-ad').BearerStrategy进行身份验证,我有我的客户端ID,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}

有没有人成功地做到这一点? 提前致谢 我希望任何人都可以帮助我。

使用任何 npm 包,我使用 https://www.npmjs.com/package/react-aad-msal 进行单点登录。 另一个有用的软件包是 https://www.npmjs.com/package/@kdpw/msal-b2c-react

任何包都依赖于 MSAL。

最新更新