Как я аутентифицирую пользователей с SOAP?
Я должен буду потребовать, чтобы пользователь отправил свое имя пользователя и пароль с каждым запросом SOAP, и я аутентифицирую его против базы данных?
Разве это, кажется, не вызывает ненужные запросы?
Когда пользователь отправляет имя пользователя и пароль с каждым запросом, я видел, как реализовано большинство интерфейсов SOAP. На самом деле, я не видел другой реализации, кроме идеи API-ключа , которая просто обменивает имя пользователя и пароль на какой-то другой токен.
Интерфейсы SOAP не должны иметь состояния, как HTTP, так что это кажется нормальным следствием.
Более простой способ состоял бы в аутентификации по первому запросу, построении записи сеанса на стороне сервера, содержащей удаленный IP-адрес и токен, который вы даете клиенту в качестве authToken. Затем попросите клиента передать этот authToken в будущих запросах. Этот authToken должен соответствовать внутренним данным сеанса, которые вы храните о клиенте, но он позволит вам избежать необходимости совершать обратные обращения к базе данных только для аутентификации.
Тем не менее, @Marcus Adams имеет хороший аргумент ниже относительно безгражданства. Есть люди, продвигающие всевозможные модели безопасности SOAP . WS-Security - это современный уровень техники, здесь. Все они работают, помещая информацию для аутентификации в заголовок SOAP - в конце концов, именно поэтому сообщение SOAP содержит и заголовок, и часть тела.
Определите настраиваемый заголовок SOAP и обмен учетные данные аутентификации в заголовке. Прочтите значения из заголовка и выполните аутентификацию.