В конечном счете, это зависит от того, кто обращается к вашему сервису, IMO.
Если это в первую очередь B-to-B, что означает, что ваши клиенты - это какой-то автоматизированный процесс, а не, скажем, приложение Silverlight, я бы предпочел удостоверения личности (т.е. x509). Если это пользовательский вызов, такой как приложение silverlight, то я буду придерживаться имени пользователя / пароля, но рассмотрим федеративную идентификацию.
Тем не менее, учитывая тот факт, что у вас много разных типов клиентов, даже если это b-to-b, нет никакой гарантии, что вы сможете обслуживать каждого клиента с x509. По моему опыту, слишком много магазинов просто недостаточно гибки, чтобы принять «более новые» стандарты (хотя x509 существует уже давно, он все еще «новый» для многих людей, совершающих звонки через веб-службы). Поэтому вам лучше придерживаться имени пользователя / пароля.
Вы могли бы предложить все три, однако. WCF очень, очень хорош в этом смысле; довольно просто настроить реализацию единой службы, которая только что поддерживает имя пользователя / пароль auth или x509 или федеративный идентификатор Почти все это обрабатывается конфигурацией привязки; вам может понадобиться некоторый код плагина для аутентификации имени пользователя / пароля (в зависимости от того, как вы настроены), но код аутентификации полностью отделен от кода сервиса.