Что мы должны реализовать, чтобы разрешить клиентам использовать наш веб-сервис?

StackOverflow https://stackoverflow.com/questions/557979

Вопрос

У нас есть веб-сервис, который мы разместим на общедоступном веб-сервере, и с ним будут связываться веб-сервисы, размещенные на веб-серверах в стенах больницы.Мы написали обе части программного обеспечения, поэтому имеем полный контроль над тем, что реализовано.

Мы хотели бы обеспечить безопасную связь между двумя веб-серверами.В настоящее время единственное, что у нас есть, - это https на общедоступном веб-сервере и guid для идентификации клиентов.

Существуют типы авторизации на сетевом уровне, которые мы можем поддерживать, но мне не нравится полагаться на них, поскольку не все наши клиенты (больницы) смогут сделать то же самое.Некоторые из них не смогут предоставить нам статический IP-адрес, а некоторые не смогут использовать VPN, поэтому мы не можем полагаться исключительно на эти методы.

Какие методы вы используете или рекомендуете для авторизации сообщений в ваших веб-сервисах? Наша главная забота - не дать людям получить идентификатор больницы (в настоящее время просто GUID) и получить данные из нашего веб-сервиса, предназначенного для больницы.

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

Система еще не запущена в производство, но близится к завершению разработки.Он разработан на C # на .net 3.5

FWIW Я думал о какой-то авторизации на основе токенов, потому что я знаю, что предыдущий работодатель использовал что-то в этом роде.Однако я не знаю конкретно, что искать, или какую-либо другую информацию по этой теме.

Редактировать: Хотя я хотел бы использовать WCF, в настоящее время ни у кого в команде (включая меня) нет никакого опыта его использования, и мы уже разработали веб-сервисы вместе с кодом, который взаимодействует с ними.Все веб-ссылки были добавлены с использованием метода .net 2.0 (из версии net08, предназначенной для .net 3.5), и мы бы предпочли не переделывать это полностью.Я не буду говорить, что WCF - это не вариант, но я не думаю, что мы добровольно согласимся с этим вариантом.

Это было полезно?

Решение

Не могли бы вы использовать что-то вроде базовой аутентификации по протоколу https для ввода пароля пользователя?Я считаю, что Microsoft SOAP поддерживает это довольно хорошо.Вы в значительной степени просто используете IIS для настройки базовой аутентификации (необходимо использовать SSL), а в вашем C # просто передаете ICredentials своему прокси.

Судя по поиску в Google, похоже, что другие языки также поддерживают базовую аутентификацию поверх SOAP.

Другие советы

Клиентские сертификаты могут использоваться для предоставления учетных данных вызывающего абонента вашим веб-сервисам;не так уж сложно взять пройденный сертификат и провести любую дополнительную оценку, чтобы определить, на что этот сертификат имеет видимость.

Вы, вероятно, хотите использовать что-то вроде OAuth:

http://oauth.net/

Затем вы можете использовать его с WCF для предоставления конечной точки.

Оттуда вы хотели бы сопоставить утверждения с внутренним идентификатором для клиентов (вам нужно было бы определить, что это за сопоставление).

Таким образом, вам не нужно полагаться на выдачу чего-либо кому-либо, все, что вам нужно сделать, это создать сопоставление на основе отправленных вам утверждений.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top