2011-11-07 32 views
0

是否有可能使用基本验证保护和SSO(单点登录)在同一时间?我们使用跨域单点登录(CDSSO),希望通过BasicAuth从公开场景中隐藏我们的登台服务器,并希望通过SSO启用登录。每次我们放入相应的VHost条目以保护服务器时,SSO不再起作用。我们对Apache的虚拟主机条目看起来像这样基本验证和SSO通过OpenAM

<Directory /home/my_user/sites/my_site> 
    Options -MultiViews 
    AllowOverride All 
    Order deny,allow 
    Deny from all 
    Allow from 192.168.0.0/16 
    AuthType Basic 
    AuthBasicProvider file 
    AuthName "MyBasicAuth" 
    AuthUserFile /home/my_user/etc/htpasswd 
    Require valid-user 
    Satisfy Any 
</Directory> 

为OpenAM网络策略代理的日志文件中表明存在dsame_check在某种 授权失败(可能是一种 心跳消息,看是否代理人还活着):

2011-11-04 16:48:16.069 Info 27773:7fb5259550e0 all: 
dsame_check_access(): starting... 
2011-11-04 16:48:16.069 Debug 27773:7fb5259550e0 all: 
get_request_url(): .. 
.. 
2011-11-04 16:48:16.069 Debug 27773:7fb5259550e0 all: 
get_request_url(): Returning request URL = 
http://..:80/error/HTTP_UNAUTHORIZED.html.var. 

在Apache访问日志,计算机与策略代理,我们得到以下401 Unauthorized HTTP错误(192.168.1.1是OpenAM服务器的本地IP):

192.168.1.1 - "" [07/Nov/2011:12:42:58 +0100] 
"POST /UpdateAgentCacheServlet?shortcircuit=false HTTP/1.1" 401 - "-" "Java/1.6" 

如何更改配置以启用BasicAuth SSO?或者根本不可能?如果我们删除Apache Web服务器的保护,则dsame检查和SSO将再次运行。

+0

BasicAuth适用于我们的概念验证系统,但不适用于在DMZ区域中运行的Staging和Production系统。因此,我想这与DMZ的增强安全性有关,也许其中一个防火墙会阻止OpenAM服务器和Web策略代理之间的通信。 – 0x4a6f4672

+0

在SUSE Linux Enterprise Server 11上运行的Apache 2.2.10出现问题。我们对本地系统和我们的概念验证系统(在Ubuntu上运行并且具有Apache 2.2.16(Ubuntu 10.10)或Apache 2.2.14(Ubuntu 10.04)。 – 0x4a6f4672

回答

0

可以通过HttpAuthentication模块通过Rails框架本身在更高级别添加BasicAuth保护。

这解决了我的问题,因为Apache和Apache代理不知道这个级别的保护。

class ApplicationController 
http_basic_authenticate_with :name => "..", :password => ".." 

可以添加if Rails.env.staging?以仅对特定环境启用此保护。