2010-12-02 16 views
2

domain1.comでフォーム認証を使用しているウェブサイトがあります。ASP.Netクロスサイト認証

ユーザーをdomain1.comにログインさせてdomain1.comホームページにリダイレクトするdomain2.comのログインページをどのように作成するか尋ねました(domain2.comにはメンバーシップシステムがなく、純粋に代替からのdomain1.comへのログインページ)。

これは既定で可能ですか、domain2.comのログイン要求を認証するdomain1.comのページを作成する必要がありますか?

答えて

2

はい、認証ページを再利用できます。

アクション 属性の可能な値は以下のとおりです:w3schoolsを引用domain1.com

で認証URIを指してdomain2.comでフォームを作成し

  • 絶対URL - へのポイント action = "http://www.example.com/example.htm"のような
  • 相対URL - ウェブサイト内のファイルを指します( action = "example.htm"など)。

UPDATE: 私はあなただけのドメイン1のページのために認証取得したいと仮定しています。 domain2から資格情報を送信していますが、あなたは自分のデータをポスティングしており、domain1にリダイレクトされています。 auth cookieはそのようなドメイン(domain1)に対してのみ有効です。

+0

私はdomain1.comと同じフォームのauth設定でdomain2.comをweb.configに設定しました。それはローカルで正常に動作するようです。しかし、別のドメインに設定されているCookieに問題はありますか? – user528573

+0

@ user528573:はい、別のドメインに設定されているCookieに問題があります。セキュリティ上の理由から、動作しません。これを回避する方法については私の答えを見てください。 – danielfishr

+0

Cookieが異なるルートレベルのドメイン間で共有されることを確認してください。 http://weblogs.asp.net/scottgu/archive/2005/12/10/432851.aspx#488128によると、domain2.comでdomain1.comに設定されたCookieを読み取ることができません。 – user528573

2

これは、system.webノード内の両方のサイトのweb.configにこれを追加することで実行できます。

<machineKey validationKey="21F090935F6E49C2C797F69BBAAD8402ABD2EE0B667A8B44EA7DD4374267A75D7AD972A119482D15A4127461DB1DC347C1A63AE5F1CCFAACFF1B72A7F0A281B" 
     decryptionKey="261F793EB53B761503AC445E0CA28DA44AA9B3CF06263B77" 
     validation="SHA1"/> 

これにより、クライアントのマシン上のCookieを介してアプリが認証データを共有できるようになります。

秘密の検証および復号化キーを生成する必要があります。このマイクロソフトのページでは、方法について説明していますhttp://support.microsoft.com/kb/312906