2011-12-03 23 views
4

私はデフォルトで自分のサイトにASP.NET MVC 3のメンバーシップを使用しています。したがって、ユーザーのメンバーシップパスワードは安全に保存されます。ASP.NETメンバーシップでサービスパスワードを安全に保存する方法は?

私のサービスでは、ユーザーが使用する他のWebサービスのユーザー名とパスワードを入力する必要があります。私は私のサービスからこれらのサービスにアクセスします。ユーザーのサービスパスワードを保存する場合、ユーザー名/パスワードが安全に保存されていることを確認して、誰かが私のサーバーをハッキングすると公開されないようにする必要があります。

私は、これがどのように行われるかという一般的な概念を理解しています(ユーザー名/パスワードを暗号化して、ASP.NETメンバーシップのキーとして提供しています)。しかし、私は特定のAPIや正しいパターンを知らない。

誰かが私のサービスをハッキングすると、パスワードを解読するためにハッシュ自体を使うことができるので、実際にこれを行うことは基本的に不可能だとも思う。それについて私は正しいですか?

私が間違っていると仮定すると、私がやりたい私のモデルは、このようなものが含まれていると仮定することが可能である:

public class MSExchangeSettings 
    { 
     [Required] 
     [DataType(DataType.EmailAddress)] 
     [Display(Name = "Email address for your Exchange account")] 
     public string EmailAddress { get; set; } 

     [Required] 
     [DataType(DataType.Password)] 
     [Display(Name = "Password for your Exchange account")] 
     public string Password { get; set; } 

     ... 
    } 

誰かがこれを正しく行う方法の例を提供していただけますか?

これは不可能な場合は、毎回私が避けたいと思っている毎回PWをユーザーに求めることに頼る必要があります。もちろん、私がOpenIDやOAuthをサポートするために使用するサービスについては、私は他の選択肢がありますが、この具体例(Exchange)ではusername/pwが必要です。

答えて

-2

私はあなたがこれを掲示かかった時間を感謝し、この

private static string GetPasswordHashed(string password) { 

     var saltBytes = new byte[0x10]; 
     using (var random = new RNGCryptoServiceProvider()) { 
      random.GetBytes(saltBytes); 
     } 

     var passwordBytes = Encoding.Unicode.GetBytes(password); 

     var combinedBytes = saltBytes.Concat(passwordBytes).ToArray(); 

     byte[] hashBytes; 
     using (var hashAlgorithm = HashAlgorithm.Create("HashAlgorithm")) { 
      hashBytes = hashAlgorithm.ComputeHash(combinedBytes); 
     } 

     var PasswordHashed = Convert.ToBase64String(hashBytes); 
     return PasswordHashed; 
    } 
+0

を見てみましょう。しかし、私は単純にパスワードをハッシュするつもりはない。私が上で説明したように、私はサービスの中でハッシュされていないパスワードを持つ必要があるので、Exchangeのような他のサービスでも認証できます。しかし、ありがとう。 – tig

関連する問題