4

DNOA 3.4.3 で OpenID プロバイダーを実装する際に問題があります。AXのサポートも必要になるまで、すべてが完全に桃色でした. Andrew がhttp://groups.google.com/group/dotnetopenid/browse_thread/thread/5629a24c0a7e8d99で推奨しているように、Web 構成で AXFetchAsSregTransform を設定しました。ただし、これを行うと、decision.aspx ページで「シーケンスに複数の要素が含まれています」という例外が発生し、それを乗り越えることができませんでした。

次の行が例外をスローしています:
編集:奇妙なことに、これはエラーをスローしている行ではありません。SendResponse() が例外をトリガーするようになりました

ClaimsRequest requestedFields = ProviderEndpoint.PendingRequest.GetExtension();

ProviderEndpoint.SendResponse()

これがなぜなのかについて何か考えはありますか?どんな助けでも大歓迎です!

エラーに至るまでのログは次のとおりです。

2010-04-28 12:38:20,247 (GMT-7) [5] INFO DotNetOpenAuth.Messaging.Channel - メッセージの着信要求のスキャン: https://myprovider/provider.ashx?openid.ns=http%3A%2F %2Fspecs.openid.net%2Fauth%2F2.0&openid.claimed_id=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0%2Fidentifier_select&openid.identity=http%3A%2F%2Fspecs.openid.net%2Fauth %2F2.0%2Fidentifier_select&openid.mode=checkid_setup&openid.ns.ext1=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0&openid.ext1.mode=fetch_request&openid.ext1.type.email=http%3A%2F %2Faxschema.org%2Fcontact%2Femail&openid.ext1.type.fullname=http%3A%2F%2Faxschema.org%2FnamePerson&openid.ext1.type.language=http%3A%2F%2Faxschema.org%2Fpref%2Flanguage&openid.ext1.必須=email&openid.return_to=http%3A%2F%2Fmyrelyingparty%2Flogin.jsp%3Foidreturn%3D%252Fhome&openid.assoc_handle=%7B634080802953194640%7D%7BHxjFNw==%7D%7B20%7D&openid.realm=http%3A%2F%2Fmyrelyingparty
2010-04-28 12:38:20,285 (GMT-7) [5] INFO DotNetOpenAuth.Messaging.Channel - 着信 CheckIdRequest (2.0) メッセージの処理:
    openid.claimed_id: http://specs.openid.net/auth/2.0/identifier_select
    openid.identity: http://specs.openid.net/auth/2.0/identifier_select
    openid.assoc_handle: {634080802953194640}{HxjFNw==}{20}
    openid.return_to: http://myrelyingparty/login.jsp?oidreturn=%2Fhome
    openid.realm: http://myrelyingparty/
    openid.mode: checkid_setup
    openid.ns: http://specs.openid.net/auth/2.0
    openid.ns.ext1: http://openid.net/srv/ax/1.0
    openid.ext1.mode: fetch_request
    openid.ext1.type.email: http://axschema.org/contact/email
    openid.ext1.type.fullname: http://axschema.org/namePerson
    openid.ext1.type.language: http://axschema.org/pref/language
    openid.ext1.required: 電子メール

2010-04-28 12:38:22,773 (GMT-7) [14] INFO DotNetOpenAuth.Messaging.Channel - メッセージの着信要求のスキャン: https://myprovider/login.aspx?ReturnUrl=%2fdecide.aspx
2010-04-28 12:38:36,167 (GMT-7) [5] INFO DotNetOpenAuth.Messaging.Channel - メッセージの着信要求のスキャン: https://myprovider/login.aspx?ReturnUrl=%2fdecide.aspx
2010-04-28 12:38:38,147 (GMT-7) [14] エラー DotNetOpenAuth.Messaging - プロトコル エラー: レルム URL (http://myrelyingparty/) への HTTP 要求により、許可されていないリダイレクトが発生しました証明書利用者の検出中。
   DotNetOpenAuth.Messaging.ErrorUtilities.VerifyProtocol (ブール条件、文字列メッセージ、オブジェクト [] 引数) で
   DotNetOpenAuth.OpenId.Realm.Discover (IDirectWebRequestHandler requestHandler、ブール値の allowRedirects) で
   DotNetOpenAuth.OpenId.Realm.DiscoverReturnToEndpoints (IDirectWebRequestHandler requestHandler、ブール値の allowRedirects) で
   DotNetOpenAuth.OpenId.Provider.HostProcessedRequest.IsReturnUrlDiscoverableCore (OpenIdProvider プロバイダー) で
   DotNetOpenAuth.OpenId.Provider.HostProcessedRequest.IsReturnUrlDiscoverable (OpenIdProvider プロバイダー) で
   OpenIdProviderWebForms.decide.Page_Load (オブジェクト src、EventArgs e) で
   System.Web.Util.CalliHelper.EventArgFunctionCaller (IntPtr fp、オブジェクト o、オブジェクト t、EventArgs e) で
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback (オブジェクトの送信者、EventArgs e) で
   System.Web.UI.Control.OnLoad (EventArgs e) で
   System.Web.UI.Control.LoadRecursive() で
   System.Web.UI.Page.ProcessRequestMain で (ブール値 includeStagesBeforeAsyncPoint、ブール値 includeStagesAfterAsyncPoint)
   System.Web.UI.Page.ProcessRequest (ブール値 includeStagesBeforeAsyncPoint、ブール値 includeStagesAfterAsyncPoint) で
   System.Web.UI.Page.ProcessRequest() で
   System.Web.UI.Page.ProcessRequest (HttpContext コンテキスト) で
   ASP.decide_aspx.ProcessRequest (HttpContext コンテキスト) で
   System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() で
   System.Web.HttpApplication.ExecuteStep (IExecutionStep ステップ、ブール値 & completedSynchronously) で
   System.Web.HttpApplication.PipelineStepManager.ResumeSteps (例外エラー) で
   System.Web.HttpApplication.BeginProcessRequestNotification (HttpContext コンテキスト、AsyncCallback cb) で
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate (IIS7WorkerRequest wr、HttpContext コンテキスト) で
   System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper (IntPtr managedHttpContext、IntPtr nativeRequestContext、IntPtr moduleData、Int32 フラグ) で
   System.Web.Hosting.PipelineRuntime.ProcessRequestNotification (IntPtr managedHttpContext、IntPtr nativeRequestContext、IntPtr moduleData、Int32 フラグ) で
   System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper (IntPtr managedHttpContext、IntPtr nativeRequestContext、IntPtr moduleData、Int32 フラグ) で
   System.Web.Hosting.PipelineRuntime.ProcessRequestNotification (IntPtr managedHttpContext、IntPtr nativeRequestContext、IntPtr moduleData、Int32 フラグ) で

2010-04-28 12:38:38,149 (GMT-7) [14] INFO DotNetOpenAuth.Yadis - URL http://myrelyingparty/ での証明書利用者の検出に失敗しました。DotNetOpenAuth.Messaging.ProtocolException: レルム URL (http://myrelyingparty/) への HTTP 要求によってリダイレクトが発生しましたが、証明書利用者の検出中には許可されません。
   c:\TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\Messaging\ErrorUtilities.cs:line 235 の DotNetOpenAuth.Messaging.ErrorUtilities.VerifyProtocol (ブール条件、文字列メッセージ、Object[] args) で
   c:\TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\OpenId\Realm.cs:line 446 の DotNetOpenAuth.OpenId.Realm.Discover(IDirectWebRequestHandler requestHandler, Boolean allowRedirects) で
   c:\TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\OpenId\Realm.cs:line 424 の DotNetOpenAuth.OpenId.Realm.DiscoverReturnToEndpoints(IDirectWebRequestHandler requestHandler, Boolean allowRedirects) で
   c:\TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\OpenId\Provider\HostProcessedRequest.cs:line 142 の DotNetOpenAuth.OpenId.Provider.HostProcessedRequest.IsReturnUrlDiscoverableCore (OpenIdProvider プロバイダー) で
2010-04-28 12:38:42,076 (GMT-7) [8] エラー OpenIdProviderWebForms.Global - 未処理の例外が発生しました。詳細は次のとおりです。 System.Web.HttpUnhandledException: 'System.Web.HttpUnhandledException' 型の例外がスローされました。---> System.InvalidOperationException: シーケンスに複数の要素が含まれています
   System.Linq.Enumerable.SingleOrDefault[TSource] (IEnumerable`1 ソース) で
   c:\TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\OpenId\Provider\Request.cs:line 176 の DotNetOpenAuth.OpenId.Provider.Request.GetExtension[T]() で
   c:\TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\OpenId\Extensions\ExtensionsInteropHelper.cs:line 180 の DotNetOpenAuth.OpenId.Extensions.ExtensionsInteropHelper.ConvertSregToMatchRequest(IHostProcessedRequest request) で
   c:\TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\OpenId\Behaviors\AXFetchAsSregTransform.cs:line 139 の DotNetOpenAuth.OpenId.Behaviors.AXFetchAsSregTransform.DotNetOpenAuth.OpenId.Provider.IProviderBehavior.OnOutgoingResponse(IAuthenticationRequest request) で
   c:\TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\OpenId\Provider\OpenIdProvider.cs:line 482 の DotNetOpenAuth.OpenId.Provider.OpenIdProvider.ApplyBehaviorsToResponse(IRequest request) で
   c:\TeamCity\buildAgent\work\bf9e2ca68b75a334\src\DotNetOpenAuth\OpenId\Provider\OpenIdProvider.cs:line 325 の DotNetOpenAuth.OpenId.Provider.OpenIdProvider.SendResponse(IRequest リクエスト) で
   C:\Projects\OpenIdProviderWebForms\decide.aspx.cs:line 130 の OpenIdProviderWebForms.decide.Yes_Click (オブジェクト送信者、EventArgs e) で
   System.Web.UI.WebControls.Button.OnClick (EventArgs e) で
   System.Web.UI.WebControls.Button.RaisePostBackEvent (文字列 eventArgument) で
   System.Web.UI.Page.RaisePostBackEvent (IPostBackEventHandler sourceControl、文字列 eventArgument) で
   System.Web.UI.Page.ProcessRequestMain で (ブール値 includeStagesBeforeAsyncPoint、ブール値 includeStagesAfterAsyncPoint)
   --- 内部例外スタック トレースの終了 ---
   System.Web.UI.Page.HandleError (例外 e) で
   System.Web.UI.Page.ProcessRequestMain で (ブール値 includeStagesBeforeAsyncPoint、ブール値 includeStagesAfterAsyncPoint)
   System.Web.UI.Page.ProcessRequest (ブール値 includeStagesBeforeAsyncPoint、ブール値 includeStagesAfterAsyncPoint) で
   System.Web.UI.Page.ProcessRequest() で
   System.Web.UI.Page.ProcessRequest (HttpContext コンテキスト) で
   c:\Windows\Microsoft.NET\Framework64\v2.0.50727\Temporary ASP.NET Files\root\7f580b93\b3e4d917\App_Web_tulh9ymv.1.cs:line 0 の ASP.decide_aspx.ProcessRequest(HttpContext コンテキスト) で
   System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() で
   System.Web.HttpApplication.ExecuteStep (IExecutionStep ステップ、ブール値 & completedSynchronously) で
4

1 に答える 1

2

おっとっと。DotNetOpenAuth にバグが見つかりました。

v3.2 は 7cea654 としてv3.4 は bd7c148として修正がチェックインされました。明日のビルドで修正を入手できます。

于 2010-05-05T13:55:29.483 に答える