首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自NetworkCredentials的用户权限掩码

来自NetworkCredentials的用户权限掩码
EN

Stack Overflow用户
提问于 2012-07-10 18:05:49
回答 2查看 704关注 0票数 3

尽管我目前正在Sharepoint服务器上开发此WinForms应用程序,但我希望完成的程序可以从域中的任何计算机上运行。我正在使用WSS web服务从Sharepoint获取我使用的所有信息。

我已经写了一些代码来检查Sharepoint权限掩码,对掩码使用逻辑或,它涵盖的所有权限,但我在返回当前用户的Sharepoint掩码时遇到了问题。我希望用户能够通过Windows身份验证登录,所以这是我的直接想法。

代码语言:javascript
复制
NetworkCredential credentails = CredentialCache.DefaultNetworkCredentials;
var userInfo = userGroupService.GetUserInfo(credentails.UserName);

然而,尽管我可以使用DefaultNetworkCredentials返回整个Sharepoint站点的权限集合(如下面的代码片段所示),但属性是空字符串,因此我不能使用它来获取UserName。

代码语言:javascript
复制
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 Authentication受到double-hop issue的影响,这是我想要避免的,但当我在Sharepoint和IIS运行的服务器上进行开发时,我看不到这会立即导致问题。

有没有办法绕过这个问题,或者有更好的方法来获取当前用户的权限掩码?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-30 16:49:19

如果wss的当前用户将始终与当前登录到pc的用户相同

代码语言:javascript
复制
var userInfo = userGroupService.GetUserInfo(Environment.UserDomainName +@"\"+ Environment.UserName);

或获取当前登录用户的权限

代码语言:javascript
复制
XmlNode currentUserPermission = userGroupService.GetRolesAndPermissionsForCurrentUser();
票数 2
EN

Stack Overflow用户

发布于 2012-07-28 12:38:51

您正在处理的问题是,身份验证不能超出一台远程主机;这称为“一跳”限制。

要克服这一点,您必须进入“受限委托”,即明确授权一台计算机/帐户从另一台计算机/帐户接收和接受身份验证凭据。这是在Active Directory中通过在委派的任一端定义适当的服务主体名称(SPN)来设置的。

您可以获得有关约束委托here.的更多详细信息

祝好运!安装CD可能有点麻烦,所以要小心操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11410960

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档