1

私は3つのmvc4サイトを持っています。サイト1「www.mydomain.com」は、ユーザーがアカウントを作成できるマーケティングサイトです。

サイト2「https://businessnamewhatever.mydoman.com」は、ビジネスがログインして利用可能な機能を使用するために使用されます。

サイト3WebApiプロジェクト'https://api.mydomain.com'

マーケティングサイト内にアカウントを作成した後(webapiを呼び出してアカウントを作成)、自動的にログインする2番目のサイトにリダイレクトしたいと思います。

どちらのサイトにもフォーム認証が設定されており、どちらもweb.config認証セクション内で設定された独自のCookie名を使用します

APIを呼び出した後、マーケティングサイト内で、ユーザーがサイト2に自動的にログインできるようにする認証Cookieを設定する必要があります。

自分のマーケティングサイトから使っただけだと思いました

FormsAuthentication.SetAuthCookie(userName、true、 "サイト2のCookieの名前");

私の2番目のアイデアは、次のようなダーティリダイレクトを実行することでした

   var url = string.Format("https://{0}.mydomain.com/account/sign-in?userName={1}&password={2}", model.BusinessName, model.BusinessName, model.Password);
   return Redirect(url);

ただし、リダイレクトは発生しません。ネットワークタブを見ると、応答がわかります。それをクリックすると、サイトに正しくリダイレ​​クトされます。

これを行うためのより良い方法はありますか?

アップデート

ごめん!APIとして機能する3番目のアプリケーションがあることを忘れました

Kennethの提案に従って、すべてのweb.configを更新しました。認証設定で同じマシンキーとドメイン名を追加する

マーケティングサイト内でcreateuserメソッドを呼び出した後、そこでCookieを設定しようとしているのでしょうか、それとも他のことをしているのでしょうか。

4

2 に答える 2

1

2つのサイトがルートドメインIEsite1.yourdomain.comとsite2.yourdomain.comを共有している場合、両方のサイトが認証チケットにアクセスできるように、マシンキーと共有ドメインを設定できる必要があります。

詳細はこちら。http://msdn.microsoft.com/en-us/library/eb0zx8fc.aspx

于 2012-06-13T00:44:02.480 に答える
1

まず、両方の製品が別々のドメインにあると想定しています(そうでない場合は、@ Kennethの回答を参照できます)。また、両方のサイトのソースコードを変更できます。

  • マーケティングサイトでアカウントが作成されたら、サーバー側から、ユーザー名、パスワードハッシュ、およびマーケティングへのリダイレクトURLを含むPOST(セキュリティにSSLを使用)をビジネスサイトに送信します。
  • ビジネスサイトはこれらの値を(必要に応じて)保存し、クライアントブラウザをリダイレクトするための1回限りのURLで応答します。これは短時間(たとえば1分または2分)のみ有効です。
  • マーケティングサイトは、そのURLを302リダイレクトとしてクライアントに送信します。
  • クライアントブラウザはビジネスサイトにリダイレクトします。
  • ビジネスサイトはURLを検証し、有効期限が切れていないことを確認します。
  • ビジネスサイトは、ブラウザをマーケティングにリダイレクトするURLにリダイレクトします。この応答に認証Cookieを含めます。

検証エラーが発生した場合(タイムアウトや無効なパラメーターなど)、ビジネスサイトはマーケティングサイトの事前定義されたURLにリダイレクトする必要があります。

于 2012-06-13T01:03:02.807 に答える