7

VBulletin フォーラムには多くのユーザーがいます。今、私は同じユーザーベースのためにレール上にさらにいくつかのアプリを書きたいと思っています. これまで、すべての認証とセッション管理は VBulletin によって処理されていました。onVBulletin と私が書いている Rails アプリの両方のユーザーに SSO を提供する最良の方法は何ですか?


v Bulletin とカスタムメイドのアプリケーションを使用したシングル サインオン プロセスに取り組んでいます。Cookie を使用して Vb にログインできます。すべてにアクセスできます。ただし、アクセス時に「プライベートメッセージ」を送信します。それは言う

" プライベート メッセージがオフになっています。オプションを編集してオンにするまで、プライベート メッセージを送信することはできません。"

「データソース」テーブルにすべての権限が設定されていますか?..

ありがとうマスター

4

1 に答える 1

7

理想的には、2 つのサイトが共通ドメイン (例:forum.example.comrails.example.com) のサブドメインであるか、同じドメイン ( www.example.com. ] または共有ドメインの場合は、両方のアプリケーションがそれにアクセスできるようにするため)、Cookie には以下が含まれます。.example.com.example.comwww.example.com

  • user ID
  • a salt(ログイン時に計算されるランダムな値)、および
  • SHA-2 signatureトリプレット ( user ID+ salt+ a ) に対して計算されたa shared secret key。ここで、共有秘密鍵は両方のサイトで知られている秘密文字列です。

各サイトはCookie からuser IDandを取得し、(2 つのアプリケーションだけが認識している) を使用して、Cookie に格納されていると一致する必要があるを計算できます。saltshared secret keySHA-2 signatureSHA-2 signature

一致する場合SHA-2 signaturesは、ユーザーが認証されていると見なすことができます。そうでない場合は、ユーザーに再度ログインを強制します。

ログオフ時に Cookie を破棄する必要があります。

細字

セッション ハイジャックから保護するには、2 つのサイトで行われるすべての要求を SSL で暗号化する必要があります (https を使用します)。これが不可能な場合は、クライアントの IP アドレスとブラウザーの種類とバージョン (ユーザー エージェント) に基づくハッシュを使用する必要があります。おそらくログイン時に計算され、Cookie にも保存されます。各リクエストを処理する前に、クライアントの IP アドレスとユーザー エージェントに対して再チェックする必要があります。ハッシュベースのアプローチは、あいまいさによるセキュリティであり、だまされる可能性があります。さらに、プロキシのプールの背後から、またはTORを使用してインターネットにアクセスしているユーザーは、別のプロキシまたは出口ノード (別の IP アドレスを持つ) が要求を転送するたびに、システムによって追い出される可能性があります。

于 2009-02-27T03:22:02.570 に答える