0

我们支持多租户应用程序。大多数时候,我们的应用程序负载很大。我们的技术堆栈包括:

  • 导轨 3.2.13
  • 红宝石 1.9.3

在 Apache/2.2.15 (Unix) 和 Passenger(3.0.11) 上运行。

相关宝石:设计(2.2.7)oauth(0.4.7)oauth2(0.8.1)omniauth(1.1.4)omniauth-oauth(1.0.1)omniauth-oauth2(1.0.3)omniauth-shibboleth(1.0.8) )

我们已将 shibboleth2 配置为使用 StorageService type="Memory"。我们有 2-3 个应用服务器在任何时间点运行。很晚,我们的许多客户抱怨他们无法通过 Shibboleth SSO 登录。在调试时,我们观察到,该问题在 Mac OS 上的 Chrome 浏览器上出现的频率更高。在浏览器网络窗口中,我们看到用户没有被视为已登录,即使在 IDP 成功验证后也是如此。如果用户单击“登录”链接(重定向到 /users/auth/shibboleth),系统会将用户视为已登录。这对我们的客户来说非常混乱。你能帮助我们了解问题可能出在哪里吗?是omniauth-shibboleth、设计还是浏览器cookie 的不稳定行为?我们无法得出结论。

此外,您是否建议移动 StorageService type="ODBC" 而不是 Memory,因为应用程序服务器(因此 SP)处于自动缩放模式?如果是,我需要一些文档/教程来配置 ODBC StorageService。当我试一试时,回调 URL 根本没有启动 - 我仍然想知道为什么omniauth_controller 的回调提供程序方法根本没有被调用。

4

1 回答 1

0

问题已解决。我遵循以下步骤:

  1. 由于我们使用的是 Postgres 9.3,请安装 postgres ODBC 库:安装 postgres 库和 ODBC 的步骤

rpm -ivh http://yum.postgresql.org/9.3/redhat/rhel-5.4-x86_64/pgdg-centos93-9.3-1.noarch.rpm

百胜安装 postgresql93-odbc*

yum install -y postgresql-libs

ln -s /usr/lib64/libpq.so.5 /usr/lib64/libpq.so ln -s /usr/pgsql-9.3/lib/psqlodbc.so /usr/lib64/psqlodbc.so

  1. 创建的数据库和表:CREATE TABLE 版本(主要 int NOT NULL,次要 int NOT NULL);插入版本值(1,0);

CREATE TABLE 字符串(上下文 varchar(255) NOT NULL,id varchar(255) NOT NULL,过期时间戳 NOT NULL,版本 smallint NOT NULL,值 varchar(255) NOT NULL,PRIMARY KEY (context, id));

CREATE TABLE 文本( context varchar(255) NOT NULL, id varchar(255) NOT NULL, expires timestamp NOT NULL, version smallint NOT NULL, value text NOT NULL, PRIMARY KEY (context, id) );

  1. 修改 shibboleth2.xml:

然后按照https://wiki.shibboleth.net/confluence/display/SHIB2/NativeSPODBCStorageService上的步骤进行操作

  1. 重新启动 Apache 和 Shibd 服务。
于 2015-03-19T08:49:35.457 回答