4

C# と WPF で Word アドインを開発しています。

ドキュメントは、別のドメインにある SharePoint から開かれ、アドインを使用して処理されます。ドキュメントを開くと、MS Word は SharePoint ドメインの資格情報を要求します。

Word アドインでは、SharePoint と相互運用するために、これらの資格情報またはセキュリティ トークンを取得する必要があります。

C# から CredentialsCache を使用しようとすると、ローカル Windows/ドメイン アカウントの資格情報が取得されますが、Sharepoint ドメイン アカウントの資格情報は取得されません。

パスワードを再入力せずにチェックイン/チェックアウトして保存できるため、Word が SharePoint の資格情報を保存することを理解しています。

しかし、コードからこれらの資格情報を取得して、パスワードを再入力せずに SharePoint サービスにアクセスすることはできますか?

4

1 に答える 1

1

呼び出される Web サービスが Windows 統合セキュリティを使用する場合、現在の WindowsIdentity から NetworkCredential を作成するだけで、Web サービスが現在のユーザーの Windows ログインを使用できるようになります。ただし、Web サービスが別のセキュリティ モデルを使用している場合、現在の ID からユーザーのパスワードを抽出する方法はありません。それ自体が安全ではないため、開発者がユーザーのパスワードを盗むことができます。 . ユーザーがパスワードを提供する方法を提供し、パスワードを繰り返し提供する必要がないようにする場合は、安全なキャッシュに保管する必要があります。

編集: 現在の ID の資格情報を取得するには、次を使用します。

Uri uri = new Uri("http://tempuri.org/");
ICredentials credentials = CredentialCache.DefaultCredentials;
NetworkCredential credential = credentials.GetCredential(uri, "Basic");
于 2013-02-11T15:41:27.517 に答える