BasicAuth和SSO通过OpenAM

时间:2011-11-07 16:26:59

标签: apache single-sign-on basic-authentication openam

是否可以同时使用 BasicAuth 保护和 SSO (单点登录)?我们使用跨域单点登录(CDSSO),希望通过BasicAuth从公众隐藏我们的登台服务器,并希望通过SSO启用登录。每次我们输入相应的VHost条目来保护服务器时,SSO都不再有效。我们的Apache虚拟主机条目如下所示

<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的Web策略代理的日志文件表明存在某种形式 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将再次运行。

1 个答案:

答案 0 :(得分:0)

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

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

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

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