在Node.js中读取Shibboleth属性

时间:2014-12-16 13:25:10

标签: node.js apache perl shibboleth

我正在尝试将成功读取和使用Shibboleth会话属性的Perl脚本移植到Node.js.例如,Perl代码看起来像这样:

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'};

似乎Shibboleth属性可用作Perl作为环境变量。据我所知(我不知道Perl),脚本中没有任何东西可以获取或改变这些值。

所以,我在我的Node.js应用程序中检查了process.env,并且这些值都不存在。据我所知,它们也不存在于Express.js创建的请求对象中。

Perl脚本位于Apache服务器上,但httpd.conf中的任何内容都不会向Perl脚本传递任何特殊内容。我的Node.js应用程序在同一个Apache服务器上反向代理。

是否有可能在Node.js中获取Shibboleth属性,或者它是否依赖于某些Perl / Apache / Shibboleth魔法?

1 个答案:

答案 0 :(得分:1)

感谢@ mpapec的评论,我通过将Apache环境变量作为请求标题传递到上游来解决这个问题:

RequestHeader set X-Auth-Type       %{AUTH_TYPE}e
RequestHeader set X-EPPN            %{eppn}e
RequestHeader set X-Shib-Session-ID %{Shib-Session-ID}e

这些现在出现在我的Node.js应用中的req.headers中;虽然X-Auth-Type被神秘地设置为(null) ...我暂时可以解决这个问题,但是为什么会这样呢?