Я пытаюсь перенести скрипт Perl, который успешно читает и использует атрибуты сеанса Shibboleth, в Node.js. Код Perl выглядит, например, так:Чтение атрибутов Shibboleth в Node.js
die "Must be protected behind shibboleth authentication" unless $ENV{'AUTH_TYPE'} eq 'shibboleth';
die "Requires eppn" unless $ENV{'eppn'} ne "";
my $user = $ENV{'eppn'};
my $shib_session_id = $ENV{'Shib-Session-ID'};
Похоже, как будто Шибболет атрибуты доступны для Perl, как переменные окружения. Насколько я могу судить (я не знаю Perl), внутри скрипта нет ничего, что бы извлекало или изменяло эти значения.
Итак, я проверил process.env
, в приложении Node.js, и ни одно из этих значений не существует. Кроме того, они, насколько я искал, не существуют в объекте запроса, созданном Express.js.
Perl-скрипт находится на сервере Apache, но ничего в httpd.conf
не похоже на то, что он передает что-то особенное для скрипта Perl. Приложение Node.js обращено на прокси-сервер на одном сервере Apache.
Можно ли получить атрибуты Shibboleth в Node.js или опираться на некоторую магию Perl/Apache/Shibboleth?
Поскольку perl работает под apache, он наследует среду от apache (общая концепция * nix). Примечание; должен комментировать 'if $ ENV {'eppn'} ne" "' => 'if $ ENV {'eppn'} eq" "' –
Справа: Так как приложение Node.js не запускается под Apache (это просто RP'd), он не разделяет окружающую среду. Есть ли способ передать среду приложениям RP'd? – Xophmeister