2010-11-23 3 views
1

Silverlight 4アプリケーションがあり、これはWCFサービスと通信します。ユーザーは、WCFサービスにアクセスするためにサインオンする必要があります。Silverlight 4でのユーザーログインの保存

今、Silverlightアプリを起動するたびにユーザー名とパスワードの再入力を防止したいと考えています。これを達成する最良の方法は何ですか?私はusername /(ハッシュ)passowrdを保存するクッキーについて考えましたが、クッキーはUnicodeを扱うことができず、パスワードはUnicodeとして保存されます。

あなたは何をお勧めしますか?事前に

おかげで、
フランク

答えて

2

は、さてあなたは、最初にログインした後のようないくつかのことを行う分離ストレージに暗号化形式でその資格を保存することができます。 SLがプルアップを開始し、それを検証してログインするためにサービスに渡します。

+0

ISは良い選択ですね、ありがとう! – Aaginor

0

これはSilverlightアプリケーションなので、ASP.NETで認証が処理されるのはなぜですか。 WCFサービスは、認証されたユーザーとしか連携しないように保護することができます。 Here's an excellent article on the subject.

EDIT

私はこの記事で著者は、ユーザー名/パスワードのカスタムメッセージヘッダを追加することに言及する必要があります。私はちょうどその論理をHttpContext.Current.Userが認証されているかどうかをチェックすることで置き換えました。もしそうなら、サービスへのアクセスを許可する。

1

もう1つの方法は、GUID(使用可能な場合)を保存することです。例えば

データベーススキーマは次のようになります場合は、...

user_id (UniqueIdentifier, primary key) 
username (varchar) 
password_hash (varchar) 
password_salt (varchar) 

それから私はIsolatedStorageuser_idusernameを保存すると思います。ユーザーがこれらの変数を返すと、WCFサービスの特殊な関数に渡され、認証されます。

user_idが決してユーザーに表示されない限り、これは安全な方法であり、パスワードを侵害する可能性はありません。ちなみに、私は元々このアイデアを思いついたのは、OpenIDを使っていてパスワードがないサイトだからです。

+0

私はユーザーパスワード(SHA256)をハッシュするので、一意の識別子が必要なのはなぜですか?私は、攻撃者がハッシュされたpwdとGUIDを取得していることに違いはないと見ることができます。両方の情報を使用すると、彼女はアプリケーションにアクセスすることができ、両方のユーザーはユーザーが使用しているパスワードを知ることができませんか、間違っていますか? – Aaginor

+0

セキュリティに違いはありませんが、これは別の方法です。 –

関連する問題