gpt4 book ai didi

node.js - 如何使用nodejs api对react.js应用程序的azure广告帐户进行身份验证?

转载 作者:太空宇宙 更新时间:2023-11-04 00:13:36 24 4
gpt4 key购买 nike

我正在尝试创建一个前端使用 React、后端使用 Node.js 的 Web 应用程序。我希望我的用户使用他们的 Microsoft 公司帐户对应用程序进行身份验证。

我尝试使用this来自微软的文档,但这让我感到困惑。据我了解,步骤如下:

  1. 用户请求网络服务器运行应用
  2. 浏览器下载 React SPA 并使用 react-adal包,将用户重定向到 Azure AD 身份验证 URL,即 https://login.microsoftonline.com
  3. 用户成功验证身份后,它会向客户端的浏览器发送 token
  4. 我认为下一步是将请求发送到nodejs服务器,并在请求头中使用该 token ,这是正确的吗?

这是我在文档中找到的内容:

The token is cached and the client attaches it to the request as the bearer token when making calls to its Web API back end, which is secured using the OWIN middleware.

但是什么是 OWIN 中间件以及如何在我的 Nodejs 应用程序中使用它来确保 token 有效并由 Microsoft 为该用户生成?

最佳答案

以下是获取有关 api 的信息的链接:

https://login.microsoftonline.com/common/.well-known/openid-configuration或者 https://login.windows.net/common/.well-known/openid-configuration

根据上面的链接,这里是公钥的链接:

https://login.windows.net/common/discovery/keys

正如您所看到的,那里有 3 个公钥,从 token 的 header 中您可以找到哪一个是您的 token 。

现在使用 jsonwebtoken 包我可以验证 token :

const options = { 
algorithms: ['RS256'],
audience: [`${appId}`],
issuer: ['https://sts.windows.net/{your tenant ID}/'],
ignoreExpiration: false,
ignoreNotBefore: false,
};
const jwt = require('jsonwebtoken');
try {
const decoded = jwt.verify(token, publicKey, options);
return decoded;
} catch (error) {
console.log(error);
return false;
}

有关包的更多信息: https://github.com/auth0/node-jsonwebtoken#jwtverifytoken-secretorpublickey-options-callback

但当我添加标准开始和结束字符时它会起作用:

const publicKey = `
-----BEGIN CERTIFICATE-----
${key}
-----END CERTIFICATE-----
`;

这是一篇博客文章,可以帮助我找到答案:

https://nicksnettravels.builttoroam.com/post/2017/01/24/Verifying-Azure-Active-Directory-JWT-Tokens.aspx

关于node.js - 如何使用nodejs api对react.js应用程序的azure广告帐户进行身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48288606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com