2011-06-24 13 views
1

ここにセットアップがあります。 1.フロントエンドWebサイトのフォーム認証 2. HTTPSを有効にした別のネットワーク上のバックエンドWebサービス(おそらくWCF)。資格情報をバックエンドWebサービスに転送する標準的な方法はありますか?

フロントエンドのコードは、これらのバックエンドWebサービスを通じてデータを取得します。

バックエンドWebサービス自体には、ユーザーの認証要求が必要です。バックエンドWebサービスは、フロントエンドサービスにデータを渡すだけではなく、OKであることを信じています。

これはどのように行われますか?今のところ忘れてはならないのは、ログイン時だけです。暗号化されたフォームの認証CookieのUserDataフィールドにパスワードを保存して、将来のリクエストでバックエンドにアクセスできるようにします。しかし、少年はそれが不快に感じます。

これは非常に一般的な設定のようですが、グーグルからの良いアイデアは見つけられません。

フロントエンドはMVCアプリケーションになりますが、MVC/Webフォームは重要ではないと思いますが、いずれのソリューションも両者にとってうまく機能するはずです。観客から

+0

誰がユーザーの資格情報を保持していますか?フロントサーバとバックサーバのためにそれらを別々に保管するのですか、それとも共有していますか? – ghimireniraj

+0

これらは共有され、バックエンドのデータベースに存在します。つまり、「資格情報の検証」は、ログイン時にフロントエンドで使用されるWebサービスメソッドの1つです。しかし、次のページでフロントエンドはデータのグラフを表示する必要があります。現時点では、フロントエンドはユーザーのユーザーIDのみを保持しているため、バックエンドに認証して情報を取得することはできません – Clyde

答えて

0

コオロギ........私は一緒に行くことにしました

戦略は以下の通りです:ログイン時

、フロントエンドのWebサイトでは、通常のフォーム認証を作成し、チケット。また、フォーム認証も実装するバックエンドWebサービスのログイン機能を呼び出します。バックエンドWebサービスによって返されたASPXAUTHクッキーは、フロントエンドフォーム認証クッキーのUserDataプロパティに格納されます。

フロントエンドがバックエンドメソッドを呼び出す必要がある場合、フロントエンドフォーム認証チケットのUserDataにバックエンドフォーム認証Cookieが格納されています。それは認証のためにWCF HTTP呼び出しにそれを添付できます。

私が見ることができる最大の危険は、セッションタイムアウトが互いに打ち消し合うことです。特に、ユーザーがバックエンドコールを必要としないフロントエンドのいくつかのページをブラウズする場合です。その場合、スライドタイマーはフロントエンドではリセットされますが、バックエンドではリセットされません。私が考えることができる最も良いカウンターは、フロントエンドへのすべてのリクエストを、彼らが積極的にログインしている場合、バックエンドでPing()メソッドを呼び出すことです。

誰もがこの戦略で突き進む穴を見ますか?

関連する問題