Отправка лицензионного ключа с клиента на сервер через WCF в заголовке - PullRequest
0 голосов
/ 19 августа 2011

Я хочу аутентифицировать сервер приложений на своем центральном компьютере с помощью лицензионного ключа и не хочу включать его в качестве параметра в мои вызовы.

Я реализовал пользовательский ServiceAuthorizationManager, но не уверен, что лучшеспособ и место установки этого лицензионного ключа на стороне клиента.

Я попробовал ниже (я могу быть совершенно не прав с подходом)

<endpoint address="http://127.0.0.1:8000/ApiDataService"  binding="wsHttpBinding"
    contract="MyInterfaces.IApiDataService">
        <headers>
            <LicenseKey>MyLicenseKey</LicenseKey>
        </headers>
</endpoint>

, затем в ServiceAuthorizationManager.CheckAccessCore (OperationContext operationContext)

Мне удалось найти индекс заголовка с помощью:

operationContext.RequestContext.RequestMessage.Headers.FindHeader("LicenseKey", "")

, но восстановленный HeaderInfo больше не содержит моего контента.Я уверен, что он находится в operationContext.RequestContext, поэтому я должен иметь возможность каким-то образом его захватить.

  1. Любая идея, как?
  2. Есть ли более приятный / стандартный способ сделать это?
  3. Должен ли я использоватьelement?

Я более чем рад использовать operationContext.ServiceSecurityContext, но я не знаю, как настроить его на стороне клиента и где разместить свой пользовательский лицензионный ключ.

Iиметь несколько конечных точек, поэтому я бы предпочел иметь одно место для моего лицензионного ключа.Установка его из кода была бы еще лучше.

Спасибо

1 Ответ

1 голос
/ 19 августа 2011

Эта статья здесь Шаблоны глобализации в WCF (реализация WS-I18N) могут представлять интерес для вас, поскольку демонстрируют, как использовать внеполосные механизмы WCF для отправки и получения пользовательской информации.Речь идет о глобализации, а не о лицензировании, конечно, но проблема кажется несколько похожей.

...