2011-12-28 4 views
3

Недавно я работал над проектом, в котором задействована служба WCF, и для аутентификации использовался wsHttpBinding. Третья сторона, потребляющая сервис с PHP, жаловалась, что этот подход не работает из коробки в PHP и что он недостаточно взаимодействует (они предпочитают подход RESTful, передавая учетные данные с помощью GET ..)Насколько взаимозаменяема WS-Security?

I ' вы никогда не потребляли службу с PHP, не имеет ли в их аргументе какой-либо воды?

Для расширения:

Не будучи в состоянии получить что-то работает из коробки на вашем языке/окружающая среда не обязательно является хорошим аргументом в пользу отсутствия interopability, и я на самом деле не убедили их. Мне любопытно, насколько это возможно в более широком масштабе, поскольку я хочу, чтобы мой сервис был легко расходуемым не только для клиентов .NET.

Дополнительное примечание:

Я использую TransportWithMessageCredential, учетные данные проверяются на службе, а не IIS. Каков предпочтительный способ предоставления учетных данных службе RESTful таким образом? (если это отдельный вопрос?). Мне просто интересно, может ли это быть жизнеспособной альтернативой в этом сценарии.

+0

PHP - это язык сценариев. Меня не шокировало бы, если бы оно не применяло международные стандарты из коробки. –

ответ

0

Это правда, что REST очень легко реализовать на широком спектре платформ и операционных систем программирования (включая, например, PHP на Linux-боксе, что является очень распространенной настройкой).

WS-Security, как расширение для SOAP, является стандартизованным протоколом и существуют реализации для других платформ, кроме .NET. Тем не менее, диапазон бесплатных библиотек здесь очень ограничен (для PHP я не знаю), и это, конечно же, означает больше усилий для подключения к службе WS-Security, чем к простой службе REST, по крайней мере, если служба использует протокол функции, выходящие за рамки простого SOAP.

Еще одна вещь: HTTP имеет встроенную поддержку аутентификации, поэтому вы можете абсолютно реализовать аутентифицированную службу RESTful без добавления учетных данных к запрашиваемому URL.

+0

Я обновил свой вопрос, но сам транспорт не нужно проверять подлинность, а скорее сообщение. Служба использует 'TransportWithMessageCredential', и служба проверяет учетные данные. – diggingforfire

+0

Я сомневаюсь, что будет легко использовать такую ​​функцию с не-NET языком, как PHP. Если вы хотите знать, как вы можете достичь чего-то сопоставимого с REST, это будет стоить нового вопроса. Дополнительную информацию см. В http://stackoverflow.com/questions/1933234/calling-a-wcf-webservice-in-php-via-wshttpbinding. –

+0

REST не является протоколом. Это просто техника. – DanMan

1

У меня была такая же проблема с некоторыми из моих клиентов (также называю мою службу с PHP).

Таким образом, мы просто выставили дополнительную информацию basicHttpBinding Конечная точка.

Я использую Транспорт безопасность с UsernamePassword аутентификация в этой конечной точке.

+0

Мое обслуживание по-прежнему требует безопасности сообщений, и это доступно только с помощью 'wsHttpBinding' – diggingforfire

+0

@diggingforfire - почему вы не используете безопасность транспорта? Невозможно использовать wsHttpBinding с PHP. Я использую Transport (SSL) для шифрования и Username/Password для аутентификации. – Maxim

+0

Учетные данные должны обрабатываться службой, а не веб-сервером (IIS), поэтому они должны быть в сообщении. Он по-прежнему остается HTTPS (вы не можете использовать защиту сообщений без HTTPS) – diggingforfire