Я использую устаревшие веб-службы .net 2.0 .asmx (пытался убедить их переключиться на WCF, но не повезло). Я пытаюсь найти способ не только использовать пользовательский заголовок SOAP, но и аутентифицировать пользователя без кода аутентификации в каждой ссылке.Попытка переопределить атрибут SoapHeaderAttribute для добавления аутентификации в атрибут
В настоящее время, мой веб-службы выглядит следующим образом:
public WebserviceAuthentication currentUser;
[WebMethod(Description="Returns the logged in users credentials")]
[SoapHeader("currentUser")]
public string HelloWorld()
{
var user = AuthenticateUser(currentUser, WebServiceResources.MEDICAREELIGIBILITY_HELLOWORLD);
return string.Format("{0} {1} {2}", user.User.UserName, user.User.ProviderUserKey, user.AccountId);
}
В идеале, я бы изменить код на следующее:
public WebserviceAuthentication currentUser;
public CustomAuthentication user;
[WebMethod(Description="Returns the logged in users credentials")]
[SoapHeaderAuthentication("currentUser")]
public string HelloWorld()
{
return string.Format("{0} {1} {2}", user.User.UserName, user.User.ProviderUserKey, user.AccountId);
}
SoapHeaderAuthentication прочитал бы CurrentUser и подтвердить, что информация зарегистрированный пользователь. если они есть, вернуть пользовательский объект пользователя и заполнить пользовательский объект. Затем я мог бы получить доступ к пользовательскому объекту из WebService.
Проблема в том, что я не могу расширять SoapHeaderAttribute, потому что это закрытый класс.
Можно ли использовать WSE? –
Возможно. У вас есть пример? – Cyfer13
Не совсем. Я просто знаю, что смог получить намного больше контроля над заголовком с WSE в недавней реализации. –