Azure广告机使用客户端凭据节点js加密身份验证

问题描述:

我想制作一个非浏览器应用程序来向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中发送请求时发生了重新加载 –

当使用客户端凭证流与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); 
    } 
});