Я хочу аутентифицировать сервер приложений на своем центральном компьютере с помощью лицензионного ключа и не хочу включать его в качестве параметра в мои вызовы.
Я реализовал пользовательский 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, поэтому я должен иметь возможность каким-то образом его захватить.
- Любая идея, как?
- Есть ли более приятный / стандартный способ сделать это?
- Должен ли я использоватьelement?
Я более чем рад использовать operationContext.ServiceSecurityContext, но я не знаю, как настроить его на стороне клиента и где разместить свой пользовательский лицензионный ключ.
Iиметь несколько конечных точек, поэтому я бы предпочел иметь одно место для моего лицензионного ключа.Установка его из кода была бы еще лучше.
Спасибо