SimpleSAMLphp IDP、SP、MediaWiki

SimpleSAMLphp IDP, SP, MediaWiki

所以,我的下一个项目。我们有一个带有自己的用户数据库的定制门户。我们想使用 Wiki,所以我在一个单独的子域上安装了 MediaWiki。拥有多个帐户是 1990 年的事情,因此希望进行整合。这并不像我希望的那么容易。 因此,我的解决方案是:单点登录。

IDP

第 1 步,将 SimpleSAMLphp 安装为子域上的 IDP sso.myportal.nu 创建了我自己的模块,用于在我的数据库中查找用户。登录到 SimpleSAMLphp 管理门户,test/verify 如果它有效,看起来不错(附截图)。

SP

Step2,在子域上安装 SimpleSAMLphp 作为 SP wiki.myportal.nu 将 SP 连接到我的 IDP。登录到 SimpleSAMLphp 管理门户,test/verify(如果有效)看起来很棒。我通过我的用户数据库中的 IDP 进行了身份验证(附有屏幕截图)。

MediaWiki

然后在MediaWiki中安装了两个插件;

https://www.mediawiki.org/wiki/Extension:PluggableAuth https://www.mediawiki.org/wiki/Extension:SimpleSAMLphp

这应该启用 SSO。

在 MediaWiki 中单击登录 link 时,我被重定向到 sso.myportal.nu 上的 SimpleSAMLphp 登录页面 – 到目前为止一切顺利。 但是,出乎我的意料..登录不起作用。似乎我在 sso.myportal.nu 和 wiki.myportal.nu

之间被重定向

我启用了 DEBUG 模式,我看到的唯一警告似乎是这样的:

Could not load state specified by InResponseTo: NOSTATE Processing response as unsolicited.

我在下面附上了来自两个 SimpleSAMLphp 安装的配置文件和日志文件(copy/paste 这里的文字有点多)。 config and log files 经过一天半的浏览 Google,我有点卡住了。这里有人有什么想法吗?

好吧,经过两个漫长的夜晚,找到了解决方案

首先,如果您的 SimpleSAMLphp 的“Authentication”选项卡上的“Test configured authentication sources”选项有效。 .. 这并不能保证它会真正起作用。

就我而言,IDP 和 SP 在同一台服务器上。不同的子域。我调整了 config.php 中的所有设置,因此 IDP 和 SP(cookie 名称、密码等)没有相同的设置。

我的 SimpleSAMLphp 的“Authentication”选项卡上的“Test configured authentication sources”选项有效!但是MediaWiki还是没有。

显然,这也可能是由于 config.php 与 php.ini

中的某些设置不匹配造成的

我在旧的 Google Forum 中找到了此页面的 link,他们在其中提到了解决方案。我无法相信它会起作用,但我很绝望,所以尝试了一下。

存储引擎应该是默认的。 在我的例子中,我将 SimpleSAMLphp 连接到一个 MySQL 数据库(可以是 sqlite,也可以是其他任何数据库)。

'store.type'         => 'sql',
'store.sql.dsn'      => 'mysql:host=localhost;dbname=simplesamlStuff',
'store.sql.username' => 'simplesamlUser',
'store.sql.password' => '1234567980',
'store.sql.prefix'   => 'sso_',

IDP和SP都可以使用同一个数据库,只要前缀不同即可。它会自动创建它需要的表,它只需要知道在哪里连接到哪个数据库和哪个凭据。

我之所以没有删除我的问题,而是自己回答...是因为我希望有人会找到这个 post 并发现它有帮助。没有像我一样花那么多时间在这上面。