gpt4 book ai didi

wcf - Tridion CoreService 身份验证/模拟

转载 作者:行者123 更新时间:2023-12-01 10:04:35 25 4
gpt4 key购买 nike

我开发了一个使用核心服务的 .Net 库。该库从工作流自动决策的 VBScript 中调用,并使用核心服务来执行与该工作流过程相关的一些事件。

我能够使用我们为 Tridion 提供的服务帐户成功连接到该服务:

CoreServiceClient client = new CoreServiceReference.CoreServiceClient(
binding, endpoint);
client.ChannelFactory.Credentials.Windows.ClientCredential =
new NetworkCredential(serviceAccountUsername, serviceAccountPassword);
client.ChannelFactory.Credentials.Windows.AllowedImpersonationLevel =
System.Security.Principal.TokenImpersonationLevel.Delegation;

相关绑定(bind)属性设置如下:

binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
binding.Security.Transport.ClientCredentialType =
HttpClientCredentialType.Windows;

我遇到的问题是,当我调用核心服务时,我在 CMS 框上收到以下 Tridion 内容管理器错误:

Access is denied for the user NT AUTHORITY\NETWORK SERVICE.

如何配置我的客户端,以便使用 Tridion 服务帐户而不是 NT AUTHORITY\NETWORK SERVICE 执行操作?

最佳答案

如果您想在服务帐户下运行,您可能应该使用 SessionAwareCoreServiceClient,然后模拟您要使用的帐户。

var client = new SessionAwareCoreServiceClient(binding, endpoint);
client.Impersonate("Administrator");

但由于我的大部分核心服务客户端实际上都打算在不同的机器上运行,所以我不能使用Impersonate(至少在不引入巨大 安全漏洞),所以我像这样初始化我的客户端:

var client = ...
var credentials = CredentialCache.DefaultNetworkCredentials;
if (!string.IsNullOrWhiteSpace(userName) && !string.IsNullOrWhiteSpace(password))
{
credentials = new NetworkCredential(userName, password);
}
client.ChannelFactory.Credentials.Windows.ClientCredential = credentials;

关于wcf - Tridion CoreService 身份验证/模拟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12044338/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com