Как включить пользователя для олицетворения в Tridion 2009?
Я пытаюсь использовать ContentManagment API Tridion для получения категорий таксономии и ключевых слов, но я сталкиваюсь с ошибкой "Отказано в доступе".
У меня есть следующий метод:
public Dictionary<string, string> GetKeywords(string tcmUri)
{
var result = new Dictionary<string, string>();
try
{
// _settings.ImpersonationUser = "MYDOMAIN/myusername"
using (var session = new Session(_settings.ImpersonationUser))
{
var category = new Category(new TcmUri(tcmUri), session);
var keywords = category.GetKeywords(new Filter());
if (keywords != null && keywords.Count > 0)
{
foreach (var keyword in keywords)
{
result.Add(keyword.Id.ToString(), keyword.Title);
}
}
}
}
catch (Exception ex)
{
Logger.Log.Error(
"Failed to retrieve keywords for '{0}'.".FormatWith(tcmUri), ex);
}
return result;
}
Пользователь, которого я получил в _settings.ImpersonationUser
имеет доступ к Tridion Content Manager, настроен как администратор и добавлен пользователям олицетворения в оснастке "Конфигурация SDL Tridion Content Manager".
Я получаю следующую ошибку:
System.Runtime.InteropServices.COMException (0x80040302):
<?xml version="1.0"?>
<tcm:Error xmlns:tcm="http://www.tridion.com/ContentManager/5.0"
ErrorCode="80040302" Category="16" Source="Kernel" Severity="2">
<tcm:Line ErrorCode="80040302" Cause="true" MessageID="16226">
<![CDATA[Access denied for the user MYDOMAIN\myuser.]]
<tcm:Token>MYDOMAIN\myuser</tcm:Token>
</tcm:Line>
<tcm:Details>
<tcm:CallStack>
<tcm:Location>SystemBLST.GetUserContext</tcm:Location>
<tcm:Location>SystemBLST.IBLSecurityST_GetUserContext</tcm:Location>
</tcm:CallStack>
</tcm:Details>
</tcm:Error>
У кого-нибудь есть подсказки, что я делаю не так? Заранее спасибо!
1 ответ
Вот несколько вещей, которые нужно понять, когда дело доходит до подражания и тридиона...
- Пользователь, выполняющий код, не должен иметь доступа к Tridion.
- Пользователь, выполняющий код, должен быть настроен как действительный "пользователь подражания"
- Пользователь, который выдает себя за код, должен быть действительным пользователем Tridion.
Если все эти 3 условия выполняются, подражание будет работать.
Под выполнением кода я имею в виду учетную запись Windows, под которой выполняется код. Если эта учетная запись имеет доступ к Tridion, вам НЕ нужно использовать олицетворение.
Надеюсь это поможет.