簡體   English   中英

NetworkCredentials的用戶權限掩碼

[英]User Permission Mask from NetworkCredentials

雖然我目前正在我們的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正在運行時,我看不到這會立即引發問題。

有沒有辦法繞過這個或更好的方式獲得當前用戶權限掩碼?

如果wss的當前用戶將始終與當前登錄到PC的用戶相同

var userInfo = userGroupService.GetUserInfo(Environment.UserDomainName +@"\"+ Environment.UserName);

或獲取當前登錄用戶的權限

XmlNode currentUserPermission = userGroupService.GetRolesAndPermissionsForCurrentUser();

您正在處理身份驗證無法超出一個遠程主機的問題; 這被稱為“一跳”限制。

為了解決這個問題,您必須進入“約束委派”,其中計算機/帳戶被明確授權從另一台計算機/帳戶接收和接受身份驗證憑據。 這是在Active Directory中通過在委派的“結束”上定義適當的服務主體名稱(SPN)來設置的。

您可以在此處獲取有關約束委派的更多詳細信息

祝好運! CD可能會有點痛苦,所以要謹慎行事。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM