2017-06-05 65 views
0

我想製作一個非瀏覽器應用程序來向AzureAD用戶進行身份驗證,而無需所有重定向並最終獲取令牌。我只能使用nodeJS。 我在github上找到了支持這種場景NodeJS library的庫。Azure廣告機使用客戶端憑據節點js加密身份驗證

我想使用這個樣本的系統使用蔚藍廣告執行領域發現併發送用戶ADFS登錄。

當ADFS服務器發現,並要求對元數據返回的XML,但應用程序重新加載並且整個過程再次開始。

這是最後的日誌中的控制檯,我可以看到: MEX:詳細:在檢索MEX:https://adfsservername/adfs/services/trust/mex

+0

是否使用Azure的AD B2C或定期Azure的廣告? – Saca

+0

另外,對於服務調用(這是客戶端憑據的用途),您不應該與ADFS或其元數據交談。您應該使用Azure AD的元數據端點(https://login.microsoftonline.com/yourtenant.onmicrosoft.com/)配置流程。在聯合租戶中,聯邦只爲用戶流量發揮作用。 – Saca

+0

我一直在調查一些,發現在oauth2client.js中的這個函數OAuth2Client.prototype.getToken中發送請求時發生了重新加載 –

回答

0

當使用客戶端憑證流與Azure的AD進行身份驗證,也沒有必要與ADFS互動。通過客戶端憑證

服務器到服務器:您可以參考由azure-activedirectory-library-for-nodejs提供的代碼示例

var adal = require('adal-node').AuthenticationContext; 

var authorityHostUrl = 'https://login.windows.net'; 
var tenant = 'myTenant'; 
var authorityUrl = authorityHostUrl + '/' + tenant; 
var clientId = 'yourClientIdHere'; 
var clientSecret = 'yourAADIssuedClientSecretHere' 
var resource = '00000002-0000-0000-c000-000000000000'; 

var context = new AuthenticationContext(authorityUrl); 

context.acquireTokenWithClientCredentials(resource, clientId, clientSecret, function(err, tokenResponse) { 
    if (err) { 
    console.log('well that didn\'t work: ' + err.stack); 
    } else { 
    console.log(tokenResponse); 
    } 
});