У меня около 100 сайтов, закодированных в ASP classic. Каждый веб-сайт принимает заказы и сохраняет их в базе данных. Однако оплата этих заказов должна производиться на другом веб-сайте, также закодированном в ASP classic. Все веб-сайты принадлежат одной и той же компании, размещенные на одном сервере IIS и использующие одну и ту же базу данных SQL Server.
Теперь пользователь регистрируется, введя некоторую личную информацию и регистрируется на одном из этих веб-сайтов (например, website-for-newjersey.com) и размещает заказ. Затем он перенаправляется на веб-сайт платежей (payments.master-website.com на https), где в платежной форме отображаются некоторые его личные данные (адрес, город, штат для доставки, имя для владельцев кредитных карт и т. Д.). Информация о кредитной карте вводится на этой странице.
Из-за чувствительности информации, указанной на этой странице, пользователь должен зайти на сайт оплаты, прежде чем он сможет просмотреть предварительно заполненную форму оплаты. И я не хочу, чтобы пользователь дважды входил в систему (один раз на каждом веб-сайте). Есть ли надежный способ проверить, зарегистрирован ли пользователь на ссылающемся веб-сайте, используя классический ASP.
Короче
На вызывающем сайте вы можете создать руководство или другое произвольно генерируемое значение. Храните его в записи пользователей (истекает в указанный период времени) в базе данных, зашифровывайте его и передавайте через SSL на сайт оплаты, где он дешифрован, а затем сравнивается с базой данных. Если они совпадают, то пользователь вошел в систему, если он не соответствует, то их просят войти в систему.
Другой способ, хотя я не уверен, что это можно сделать с разными именами доменов, это использование сеансов. Поскольку все они находятся на одной машине, это может быть возможно, но я не уверен в этом на 100%.
То, что вы просили, называется single sign on (SSO) и может быть реализовано несколькими способами. Есть много тем по этому вопросу, например: Каков ваш любимый подход к совместному использованию cookie для перекрестных доменов? но все они зависят от индивидуальных требований.
В вашем случае у вас разные домены (так что вы не можете делиться куками по ним), вы смешиваете http и https (что может быть проблемой), и у вас много приложений, поэтому вы не будете делать много изменений.
Поэтому я бы рекомендовал рассмотреть предложение Роберта:
Если вы не можете изменить ссылку на сайт оплаты, вы можете попытаться пропустить шаг 2 и проверить пользователя по своему ip, но это может быть слишком рискованным.
Аутентификация на основе сквозного порта – это централизованная служба проверки подлинности, предоставляемая Microsoft, которая предлагает единые службы входа и основного профиля для сайтов-членов. Для получения дополнительной информации см. Следующий веб-узел корпорации Майкрософт:
Провайдер проверки подлинности паспорта
Если вы не можете внедрить единый вход на уровне вашей инфраструктуры, вам следует использовать Identity Federation, которая позволяет приложениям другой доверенной стороны обмениваться аутентификацией через претензии.
Это можно сделать с помощью языка разметки безопасности (SAML) напрямую или с помощью продуктов / стандартов, таких как:
Также вы можете взглянуть на OAuth или OpenID, которые являются более доступными схемами аутентификации, чем SSO или федерация удостоверений.