【问题标题】:JavaScript, NodeJavaScript, 节点
【发布时间】:2016-01-07 14:48:43
【问题描述】:

我正在使用 Exchange 客户端编写 Oauth。我已在 apps.dev.microsoft.com 上注册了我的应用程序。我将 JavaScript 与 Node.js 一起使用。为了执行 Oauth,我使用了具有几种不同策略的护照,但它们似乎都不适合我。其中一些缺少个人资料信息,而我使用的最后一个没有返回访问令牌。我已经调试了库,但我不知道我做错了什么。这是我正在使用的库:

https://github.com/Azure-Samples/active-directory-node-webapp-openidconnect。 我正在使用 OIDC 策略。 因此,这将返回一个配置文件 obj,但访问和刷新令牌是“未定义的”。它确实返回了一个授权“代码”来发出令牌请求。重定向 url,所有其他元数据都可以,例如: 提示:'登录', response_mode: '查询', 状态:真实, 授权网址:'https://login.microsoftonline.com/common/oauth2/v2.0/authorize', tokenURL: 'https://login.microsoftonline.com/common/oauth2/v2.0/token'

另外,客户端 ID、客户端密码和回调 URL 是正确的。

我是否在此过程中遗漏了一些重要的东西,或者带有护照的 MSFT oauth 被破坏了?

【问题讨论】:

  • 为什么这家伙会为此投反对票?对我来说,这是一个很好的问题。

标签: node.js azure oauth passport.js


【解决方案1】:

由于护照 SDK 不会在 user profile 中存储 accessTokenrefreshToken。所以我们可以修改sdk文件来获取token。

我们可以在node_modules/passport-azure-ad/lib/passport-azure-ad/oidcstrategy.js 开始在176 行中找到这些代码: log.info('TOKEN RECEIVED'); log.info('Access Token: ' + accessToken); log.info(''); log.info('Refresh Token: ' + refreshToken); log.info(''); log.info(params); log.info('----'); 我们可以发现profile 定义在229265 行中。为了方便使用,我们可以直接在profile中添加tokens,例如下面代码var profile = {};我们添加profile.accessToken = accessToken;

【讨论】:

    猜你喜欢
    • 2012-02-12
    • 1970-01-01
    • 2021-01-22
    • 2017-08-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    相关资源
    最近更新 更多