2013-11-26 13 views
5

Stackflowにはいくつかの類似したトピックがありますが、私の質問には答えられていません。Web APIアクセストークンはどのように格納する必要がありますか?

ASP.NET Web API 2は現在使用しているものです。私は今WebAPIからCORS認証要求を受け付けることができます。 Authorizationヘッダー(Bearer xxx)に沿って送信されたアクセストークンを使用して、[Authorize]タグで保護されているリソースにアクセスできます。

問題は、「ログインしてください」チェックボックスと同様の機能を、どのように実装できますか?私たちが望むのは、ユーザーが次にウェブページにアクセスしたときに再度ログインする必要がないことだけです。 1セッションのアクセストークンのみですか? WebAPI2はトークンの有効期限をどのように設定しましたか?どうやってセッションの情報を保存したり、そのような認証情報を保存するためにローカルストレージを使用することができますか?このトークンをクライアント側に保存するときに、それを保護するために何らかの暗号化が必要ですか?

「Remember me」機能を実装する際の提案は何ですか?

+0

編集ありがとう、b__。 – Blaise

答えて

4

認証プロバイダは、これを行うための機能を提供する必要があります。これは、ASP.Netメンバシッププロバイダを使用する場合、非常に簡単です。

FormsAuthentication.RedirectFromLoginPage(strUserName, true); 

上記の「true」は、永続的なCookieを設定します。

あなたはCORSを使用し、WEBAPIに認証Cookieを送信すると、WEBAPI認証が古い「私を忘れないでください」クッキーや新鮮ログインからからであるかどうかを気にしません。それが気にするのは、Authorizationヘッダーで渡されたCookie値が有効であることだけです。

クッキーの暗号化に関しては、これは認証プロバイダがあなたに提供するものでもあります。

+0

答えをありがとう。我々はCORSを使用しており、アクセストークンはクライアントサイドに格納する必要があります。これはHTMLとJavaScriptだけです。トークンをクッキーの中に保存することをお勧めしますか? – Blaise

+0

はい、それは私がやっていることです。証明書を使用して認証トークンを暗号化する集中型STSを使用していることを追加する必要があります。クライアント上の解読証明書なしでは無意味です。だからこそ私はこのためにクッキーを使用することは問題ではないので、これですぐに使えるソリューションを使用することができます。これを望まない場合は、ThinkTecture.comをご覧ください。これらの人には、Cors認証用のJsonトークンを送信できるソリューションがあります。 – Morten

+0

ありがとうございます。あなたが使用している「集中型STS」は何か分かりますか? – Blaise

6

私を忘れないでください「の問題があり、どのように私は同様の機能を実装することができます 『』通常のログインフォームのチェックボックスを?」

保存チェックされている「私が覚えている」クライアント側のlocalStorageでトークン=>タブ/ブラウザが閉じても、トークンはまだ生きていて、次回に自動的にログインします。

[Remember me]チェックボックスがオフのときにクライエントサイドセッションストレージにトークンを保存します。> 毎回タブを閉じる/ browserセッション記憶域がクリアされます。次回にトークンをチェックすると、トークンは存在しません。したがって、もう一度ログインする必要があります...

"私たちが望むのは、次回にウェブページにアクセスしたときに再度ログインする必要はありません。

上記の回答を参照してください。

は一つだけのセッションのためのアクセストークンですか?

はいブラウザのタブはセッションです。 WebAPI2は、トークンの有効期限を設定しない方法

あなたはトークンの有効期限が切れる時間を設定しました!

セッションに情報を保存したり、ローカルストレージを使用してそのような認証情報を保存することはできますか?

のみユーザーID /パスワード

私たちは、クライアント側でこのトークンを保存し、我々はそれを保護するための暗号化のいくつかの並べ替えを必要としないん決してクライアント側で暗号化されたトークンを保存しますか?

トークンはサーバー側で暗号化され、要求ごとにクライアントに送信されます。クライアントはトークンを読み取る必要はありません。クライアントはそれを要求するだけでそれを送る必要があります。

+2

私は質問をして答えは古いですが、まだ:sessionStorageの問題は、同じブラウザのタブ間で永続的ではないということです。ユーザーが現在のタブ/ウィンドウで行っている作業を失わないだけのリンクから新しいタブ/ウィンドウを開こうとすると、その新しいタブ/ウィンドウにはオブジェクトが存在しないため、アプリケーションは再度ログインするように求めますもうsessionStorage ... – CesarD

関連する問題