Совместное использование аутентификации между двумя веб-приложениями - PullRequest
31 голосов
/ 27 октября 2010

У меня есть базовый веб-сайт ( Asp.net WebForms приложение), работающий под ie.

http://localhost:90/

Затем я создал новое (на этот раз Asp.net MVC ) приложение и добавил его в

http://localhost:90/mvc/

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

Поскольку браузеры не могут знать, что в одном и том же домене есть два разных приложения, оно будет работать следующим образом:

  1. доступ пользователей http://localhost:90/
  2. родительское приложение перенаправляет пользователя на экран проверки подлинности форм
  3. пользователь успешно авторизуется
  4. родительский веб добавляет cookie для аутентификации
  5. доступ пользователей http://localhost:90/mvc
  6. браузер присоединяет тот же файл cookie от родительского приложения

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

Я читал кое-что об использовании одних и тех же значений system.web/machineKey, чтобы обеспечить такую ​​функциональность, но я хотел бы привести примеры из реальной жизни.

Мне известно, что эти два приложения не смогут совместно использовать состояние сеанса, и это не проблема, потому что я не хочу, чтобы они это делали. Все, что я хочу, это своего рода единый вход (SSO / SSS)

Возможно ли это? Как?

Важно

Я читал другие вопросы / ответы по этому поводу, но они либо спрашивают о междоменном / межсерверном и т. Д. Этот вопрос находится на том же веб-сайте IIS.

Ответы [ 2 ]

37 голосов
/ 27 октября 2010

Я нашел это сам.

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

MSDN: проверка подлинности с помощью форм в приложениях

Вкратце

Вам необходимо настроить машинные ключи в web.config обоих приложений, чтобы они соответствовали, следовательно, они смогут декодировать данные, сгенерированные другой стороной.И это весь трюк.В статье MSDN это подробно объясняется, в том числе о том, как генерировать эти ключи.

7 голосов
/ 20 февраля 2014

Если кто-то еще не может поделиться ключами, используйте compatibilityMode="Framework20SP1"

<machineKey validationKey="same key all over" 
            decryptionKey="same key all over" 
            validation="SHA1" decryption="AES"
            compatibilityMode="Framework20SP1"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...