1

有谁知道如何通过自己的 openid 提供者连接到 Jenkins?

我们的网站上有一个 openid 提供程序 - simpleid ( http://simpleid.koinic.net/ ) 我尝试将其连接到 Jenkins。我检查了我是否可以使用谷歌帐户 myopenid 连接到 Jenkins....但是当我尝试将我的 openidprovider URL 添加到 OpenID SSO 并将这些更改保存在 MYJENKINS/configure 上时,我得到了一个 Java 异常:

Exception: java.lang.RuntimeException: Failed to instantiate class hudson.plugins.openid.OpenIdSsoSecurityRealm from {"endpoint":"MY_OPENID_URL","stapler-class":"hudson.plugins.openid.OpenIdSsoSecurityRealm","value":"4

当我尝试进入任何其他网站(我知道的每个网站)时,我可以保存它。

我们的 openid 服务器配置有什么问题?

谢谢!

4

1 回答 1

1

我们遇到了同样的问题。这是我们发现的:

如果您仔细检查异常,您会注意到引发异常的根本原因在堆栈跟踪中描述

Caused by: org.openid4java.discovery.DiscoveryException: 0x70d: Error parsing XML document
.
.
.   
Caused by: org.xml.sax.SAXParseException; lineNumber: 4; columnNumber: 15; cvc-complex-type.2.4.a: Invalid content was found starting with element 'Type'. One of '{"xri://$xrd*($v*2.0)":Query, "xri://$xrd*($v*2.0)":Status, "xri://$xrd*($v*2.0)":ServerStatus, "xri://$xrd*($v*2.0)":Expires, "xri://$xrd*($v*2.0)":ProviderID, "xri://$xrd*($v*2.0)":Redirect, "xri://$xrd*($v*2.0)":Ref, "xri://$xrd*($v*2.0)":LocalID, "xri://$xrd*($v*2.0)":EquivID, "xri://$xrd*($v*2.0)":CanonicalID, "xri://$xrd*($v*2.0)":CanonicalEquivID, "xri://$xrd*($v*2.0)":Service, WC[##other:"xri://$xrd*($v*2.0)"], WC[""]}' is expected. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException

似乎 simple id 使用 XRDS simple,该格式已于 2008 年底取消。我不确定它是否仍然是有效的 OpenID 2.0 响应,但我知道 Jenkins 无法解析它。

如果您将手动编辑 XRDS 文档(只需<Type>xri://$xrds*simple</Type>从文档中删除)并将 Jenkins 指向您已编辑的文件的位置(并在 http 服务器上可用),您将能够毫无错误地保存配置。

但是,不幸的是,这仍然无法正常工作。尝试登录时将显示以下错误:

javax.servlet.ServletException: org.openid4java.consumer.ConsumerException: 0xa00: Authentication cannot continue: no discovery information provided.

似乎 SimpleID 支持每个用户的端点,但不为多个用户提供单个端点——这是 Jeknins 在 SSO 模式下所需要的。

Bottom line - you'll have to use another OpenID provider than SimpleID

于 2012-09-16T23:34:25.490 回答