我正在尝试使用 simpleid 将 Apache 配置为 OpenID 提供程序。
现在,我陷入了困境。
假设我的服务器位于http://example.com我的 simpleid 安装在http://example.com/openid,并且我设置了一个身份john.doe
,他的标识符URL是http://example.com/openid/john.doe。
我可以转到我的服务器的 simpleid 登录页面并登录成功。那里的仪表板显示了我已设置的所有身份详细信息以及仪表板上的上述标识符。
当我使用开放 ID 测试站点我得到了两个结果,但都不正确:
场景 1
我创建了一个文件,/openid/john.doe/index.html
以便可以在http://example.com/openid/john.doe内容如下:
<html>
<head>
<link rel="openid.server" href="http://example.com/openid/" />
<link rel="openid2.provider" href="http://example.com/openid/" />
</head>
</html>
当我尝试使用以下方式登录测试网站时http://example.com/openid/john.doe,我被测试站点重定向到登录页面。当我使用用户名/密码登录时,它会让我登录,但抱怨我使用的 ID 与预期的不同。游戏结束。
场景 2
我删除了文件,/openid/johndoe/index.html
这样就没有任何内容了http://example.com/openid/john.doe。
现在,当我尝试登录时,它会登录,向我显示我用于登录的身份的各种属性,然后出现以下错误。
OpenID authentication failed: No matching endpoint found after discovering http://example.com/openid/john.doe.
我不确定我做错了什么。任何帮助都将不胜感激。
PS:我认为这应该带有标签simpleid
。
答案1
奇怪的是,解决方案是将 HTML 内容放在名为的文件中,/openid/john.doe
而不是/openid/john.doe/index.html
。
现在它运行良好。
答案2
我刚刚偶然发现了这个问题。我的 SimpleID 正在与index.html
位于我的域根目录中的以下内容一起工作。
<link rel="openid.server" href="https://openid.example.com/" />
<link rel="openid2.provider" href="https://openid.example.com/" />
我的开放ID是我的网站的 URL http://example.com
。如果我导航到该网站,查看源代码在我的浏览器中,我看到了该部分中的以上两行<head>
。
如果我导航到,那么我会看到 SimpleID 仪表板登录,并且我可以使用我的身份文件中设置的凭据(例如,我散列到配置中的密码)https://openid.example.com
登录。http://example.com
请注意,identity
该配置中的 需要与加载可找到上述标签的页面的 URL 相同<link>
。如果它们不匹配,则无法工作。也许这就是 OP 的问题...
另一件需要考虑的事情是,最新版本的 SimpleID 表明您需要使用https
SimpleID 服务器。
答案3
您正在与未记录的功能作斗争。您既不需要手动配置用户的身份文件,也不需要从独立源提供该文件。
SimpleID 安装已经正确提供服务,位于simpleid_documentroot/用户/用户名(例如:https://exampledomain.org/simpleid/user/exampleuser)
为了使其正常工作,您需要在 config.inc 中启用 SIMPLEID_CLEAN_URL,并将 Apache 配置为使用 Rewrite 引擎(两者的示例都包含在示例配置文件中)。
使用此作为身份验证 URL 将以最简单、最可靠的方式解决问题。