Microsoft Azure Active Directory Passport身份验证

问题描述:

贝娄代码运行良好,但是当授权头带有来自PHP代码的空令牌(例如:'Authorization:bearer')时,node.js应用程序会崩溃。我正在使用“passport-azure-ad”节点模块。我检查邮政人,它是验证令牌,但是当请求来自PHP卷曲请求,应用程序崩溃。其原因是,http头在“passport-azure-ad”节点模块中设置了两次。我无法捕捉到这个错误。Microsoft Azure Active Directory Passport身份验证

router.get('/getUser', passport.authenticate('oauth-bearer', { 
    session: false, 
    tenantIdOrName: TENANT 
}), function (req, token, done) { 
    // Send response 
}); 

崩溃的错误跟踪 - _http_outgoing.js:356 抛出新的错误( '可以\' 吨设置头发送之后“。); ^

错误:发送后无法设置标头。 在\ node_modules \护照\ LIB \中间件\ authenticate.js:156:13)

PHP代码=>

$headers = array ('Authorization: bearer ' . $Requestheader['id_token']); 
$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt ($ch, CURLOPT_URL, 'http://serverhost/auth/getUser'); 
curl_setopt ($ch, CURLOPT_HTTPHEADER, $headers); 
return curl_exec ($ch); 

我该如何处理此错误从我的身边,谢谢。

+1

难道它的工作,当你从PHP发送验证令牌,而不是空的令牌?你正在开发什么版本的“passport-azure-ad”?什么是确切的卷曲请求代码? –

+0

@FeiXue,感谢您的回复,是的,当我通过php curl传递有效或无效的标记时,它工作正常。我正在使用3.0.8版本的“passport-azure-ad”。我用php代码编辑了问题。 – Sudharshan

Node.js正在运行a single thread,它会在未处理错误时崩溃。下面是关于例外处理一个非常有用的线程的Node.js:

Node.js Best Practice Exception Handling

+0

是的,我们可以在全球范围内发现错误,但我正在寻找在确切位置发现错误。 – Sudharshan

+0

我试图使用[WebAPI-Bearer-NodeJS](https://github.com/AzureADQuickStarts/WebAPI-Bearer-NodeJS/blob/master/node-server/app.js)重现此问题,但失败。无论是否提供令牌,代码示例都不会崩溃。并且根据错误消息,似乎应用程序在发送响应之后设置标题。并提交相同的错误消息[此线程](https://*.com/questions/7042340/error-cant-set-headers-after-they-are-sent-to-the-client)。 –