Лучший способ для удаленного веб-приложения для аутентификации пользователей в моем текущем веб-приложении? - PullRequest
4 голосов
/ 26 марта 2010

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

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

У меня было два предложения о том, как реализовать это:

  1. Создайте URL-адрес, который принимает 2 параметра («имя пользователя» и «пароль»), и чтобы сайт интрасети передавал эти параметры нам (наше соединение через SSL / TLS, поэтому оно все зашифровано). Это бы хорошо работало, но кажется немного «хакерским», а также означает, что логины и пароли должны быть одинаковыми в обеих системах (и при этом необходимо написать какой-то веб-сервис, который может обновлять пароли для пользователей - что также кажется немного небезопасным)
  2. Предоставьте токен в интрасеть, поэтому, когда клиент нажимает на ссылку в интрасети, он отправляет нам токен вместе с именем пользователя (и без пароля), что означает, что они аутентифицированы. Опять же, это звучит немного странно, ведь по сути это не то же самое, что предоставление всем одинакового пароля для входа?

Итак, подведем итог, я после следующих вещей:

  1. Способ для пользователей, которые уже прошли проверку подлинности в интрасети, войти в нашу систему без особых проблем и без использования внешней системы для проверки подлинности, т. Е. LDAP / Kerberos
  2. То, что не слишком специфично для этого клиента и может быть легко внедрено другими интрасетями для входа в систему

Ответы [ 2 ]

2 голосов
/ 26 марта 2010

Оба предложенных вами варианта небезопасны, даже если вы используете SSL. Никогда не передавайте учетные данные в URL, поместите их в HTTP-запрос с помощью POST.

Существует стандарт под названием SAML , который можно использовать для решения вашей проблемы. Задача заключается в выборе версии для реализации. Я бы выбрал SAML 2.0 .

Google Apps реализует разновидность SAML 2.0 и позволяет выполнять аутентификацию с использованием учетных данных интрасети. В случае вашего заявления вы будете поставщиком услуг, а ваш клиент - поставщиком удостоверений. Если вы правильно реализуете стандарт, вы сможете поддерживать любого нового клиента (провайдера идентификации). Вот список реализаций SAML, на которые вы, возможно, захотите взглянуть. Если вам требуется, чтобы клиент передавал информацию в дополнение к информации для аутентификации, SAML может облегчить это с помощью метаданных.

Вам все еще нужно будет внедрить SSL для шифрования сетевого трафика.

0 голосов
/ 06 марта 2012

Я ненавижу отвечать на свой вопрос, но я ненавижу еще вопрос без ответа. В конце мы пошли с очень похожей реализацией реализации SSO с делегированной аутентификацией SalesForce.

http://wiki.developerforce.com/page/How_to_Implement_Single_Sign-On_with_Force.com

По сути, решение имеет доверенный сайт, известный как делегированные полномочия аутентификации, у которого есть список пользователей, которые вошли в интрасеть компании.

Когда пользователь входит в интрасеть компании и щелкает ссылку на наше приложение, интранет компании передает имя пользователя и сгенерированный токен (срок действия которого истекает через определенное время) в наше приложение.

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

Мы обнаружили, что эта система работает достаточно хорошо, и даже реализовали несколько дополнительных функций безопасности, таких как SSL, сертификаты на стороне клиента, VPN-туннель и даже ограничение IP-адресов, которые могут получить доступ к сайту и делегированных полномочий аутентификации.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...