所以,我的下一个项目。我们有一个带有自己的用户数据库的定制门户。我们想使用Wiki,所以我在单独的子域上安装了MediaWiki。 1990年有多个帐户,因此希望进行集成。那并不像我希望的那么容易。 因此,我的解决方案是:单点登录。
IDP
步骤1,将SimpleSAMLphp作为IDP安装在子域sso.myportal.nu上 创建了我自己的模块,该模块在我的数据库中查找用户。登录到SimpleSAMLphp管理门户,以测试/验证它是否有效,看起来很棒(附加屏幕快照)。
SP
Step2,在子域wiki.myportal.nu上将SimpleSAMLphp安装为SP。 将SP挂接到我的IDP。登录到SimpleSAMLphp管理门户,以测试/验证是否有效,看起来很棒。我通过用户数据库中的IDP进行了身份验证(附有屏幕截图)。
MediaWiki
然后在MediaWiki中安装了两个插件;
https://www.mediawiki.org/wiki/Extension:PluggableAuth https://www.mediawiki.org/wiki/Extension:SimpleSAMLphp
这应该启用SSO。
当单击MediaWiki中的Login链接时,我被重定向到sso.myportal.nu上的SimpleSAMLphp的登录页面-到目前为止,一切都很好。 但是,与我的预期相反。.登录无法正常工作。看来我在sso.myportal.nu和wiki.myportal.nu之间重定向了
我启用了调试模式,我看到的唯一警告似乎是这样的:
Could not load state specified by InResponseTo: NOSTATE Processing response as unsolicited.
我从下面附带的两个SimpleSAMLphp安装中获取了配置文件和日志文件(文本太多,无法在此处复制/粘贴)。 config and log files 经过一天半的Google浏览后,我有些困惑。这里有人有想法吗?
答案 0 :(得分:1)
好吧,经过两个漫长的夜晚,找到了解决方法。
首先,如果SimpleSAMLphp的“ 身份验证”选项卡上的“ 测试已配置的身份验证源”选项有效,则不能保证...会真正起作用。
就我而言,IDP和SP在同一服务器上。不同的子域。我已经对config.php中的每个设置进行了调整,因此没有针对IDP和SP的设置(cookie名称,密码等)。
我的SimpleSAMLphp的“ 身份验证”选项卡上的“ 测试配置的身份验证源”选项有效!但是MediaWiki仍然没有。
显然,这也可能是由于config.php中的某些设置与php.ini相比不匹配
我在旧的Google Forum中找到了指向此页面的链接,他们在那里提到了解决方案。我不敢相信它能奏效,但是很拼命,所以尝试了它。
存储引擎应该是其他默认值。 就我而言,我将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都可以使用相同的数据库,只要前缀不同即可。它将自动创建需要的表,只需要知道在何处使用哪个凭据连接到哪个数据库。
我没有删除我的问题,而是回答自己的原因是……我希望有人能找到这篇文章,并且对我有所帮助。不用像我这样花很多时间。