5 分ごとに WebServices を使用して外部 API に接続する必要がある ASP.Net C# アプリケーションがあります。
外部 Web サービスの要件は次のとおりです。
- ユーザー名とパスワードが必要です
- 各 Web サービス要求でユーザー名とパスワードを送信する必要があります
- パスワードは 90 日ごとに期限切れになり、有効期限が切れる前に変更する必要があります
- パスワードを手動で (人間が) 変更することはできません。私のアプリケーションは、別のパスワード変更 Web サービスに接続してパスワードを変更する必要があります。
- 私のアプリケーションは、一連のルールに基づいて新しいパスワードをそれぞれ生成する必要があります。
- パスワードを再利用することはできません。
- SSL、証明書、およびファイアウォールの IP 制限が必要です
以前のものはすべて作成しましたが、現在 1 つの問題があります。現在および過去のパスワードを保存するためのベスト プラクティスは何ですか?
明らかに、プレーンテキストのパスワードを保存することは悪い解決策です。Webサービスにパスワードを読み取らせ、リクエストごとに送信できるようにする必要があります。また、新しく生成されたパスワードが重複していないことを確認するために、すべての過去のパスワードにアクセスできる必要があります。
理想的には、各 (暗号化された) パスワードをデータベースに保存し、Web サービスを呼び出す必要があるたびに復号化したいと考えています。私が従うべきベストプラクティスはありますか? Microsoft.Practices.EnterpriseLibrary.Security.Cryptography.Cryptographer.EncryptSymmetric(..) を使用して各パスワードを暗号化する必要がありますか?
注: 残念ながら、外部 API の機能を変更するアクセス権はありません。私は定められた規則に従わなければなりません。