0

私は多くのサイトのコア/マスターであるサイトに取り組んでいます。また、ブランドバナーの下にあるすべてのサイトで認証を処理する責任があります。

クライアントはシングルサインオン操作を含めることを望んでいたため、いずれかのサイトにサインインすると、すべてのサイトにサインインします。メインサイト(私たち)にリダイレクトしてログインを実行することにより、サイトのサインインを処理しています。

SSOは、画像タグをページに埋め込み、各子サイトのページを呼び出すことで動作することが決定されました。これにより、サイトへのクライアントセッションが開き、Cookieを設定したり、ログインを処理したいことを実行したりできるようになります。

これはほとんどの部分で機能し、IE7、FF 2、3でテストされており、すべて機能します。現在問題となっているブラウザはSafari(およびChrome)です。クライアントセッションで画像が読み込まれているように見えますが、開かれていないようですが、設定された子サイトからCookieを取得していません。問題は、SafariとChromeが問題となっているWebKitベースのブラウザのようです(konquerorも同じ運命をたどる可能性があると思いますが、現時点ではLinuxを自由にインストールできません)。

Safariに外部ホストへの埋め込み画像タグをクライアントコンテキストを開くものとして認識させる方法を知っている人はいますか?または、誰かがASP.NETからASP.NETではないサイトにSSOを実行するためのより良い方法を提供できますか?

注:はい、画像を無効にすることに関して、これまでに行ってきたSSOの概念に問題があることを認識しています。提案された解決策は私のものではなく、私はそれに固執しています。

4

2 に答える 2

3

私が扱ってきた SSO のほとんどは、集中認証サーバー ( CAS ) を使用し、クエリ パラメータと Cookie を介して渡されるチケットで動作します。

基本的な考え方は、サイトがチケットを検出しない場合、CAS Web サイトにリダイレクトするというものです。Web サイトは認証を実行し、認証 Cookie を設定し、一意の 1 回限りのチケット (クエリ パラメータとして) を使用してサイトにリダイレクトします。リダイレクトされると、サイトはチケットを検出し、帯域外 Web 要求を使用してチケットを引き換えるために CAS サーバーにコールバックを行います。このリクエストは、ログインしたユーザーの ID を返します。これを使用して、アプリケーションで認証済みユーザーを設定します。

CAS サーバーは、どのアプリケーションが相互に SSO を許可されているかを追跡します。認証要求が SSO プール内のサイトから着信し、認証チケットがプール内の別のサイトに対応する場合、CAD サーバーは再認証を強制せずにチケットで応答します。このようにして、ユーザーが関連サイト間の再認証をバイパスできるように CAS Cookie がそれを作成するという事実に応じて、サイトは特別な「魔法」なしで相互にリンクできます。

于 2008-10-27T23:40:23.360 に答える
1

Safariのように見えます(少なくとも私のOS Xでは-これはデフォルト設定である必要があります)そして、ChromeはデフォルトでサードパーティのCookieを許可しないと思います。

Safari -> 環境設定 -> セキュリティ -> Cookie を受け入れる:

o 常に
o なし
+ 移動先のサイトからのみ

ドキュメント ドメインに Cookie を設定させるためのAJAX ハッカーがいくつかありますが、ここでの問題を本当に解決できるとは思いません。Safari では、おそらく document.domain を設定しない限り、iframe がサードパーティの Cookie を設定することさえ禁止していると思います (ただし、共通のドメインを共有している場合は、Cookie ドメインを設定するだけですべて完了できます)。

window.open や一連のリダイレクトを除けば、サード パーティの Cookie の問題を回避するためにできることはあまり思い浮かびません。そのため、埋め込み画像のトリックを破棄して、最初からやり直すことをお勧めします。

于 2008-10-27T23:31:53.267 に答える