1

独自の openid プロバイダーを使用して Jenkins に接続する方法を知っている人はいますか?

私たちのウェブサイトには openid プロバイダーがあります - simpleid ( http://simpleid.koinic.net/ ) 私はそれを使って Jenkins に接続しようとしています。Google アカウント、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

他の Web サイト (私が知っているすべてのサイト) にアクセスしようとすると、保存できます。

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 は、2008 年後半に廃止された形式である XRDS simple を使用しているようです。これがまだ有効な OpenID 2.0 応答であるかどうかはわかりませんが、Jenkins が解析できないことはわかっています。

XRDS ドキュメントを手動で編集し (ドキュメント<Type>xri://$xrds*simple</Type>から削除するだけ)、編集した (そして http サーバーで利用できるようにした) ファイルの場所を Jenkins に指定すると、構成をエラーなしで保存できます。

しかし、残念ながら、これはまだ機能しません。ログインしようとすると、次のエラーが表示されます。

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

SimpleID はユーザーごとのエンドポイントをサポートしているようですが、複数のユーザーに単一のエンドポイントを提供していないようです。これは、Jeknins が SSO モードで必要とするものです。

結論 - SimpleID 以外の別の OpenID プロバイダーを使用する必要があります

于 2012-09-16T23:34:25.490 に答える