WSSecurityTokenSerializer Производительность метода ReadToken - PullRequest
0 голосов
/ 23 сентября 2010

У меня есть Dispatch MessageInspector, который десериализует токен SAML, содержащийся в заголовке сообщения SOAP.

Для выполнения десериализации я использую вариант следующего кода:

List<SecurityToken> tokens = new List<SecurityToken>();

tokens.Add(new X509SecurityToken(CertificateUtility.GetCertificate()));

SecurityTokenResolver outOfBandTokenResolver = SecurityTokenResolver.CreateDefaultSecurityTokenResolver(new ReadOnlyCollection<SecurityToken>(tokens), true);

SecurityToken token = WSSecurityTokenSerializer.DefaultInstance.ReadToken(xr, outOfBandTokenResolver);

Проблема, которую я вижу, заключается в том, что производительность вызова ReadToken варьируется в зависимости от учетной записи, на которой запущена служба Windows (в которой размещена служба WCF).

Если служба работает как учетная запись домена Windowsистекшее время для вызова ReadToken практически равно нулю.При работе с учетной записью локального компьютера вызов занимает от 200 до 1000 миллисекунд.

Может кто-нибудь пролить свет на то, что здесь происходит, и почему учетная запись, выполняющая этот бит кода, влияет на его производительность?

Спасибо,

Мартин

1 Ответ

1 голос
/ 24 сентября 2010

Когда служба работает под локальной учетной записью, что значительно активнее, например:

  • Доступ и использование C: \ WINDOWS \ system32 \ certcli.dll
  • Доступ и использование C: \ WINDOWS \ system32 \ atl.dll

  • Попытка доступа к ключам реестра, например, HKLM \ SYSTEM \ CurrentControlSet \ Services \ CertSvc \ Конфигурация

Ничего из этого дополнительного действия, по-видимому, не происходит при запуске под учетной записью домена.

Быстрый поиск в Интернете «пользователя домена certcli.dll» приводит к появлению статьи 948080 базы знаний Майкрософт, которая звучит похоже.

Не знаете, как решить эту проблему, так как в конечном итоге вызывается метод .Net (WSSecurityTokenSerializer.ReadToken), когда вы практически не контролируете внутренние органы.

Похоже, это также описывает ту же проблему:

http://groups.google.com/group/microsoft.public.biztalk.general/browse_thread/thread/402a159810661bf6?pli=1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...