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 并发现它有帮助。没有像我一样花那么多时间在这上面。
所以,我的下一个项目。我们有一个带有自己的用户数据库的定制门户。我们想使用 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 并发现它有帮助。没有像我一样花那么多时间在这上面。