2015-10-09 78 views
0

我正在使用Exchange客戶端編寫Oauth。我已經在apps.dev.microsoft.com上註冊了我的應用程序。我正在使用JavaScript和Node.js。爲了執行Oauth,我使用了幾種不同策略的護照,但他們似乎都不適合我。他們中的一些人缺少個人資料信息,而我使用的最後一個不會返回訪問令牌。我已經調試了這個庫,但是我不知道我做錯了什麼。下面是我使用的lib:JavaScript,節點

https://github.com/Azure-Samples/active-directory-node-webapp-openidconnect。 我正在使用OIDC策略。 因此,這將返回一個配置文件obj,但訪問和刷新令牌是「未定義的」。它確實返回授權「代碼」來進行令牌請求。重定向URL,以及所有其他元數據是好的,如: 提示: '登錄', response_mode: '查詢', 狀態:真, authorizationURL: 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize', tokenURL: 'https://login.microsoftonline.com/common/oauth2/v2.0/token'

而且,客戶端ID,客戶端密鑰和callbackURL都是正確的。

我錯過了什麼在這個過程中與護照被打破基本的或MSFT OAuth的?

+0

爲什麼這傢伙得到這個投票呢?看起來對我來說是一個很好的問題。 –

回答

0

由於護照SDK不存儲accessTokenrefreshTokenuser profile。所以我們可以修改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在行229265定義。爲方便使用,我們可以直接添加的標記在profile,例如,下面的代碼var profile = {};我們添加profile.accessToken = accessToken;