Паспортная аутентификация Microsoft Azure Active Directory
Сильфонный код работает нормально, но когда заголовок авторизации идет с пустым токеном из php-кода (например, Authorization: bearer), приложение node.js завершается сбоем. Я использую модуль узла "passport-azure-ad". Я проверил с почтальоном, он проверяет токен, но когда запрос приходит из 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 выбросить новую ошибку ("Не удается установить заголовки после их отправки."); ^
Ошибка: невозможно установить заголовки после их отправки. в \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 ответ
Node.js запускается в одном потоке, он вылетит, если ошибка не будет обработана. Вот очень полезная ветка об обработке исключений в Node.js: