私の理解が正しければ、これはプレーン テキストをメモリから除外するためのものであり、アプリはメモリ、ガベージ ヒープ、またはディスクにページングされたメモリに対する難解な攻撃から保護されます。SecureString にはアンマネージド バイトが供給され、一度に 1 つのアンマネージド バイトが消費されます。その後、文字列はメモリから消去されます。(私が離れていたら私を訂正してください!)
ASP.NET では、シークレットは Web フォームで収集され、HTTPS でポストバックされます。しかしその後、Request オブジェクトはフォームからのすべての要求値を名前と値のペアに変換し、それらをコレクション (Request["TxtPassword"] など) に入れます。そのため、文字列を取得する前であっても、メモリに安全に書き込まれていません。さらに悪いことに、コントロールを使用していた場合、セキュリティで保護されていない表現では、TextBox のプロパティにより多くのマネージド文字列が含まれます。
この SecureString を使用して何かを行うには、管理されていない文字列を受け取る API が必要です。そのため、格納された proc パラメータなどにセキュア文字列を使用することはできないようです。
私はこれを間違っていますか、それとも SecureString を使用して、保護されていない文字列のコピーをマネージド メモリにリークしないようにするのはばかげたことですか?
OAuth または Windows 認証への切り替えはオプションではありません。