Microsoft Azure Active Directory Passport身份验证

时间:2017-10-09 11:55:42

标签: php node.js azure azure-active-directory passport-azure-ad

Bellow代码运行正常,但是当授权标头带有来自php代码的空标记(例如''授权:承载')时,node.js应用程序崩溃。我正在使用“passport-azure-ad”节点模块。我检查了Post man,它验证了令牌,但是当请求来自php curl请求时,应用程序崩溃了。原因是,http标头在“passport-azure-ad”节点模块中设置了两次。我无法捕捉到这个错误。

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

崩溃错误跟踪 - _http_outgoing.js:356     抛出新的错误('不能在发送后设置标题。');     ^

错误:发送后无法设置标头。 at \ node_modules \ passport \ lib \ middleware \ 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 个答案:

答案 0 :(得分:0)

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

Node.js Best Practice Exception Handling