我正在使用Exchange客户端编写Oauth . 我在apps.dev.microsoft.com上注册了我的应用程序 . 我在Node.js上使用JavaScript . 为了执行Oauth,我使用了几种不同策略的护照,但它们似乎都不适合我 . 他们中的一些人缺少 Profiles 信息,我正在使用的最后一个不会返回访问令牌 . 我调试了lib,但我不知道我做错了什么 . 这是我正在使用的lib:
https://github.com/Azure-Samples/active-directory-node-webapp-openidconnect . 我正在使用OIDC策略 . 因此,这将返回一个配置文件obj,但访问和刷新令牌是"undefined" . 它确实返回一个授权'code'来发出令牌请求 . 重定向网址,所有其他元数据都很好,例如:prompt:'login',response_mode:'query',state:true,authorizationURL:'https://login.microsoftonline.com/common/oauth2/v2.0/authorize ', tokenURL: ' https://login.microsoftonline.com/common/oauth2/v2.0/token'
此外,客户端ID,客户端密钥和callbackURL是正确的 .
我是否错过了这个过程中必不可少的东西或MSFT oauth护照被打破了?
1 回答
由于护照SDK不在
user profile
中存储accessToken
和refreshToken
. 所以我们可以修改sdk文件来获取令牌 .我们可以在
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
在229
和265
行中定义 . 为了方便使用,我们可以直接在profile
中添加标记,例如,在代码var profile = {};
下面我们添加profile.accessToken = accessToken;
.