访问coreservice Tridion时,用户NT AUTHORITY\NETWORK服务的访问被拒绝

访问coreservice Tridion时,用户NT AUTHORITY\NETWORK服务的访问被拒绝,tridion,tridion-2011,tridion-core-services,Tridion,Tridion 2011,Tridion Core Services,当我在本地使用tridion 2011 core services编写自定义页面时,我使用tridion凭据访问core services Web服务 现在,当一切都在我的本地服务器上完成时:),我发布了我的网站,并在Tridion CM服务器上简单地做了以下事情 在IIS中,我创建了名为“CoreServices”的新应用程序网站 使用网络用户使用应用程序池 在coreservice mapped文件夹中复制了我发布的网站 从web配置中删除了我的凭据,并实现了读取访问网站/自定义页面的用户

当我在本地使用tridion 2011 core services编写自定义页面时,我使用tridion凭据访问core services Web服务

现在,当一切都在我的本地服务器上完成时:),我发布了我的网站,并在Tridion CM服务器上简单地做了以下事情

  • 在IIS中,我创建了名为“CoreServices”的新应用程序网站
  • 使用网络用户使用应用程序池
  • 在coreservice mapped文件夹中复制了我发布的网站
  • 从web配置中删除了我的凭据,并实现了读取访问网站/自定义页面的用户详细信息的逻辑
  • 现在,当我试图访问coreservice网站时,我发现以下错误

    用户NT授权\网络服务的访问被拒绝。 描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源

    异常详细信息:System.ServiceModel.FaultException`1[[Tridion.ContentManager.CoreService.Client.CoreServiceFault,Tridion.ContentManager.CoreService.Client,Version=6.1.0.996,Culture=neutral,PublicKeyToken=ddfc895746e5ee6b]:拒绝用户NT授权\网络服务的访问

请建议

编辑:我可以看到NT AUTHORITY\NETWORK服务已经添加到我的Tridion MMC中,请查看下面的屏幕截图:


此消息表示您的代码正在成功调用核心服务,并且您的网络凭据已成功识别,但Tridion未授予访问权限。这里有两种可能的情况:

  • 您希望Tridion使用网络服务标识作为受托人来执行操作。在这种情况下,网络服务将作为用户添加。这将是一种不寻常的配置,因为您通常希望网络服务成为用于其他目的的模拟用户
  • 您希望作为网络服务连接到Tridion,但让Tridion充当不同的受托人。在此场景中,网络服务应在管理管理单元中配置为模拟用户,并且必须调用问题John linked to()中描述的模拟方法

  • 这两种方法中的第二种几乎可以肯定是您想要的。我只对第一个进行了解释。

    此消息表示您的代码正在成功调用核心服务,并且您的网络凭据已成功识别,但Tridion未授予访问权限。这里有两种可能的情况:

  • 您希望Tridion使用网络服务标识作为受托人来执行操作。在这种情况下,网络服务将作为用户添加。这将是一种不寻常的配置,因为您通常希望网络服务成为用于其他目的的模拟用户
  • 您希望作为网络服务连接到Tridion,但让Tridion充当不同的受托人。在此场景中,网络服务应在管理管理单元中配置为模拟用户,并且必须调用问题John linked to()中描述的模拟方法

  • 这两种方法中的第二种几乎可以肯定是您想要的。我实际上只是通过解释的方式描述了第一种方法。

    如果对您有效,请尝试此方法。我没有尝试过此方法,因此不确定它是否有效

    var remoteAddress = new EndpointAddress(Settings.EndpointAddress);
    ProxyClient = new CoreServiceClient(basicHttpBinding, remoteAddress);
    ProxyClient.ClientCredentials.Windows.AllowNtlm = true;
    ProxyClient.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
    ProxyClient.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
    

    试试这个,如果它对你有效,我还没有尝试过,所以不确定它是否有效

    var remoteAddress = new EndpointAddress(Settings.EndpointAddress);
    ProxyClient = new CoreServiceClient(basicHttpBinding, remoteAddress);
    ProxyClient.ClientCredentials.Windows.AllowNtlm = true;
    ProxyClient.ClientCredentials.Windows.ClientCredential = System.Net.CredentialCache.DefaultNetworkCredentials;
    ProxyClient.ClientCredentials.Windows.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
    

    谢谢Dominic,那么您会建议哪种情况,因为我希望用户从他的机器访问自定义页面,如果tridion在组件或页面中进行了一些修改,则应将其详细信息添加到tridion历史记录中。您将需要模拟方法。我已添加了屏幕截图,将显示NT AUTHORITY\NETWORK SERVICE条目以进行模拟,我还可以检查什么呢谢谢Dominic,因此,您会建议哪种情况,因为我希望用户从其计算机访问自定义页面,如果他在组件或页面中进行了一些修改,则应在tridion历史记录中添加他的详细信息。您将需要模拟方法。我添加了屏幕截图,将显示NT AUTHORITY\NETWORK SERVICE条目以进行模拟,我还可以检查什么?回答如下:我已经检查了此链接,但没有解决我的问题,我是否需要为我的IIS应用程序授予更多权限或从代码进行处理。回答如下:我已经检查了此链接,但没有解决我的问题,我是否需要为我的IIS应用程序授予更多权限,或者从代码中进行一些处理。