当前位置: 首页 > 知识库问答 >
问题:

通过oauth2向Node.js验证Azure AD

赵飞语
2023-03-14

我想用节点js验证Azure活动目录中的用户(我是Azure和活动目录的新手),我读了很多留档,有两种方法可以做到这一点。第一:我的Web请求通过Microsoft提供给我的表单进行身份验证,然后用户登录,这重定向到我的URL

第二:(这是我需要的方式)我使用的是Oaust2,带有var Bearer的策略=要求('护照-azure-ad')。用于身份验证,我有我的客户端ID,tenanId,client_Secret等。作为第一步,我需要得到一个Acces_token,我通过邮递员向这个URL发送请求:

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

我在身上发送这些参数:< code > { grant _ type:client _ credentials,client _ id:1 f 7 BBC 3 e-19ed-4ae 5-b16d...,client_secret: 98ijhi7tuf...,资源: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个答案

孔乐邦
2023-03-14

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

任何包都依赖于MSAL。

 类似资料:
  • 我试图通过AzureAD使用OAuth2保护APIM API的安全,方法是阅读文章:使用OAuth 2.0 authorization with Azure AD保护Azure API管理中的web API后端 Azureapim-Oauth2 授权终结点URL(v1):https://login.microsoftonline.com/{tenant}/oauth2/authorize 令牌终结

  • 问题内容: 我有一个Node.js程序,该程序使用root帐户连接到本地MySQL数据库(这不是生产设置)。这是创建连接的代码: 它可以与MySQL 5.7一起使用,但是由于安装了MySQL 8.0,因此在启动Node.js应用程序时出现此错误: 看来根帐户使用了一种新的密码哈希方法: …但是我不知道为什么Node.js无法连接到它。我已经更新了所有npm软件包,但这仍然是一个问题。 我想保留新的

  • 问题内容: 在使用Play Framework调用OAuth2 :: retrieveAccessToken()之后,我正在执行简单的重定向。我将有趣的字符附加到了我从未放过的URL上,因此最终结果如下所示: http://本地主机:9000 /#_ = _ #_ = _来自哪里?这是路由文件中的路由定义: GET / Application.index 这是处理Facebook身份验证的控制器的

  • 问题内容: 是否有一个用于node.js的好的验证框架,该框架可以验证以下变量: 如果其类型为字符串,日期,数字等 最大和最小长度 电子邮件,电话 等等… 问题答案: 我最近发现了chriso的node- validator 。 例

  • 我正在尝试编写一个Python脚本,通过Spotify应用程序创建一个Spotify播放列表。我已经在Spotify的开发中心成功创建了一个应用程序,并将必要的变量输入到Spotipy的示例中(见下文)。但是,该脚本没有正确授权。我在服务器运行和不运行的情况下都进行了尝试,但都无济于事。堆栈上有类似的问题,但它们并没有提供完整的解决方案。任何建议都会很有帮助。 这是我通过命令提示符收到的消息: 用

  • 根据developer.yahoo.com/mail/和IMAP的回复: Yahoo Mail可以通过IMAP使用OAuth(2)身份验证访问。 我在https://developer.yahoo.com/apps/上注册了我的应用程序,所以我得到了客户端ID和客户端机密。我没有找到任何与邮件相关的作用域(API权限)。然而,我选择了所有API权限,这是在我注册我的应用程序时提出的。 我尝试实现O