現在、Sharepoint サーバーでこの WinForms アプリケーションを開発していますが、完成したプログラムはドメイン上の任意のコンピューターから機能する予定です。私は WSS Web サービスを使用して、Sharepoint から使用するすべての情報を取得しています。
Sharepoint Permission マスクをチェックするコードをいくつか書きましたが、マスクに対する論理 OR を使用して、それがカバーするすべての権限を確認しましたが、現在のユーザーの Sharepoint マスクを返すのに問題があります。ユーザーが Windows 認証を介して直接ログインできるようにしたいので、これは私の当面のアイデアでした。
NetworkCredential credentails = CredentialCache.DefaultNetworkCredentials;
var userInfo = userGroupService.GetUserInfo(credentails.UserName);
ただし、DefaultNetworkCredentials
(次のスニペットのように) SharePoint サイト全体のアクセス許可コレクションを返すことはできますが、プロパティは空の文字列であるため、それを使用して UserName を取得することはできません。
permissionService.Credentials = CredentialCache.DefaultNetworkCredentials;
permissionService.Url = "http://localhost/mySite/_vti_bin/Permissions.asmx";
// Web service request works
XmlNode node = permissionService.GetPermissionCollection(siteName, "Web");
// But I need to identify current user from this collection somehow still
Windows 認証がダブルホップの問題に悩まされていることを読みましたが、これは回避したいのですが、Sharepoint と IIS が実行されているサーバーで開発しているため、これがすぐに問題を引き起こすことはわかりません。
これを回避する方法、または現在のユーザーのアクセス許可マスクを取得するより良い方法はありますか?