【问题标题】:User Permission Mask from NetworkCredentialsNetworkCredentials 中的用户权限掩码
【发布时间】:2012-07-10 10:05:48
【问题描述】:

虽然我目前正在我们的 Sharepoint 服务器上开发这个 WinForms 应用程序,但我打算让完成的程序在域上的任何计算机上运行。我正在使用 WSS Web 服务从 Sharepoint 获取我使用的所有信息。

我已经编写了一些代码,它将检查 Sharepoint 权限掩码,对掩码进行逻辑 OR,以检查它涵盖的所有权限,但我无法返回当前用户的 Sharepoint 掩码。我希望用户能够通过 Windows 身份验证直接登录,所以这是我的直接想法。

NetworkCredential credentails = CredentialCache.DefaultNetworkCredentials;
var userInfo = userGroupService.GetUserInfo(credentails.UserName);

但是,尽管我能够使用DefaultNetworkCredentials(如下面的 sn-p)返回整个 Sharepoint 站点的权限集合,但属性是空字符串,因此我无法使用它来获取用户名。

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 身份验证受到 double-hop issue 的影响,我想避免这种情况,但是当我在运行 Sharepoint 和 IIS 的服务器上进行开发时,我看不到这会立即导致问题。

是否有解决此问题的方法或更好的方法来获取当前用户的权限掩码?

【问题讨论】:

  • 我不确定这是否能满足您的要求,但您是否考虑过使用“受信任的委托”帐户。当委托服务帐户受信任时,应允许双跳。

标签: c# sharepoint wss-3.0 networkcredentials


【解决方案1】:

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

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

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

XmlNode currentUserPermission = userGroupService.GetRolesAndPermissionsForCurrentUser();

【讨论】:

    【解决方案2】:

    您正在处理身份验证无法超越一台远程主机的问题;这被称为“单跳”限制。

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

    您可以获取更多关于约束委派here.的详细信息

    祝你好运!设置 CD 可能会有点痛苦,因此请小心操作。

    【讨论】:

    • 您能否引用“单跳”限制的任何来源或进一步解释?虽然了解这一点很有用,但由于我不是在远程主机上开发,所以我看不出这对我有什么影响。
    • 我手头没有链接,但一般的概念是,从A点到B点,直接协商一个Windows Authentication凭证,这样A就提供了B已经认证过的身份它现在相信 A 所呈现的。如果该凭证随后被传递给 C,C 可能“看到”该凭证,识别出它已经过身份验证,但不参与身份验证并且不信任“B”提供一个。这就是“一跳”。约束委派指示“C”接受来自“B”的证书。
    猜你喜欢
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多