1

私はこれについて困惑しており、これを行う良い方法を考えることができません。システムを使用するためにユーザーがログインする必要がある Web サイトを開発しています。ASP.NET MVC 4 の組み込み認証を使用することを考えています。それはたいした問題ではありません。

ユーザーは別のサーバーでツールを使用できるようになります (私たちのサーバーはユーザーを認証し、別の Web サイトに、彼は大丈夫です、これらのメッセージは XML を使用して HTTPS 経由で渡されることを伝えます)。他のサーバーでは、メッセージが私たちの間で受け渡されるときにユーザーが使用する認証トークンを作成する必要があります。

他のサーバーとのすべての要求/応答を認証するために、トークンをデータベースに保持する必要があります。つまり、この「トークン テーブル」は、サーバーでのフォーム認証のタイムアウトについて何も認識していないことを意味します。

問題は、ユーザーが他のサーバーのツールを使用しているとしましょう。彼は長い間他のサーバーにいるでしょう。これにより、認識されたアクティビティがないように見えるため、サーバーでの認証によって彼がログアウトされます。トークンを手動で維持しているため、他のサーバーは彼をログアウトしません。これはユーザーにとって面倒なことです。なぜなら、ユーザーが私たちのサービスを使用する必要がある場合、常に「オンライン」であるにもかかわらず、再度ログインする必要があるからです。

2 つの認証を「同期」する方法はありますか? 最初は、(組み込み認証を使用する代わりに) サーバーに「トークン テーブル」を検索させることを考えていました。これにより、最後のアクティビティが x 前の場合、ユーザーは再度ログインする必要があり、これで問題が解決します。サーバーから不意にログアウトします。しかし、セキュリティへの影響が心配です。

これを行う最良の方法は何ですか?

ありがとうございました。

デズモンド

4

1 に答える 1

1

MVC4アプリケーションでフォーム認証を使用してユーザーを認証していることが正しく理解できた場合、ユーザーは別のサーバーにある別のWebサービスも使用するため、この別のサーバーを使用している間はMVC4アプリケーションの(ユーザーの) 認証をタイムアウトにします。あれは正しいですか?

もしそうなら、あなたの MVC4 アプリケーションは、ユーザー名を受け取り、 RenewTicketIfOld()を使用してチケットに関連付けられたタイマーを更新する外部世界への API を持つことができるという考えが浮かびます。これは、HTTP 要求を作成する他の Web サーバーを介して行うか、ページに AJAX を配置してすべてのページで API を呼び出すことによって行うことができます。

もちろん、この方法には考慮が必要なセキュリティ上の懸念があります。あなたの状況を詳しく知らなければ、どの解決策が最適かわかりません。

于 2013-09-11T04:57:05.870 に答える