DefaultNetworkCredentials には null 値が含まれています。ユーザーにプロンプトを表示する必要があります...方法は?
-
14-09-2019 - |
質問
特定の状況下では、SharePoint Web サービスを使用するデスクトップ アプリで DefaultNetworkCredentials の値が null になり、呼び出しが失敗します。次にユーザーの資格情報を取得する必要がありますが、そうする簡単な方法が見つかりません。
で概説されているソリューションの実装を検討しています。 http://www.pinvoke.net/default.aspx/credui/CredUIPromptForCredentialsW.html
...ただし、それでもパスワードを処理する必要がありますが、これは本当はやりたくないことです。調べてみましたが、パスワードを保存せずにユーザーにプロンプトを表示し、NetworkCredential を直接返す、より直接的な方法は見つかりませんでしたか?
ありがとう、
編集:探しているものはなかなか見つからないようです...この問題が発生した場合は、自分でユーザーにプロンプトを表示する必要があります。
ただし、これらの回答の一部を正しく解釈している場合、そもそもこのように DefaultNetworkCredentials が null であることはエラー条件である可能性があります。そうですか?DefaultNetworkCredentials を強制的に設定する方法はありますか、それとも本当に単純なキャッシュで、ターゲット URI に使用された最後のドメイン/ユーザー ID/パスワード (その日) を記憶しているだけですか?そのアプリケーション/セッション?)。
解決
私はあなたの最初の時間のためにそれらを扱う避けることができるとは思いません。しかし、あなたは資格情報マネージャへのフック、彼らはその時点から、キャッシュされますように。 ここではそのに行う方法についての記事です。これは、p /呼び出しに重いですが、ユーザーより一貫性の経験を与える可能性があります。
他のヒント
、根本的な問題ではなく、彼らがすでに入力した情報をユーザーにしつこいよりもヌル信任状を作業。
あなたは彼らがthier現在のアカウント(おそらく便利な機能)とは異なるのSharePointにログインできるようにしたい場合を除きます。
.NETは、資格情報を扱うためのコードを持っているのに、なぜ第二の外部DLLのに出て行くと、あなたのアプリに他の依存を追加することであることを推測する?
コードのセキュリティは、あなたの環境を持っているリスクについて、私は十分に知らないが、私は資格証明書がクライアントのメモリ内のオブジェクト保存するだけでほとんどの状況について「十分に安全」であろうと思っているだろう。
パスワードを処理してくれるものを私は知りませんが、 セキュアストリング 役立つかもしれません。