3

RedirectToProvider を実行して、結果の OpenID プロバイダー ページを iFrame に表示できるかどうか疑問に思っていました。これにより、認証フローがより合理化されたように見えます。

ASP.NET MVC (VB) で DotNetOpenID ライブラリを使用しています。

この次の部分は、別の質問のようなものですが、関連しています。

OpenID サインイン フォームに Ajax.BeginForm を使用していますが、何らかの理由で RedirectToProvider がここで失敗します。DotNetOpenId は MVC と AJAX では機能しませんか?

4

2 に答える 2

3

はい、DotNetOpenIdはiframe、MVC、Ajaxをサポートしています。ライブラリに付属し、サンプルのOpenIdAjaxTextBox1つで使用されているコントロールは、これを示しています。何も表示するためにiframeを使用しません。それらをcheckid_immediateとともに使用して、ユーザーの操作なしで暗黙のログインを試行します。これは、OpenIDがサポートすることを意図している唯一のiframeシナリオです。

このIAuthenticationRequest.RedirectToProviderメソッドは内部でASP.NETを呼び出しResponse.Redirect、それ自体がをスローしますThreadAbortException。これが、実際にはおそらく設計上機能しているにもかかわらず、失敗しているように見える理由かもしれませんが、その設計はおそらく実行しようとしていることと競合します。

やりたいことを実現するためのさまざまなアプローチがありますが、Workshop Alexがすでに提案しているように、プロバイダーのページをiframeでホストすることにはセキュリティ上の懸念があります。EFraimが言ったように、ブラウザにとにかく許可されないバグがない限り、RPがiframeのコンテンツにアクセスしたり混乱したりできるわけではありません。これに関する2つの問題は、クリックジャッキングと、フィッシングを行うようにユーザーをトレーニングしていることです。これは、RPのURLがロケーションバーにあるときにユーザーがログイン資格情報をOPに提供する可能性があるためです。これは悪いことです。

実際、主要なOPは、iframe内でアクティブ化されたときに意図的に動作を拒否するようになったため、すべてを希望どおりに動作させるための作業の後、ほとんどの顧客が機能しなくなることに失望する可能性があります。ログインします。

また、ご指摘のとおり、ポップアップウィンドウは、適切に実行されると、ユーザーフレンドリーなエクスペリエンスを維持するのに役立ちます。DotNetOpenIdを使用して、これをいくつかの異なる方法で実現できます。ライブラリに付属しているASP.NETコントロールにはこの機能が組み込まれており、コントロールにプロパティを設定するだけでアクティブ化できます。しかし、ASP.NET MVCを使用しているので(私は思う)、これを自分で行う方法は次のとおりです。

  1. ユーザーが現在のウィンドウにPOSTするのではなく、ページの[ログイン]ボタンをクリックすると、http://yoursite.com/openid/redirect?id=userSuppliedIdentifierようなURLで適切なサイズのポップアップウィンドウを開くJavascriptを使用します。

  2. OpenIDコントローラーのリダイレクトアクションは、そのIDを読み取り、そのIDに対して実行し、OpenIdRelyingParty.CreateRequestreturn IAuthenticationRequest.RedirectingResponse.AsActionResult()MVCスタイル)します。CreateRequestOPの応答をOpenIDコントローラーの別のメソッドに戻す場合は、returnTourlに独自のURLを渡すことができることに注意してください。

  3. アサーションが戻ってきたら、コントローラーはポップアップウィンドウを閉じるjavascriptを送信し、(必要に応じて)メインウィンドウに戻ってログインユーザーの状態を更新する必要があります。

このプロセス全体は、DotNetOpenIdに付属しているASP.NETコントロールで完全に自動化されています。残念ながら、ASP.NETMVCをASP.NETWebフォームのようにモジュール化できないため、このすべての作業を自分で行う必要はありません。もちろん、DotNetOpenIdに付属しているMVCサンプルは、将来のバージョンでポップアップ動作を行う方法を示すために作成することができます。あなたがそれを望むなら、それに対する願いを提出してください。

于 2009-08-31T00:35:10.770 に答える
2

問題は、OpenID プロバイダーはこれをセキュリティ リスクと見なすかどうかです。プロバイダー ページが IFrame 内にある場合、周囲のページは、情報の一部をキャプチャする試みを含め、このフレーム内で何が起こっているかをある程度制御できます。悪用される可能性があります。OpenID プロバイダーはこれらのことについて非常に偏執的であり、そのような IFrame から抜け出そうとしたり、それ以上のログイン操作を拒否したりすることさえあることに注意してください。それは彼らが取りたくないかもしれないリスクです。出来ますか?もしそうなら、答えはプロバイダーにも依存すると思います。

于 2009-08-30T13:13:29.033 に答える