1

ASP.Net 2.0 Web アプリケーションの OpenID サポートを実装しましたが、ローカル マシンですべて正常に動作しているようです。

DotNetOpenId ライブラリを使用しています。サードパーティの Web サイトにリダイレクトする前に、元の OpenID をセッションに保存して、ユーザーが認証されたときに使用します (標準的な方法だと思います)。

wwwただし、アドレスバーに URL を入力するときは、入力しない習慣があります。ライブ サーバーでログインをテストしていたときに、セッションがクリアされるという問題が発生していました。私のリターン URL は www.mysite.com としてハードコードされていました。

mysite.comからへwww.mysite.comの切り替えによってセッションが切り替わった可能性はありますか?

もう 1 つの問題は、www.mysite.com が mysite.com の領域に属していないことです。

これらの問題に対する標準的な解決策は何ですか。Web サイトは自動的に にリダイレクトする必要がありwww.mysite.comますか? wwwログインページへのリンクを、 ?を含む絶対 URL にすることもできます。それとも、これらは別の問題を隠しているだけですか?

4

3 に答える 3

2

あなたが言及したレルムの問題を解決するのは簡単です。レルムを mysite.com だけでなく *.mysite.com に設定するだけです。ライブラリに含まれている ASP.NET コントロールのいずれかを使用している場合は、コントロールのプロパティを設定して領域を設定するだけです。プログラムで行う場合は、RedirectToProvider() を呼び出す前に IAuthenticationRequest オブジェクトにプロパティを設定します。

セッション/Cookie の問題が www と非 www のホスト名の間を移動する限り、次の 2 つのオプションがあります。

  1. 元の識別子をセッションに格納するのではなく、いくつかの理由からこれは悪い考えですが、 IAuthenticationRequest.AddCallbackArguments(name, value) メソッドを使用してユーザーが入力したデータを格納し、次に IAuthenticationResponse.GetCallbackArgument(name) を使用してユーザーが認証されたときのデータ。
  2. 忘れてください。dotnetopenid ライブラリがこの情報を自動的に保存しないのには理由があります。ダイレクト ID は 1 つのシナリオにすぎません。ユーザーが「yahoo.com」と入力した場合、おそらく「ようこそ、yahoo.com!」とは言いたくありません。むしろ「ようこそ、id.yahoo.com/andrewarnott」! 適切な動作を一貫して取得する唯一の方法は、IAuthenticationResponse.FriendlyIdentifierForDisplay プロパティを使用して、ユーザーのログイン ID として何を表示するかを決定することです。より正確な情報を提供し、コールバックに値を格納して戻すよりも簡単です。:)
于 2008-12-17T04:36:41.377 に答える
1

OpenID がどのように機能するかはわかりませんが、LiveID はユーザーとドメインの組み合わせに基づいてトークンを提供します。www を mysite.com に転送しただけです。

于 2008-11-07T20:10:56.410 に答える
1

www.site.com と site.com の間で Cookie とセッション、およびその他すべてが失われます。すべての仕様を完全に読むほどの忍耐力はありませんが、http://www.w3.org/Protocols/rfc2109/rfc2109には次のように記載されています。

A は FQDN 文字列であり、形式は NB です。ここで、N は空でない名前文字列であり、B は形式 .B' であり、B' は FQDN 文字列です。(したがって、xycom ドメインは .y.com に一致しますが、y.com には一致しません。)

domain-match は可換演算ではないことに注意してください: abccom domain-matches .c.com ですが、その逆ではありません。

はい、wwwに転送する必要があることを意味すると思います。Cookie とセッションが使用されているときは、常にドメイン修正コードをサイトに追加しています。

于 2008-11-07T20:44:31.147 に答える