Есть много вариантов:
Если веб-сервис должен быть защищен, и я предполагаю, что он делает, так как у Вас в настоящее время есть Заголовок аутентификации, то необходимо пересмотреть использование, ДОБИРАЮТСЯ и не использование SSL, по крайней мере, для части аутентификации. Как минимум я был бы POST запрос авторизации через SSL к веб-сервису / приложение. Если Вы не захотите обеспечивать аутентификацию по каждому запросу, то необходимо будет принять назад (и генерировать в сервисе), cookie авторизации, который потребитель может использовать для последующих запросов.
Я избегал бы использования аутентификации в URL по точно причине, что Вы хотите поддерживать, ДОБИРАЮТСЯ - если URL может кэшироваться, то учетные данные будут кэшироваться также. Это повреждает безопасность веб-сервиса, так как любой может снова использовать кэшируемые учетные данные.
Если Ваши клиенты находятся на том же домене, можно включить Интегрированную аутентификацию Windows в приложении IIS. Ваше приложение теперь признает, что Windows аутентифицировал пользователей, только. Добавьте свой собственный RoleProvider для более прекрасной, основанной на роли гранулярности.
Используя ПОЛУЧЕНИЕ только API, у меня был бы первый метод, который выбирает уникальный идентификатор сессии.
Например: ПОЛУЧИТЬ / API? action=auth&username=user&password=hashedpassword возвратил бы 16 маркеров символов, которые Вы храните на своей стороне, и Вы требуете этого уникального маркера для каждого последующего вызова.
Если бы API был сделан в PHP, то Вы могли бы использовать его функциональность обработки сессии PHP для достижения этого (он имеет тайм-аут/сборку "мусора"). В ASP.NET существуют подобные функции.
Это уязвимо для атаки с повторением пакетов (кто-то захват или предположение идентификатора сессии), но если Вы хотите что-то простое, это - способ пойти. Любой веб-сайт неHTTPS был бы уязвим таким же образом. Можно связать идентификатор сессии адресом IP пользователя для дополнительной безопасности.
При использовании WCF, Вы можете, основывался на созданном в механизмах защиты. Если Вы не хотите использовать стандартные платформы для безопасности, Вы, скорее всего, собираетесь сделать безопасность с помощью мрака.
Подобный ответу Thomas Eyde: можно использовать систему единой точки входа как siteminder для обеспечения URL. Вызывающая сторона запрашивает потребности включать маркер, который обычно хранится в cookie, но может быть добавлен к строке запроса.
Любой SSO или платформа управления веб-сервиса намеренно сделают аутентификацию трудной, не используя SSL.