我正在使用自己的PHP身份验证模块运行NGINX + Shiny Server设置,该模块通过我们的LDAP连接,工作正常。
我收到了一位客户的要求,他们想要使用SSO并想要验证他们自己的身份验证。我安装了SimpleSamlPHP并创建了他们的ADFS设置。到现在为止还挺好。
当我想在此身份验证设置后面托管一个闪亮的应用时,我的问题就开始了。我希望保留其他应用程序和用户/设置的旧设置,并在NGINX中有一个单独的部分,以便在simplesaml之后重定向此特定URL并在闪亮的服务器下维护。来自客户端的ADFS声明将保留LDAP之类的声明,理想情况下将其传递给Shiny Server。
在下面的nginx配置中,我已经创建了一个simplesaml位置并且工作正常,我可以测试设置和标准simplesaml登录页面。
location ^~ /simplesaml {
#alias /var/simplesamlphp/www;
index index.php;
#location ~ \.php(/|$) {
location ~ ^(?<prefix>/simplesaml)(?<phpfile>.+?\.php)(?<pathinfo>/.*)?$ {
fastcgi_split_path_info ^(.+?\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info if_not_empty;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
#fastcgi_param SCRIPT_NAME $fastcgi_script_name;
#fastcgi_index index.php;
include fastcgi_params;
#autoindex on;
#proxy_set_header X-USER $user;
#proxy_set_header X-GROUPS $user;
#proxy_pass http://shiny-staging;
#proxy_http_version 1.1;
#proxy_set_header Upgrade $http_upgrade;
#proxy_set_header Connection "upgrade";
}
}
元数据和everthing else是根据客户端设置配置的,因此这里缺少的是在URL映射和代理转发中一起处理所有内容。
下面是闪亮的条目。但某些东西,某处遗漏了。
location /simplesaml/test {
site_dir /srv/shiny-server_dev/test;
log_dir /var/log/shiny-server/dev;
app_session_timeout 1800;
}