Есть ли способ передать сеанс проверки подлинности Windows между моими приложениями ASP.Net MVC 5?

У меня есть несколько приложений на основе ASP.NET MVC 5, работающих на одном сервере IIS с разными веб-пулами.

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

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

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

Как мне создать брокера проверки подлинности, который будет передавать и управлять моим фактическим сеансом проверки подлинности Windows для всех моих приложений?


person Jaylen    schedule 02.11.2017    source источник


Ответы (1)


Конечно, вы можете поделиться состоянием сеанса. Это потребует от вас настройки постоянного общего средства для распределения сеанса между вашими процессами (например, см. здесь, как это сделать с Redis: https://www.codeproject.com/Articles/1040453/ASP-NET-Session-State-Management-with-Redis-Local< /а>)

Возможность совместного использования аутентификации зависит от того, используете ли вы NTLM или обычную аутентификацию. Я не уверен, можно ли этого добиться с помощью NTLM. Я вполне уверен, что это НЕ может быть достигнуто с помощью Kerberos, поскольку билет будет выдан пользователю + процессу (хотя вам может повезти запустить все пулы приложений от одного и того же пользователя...)

Кроме того, если приложение доступно в Интернете (в отличие от интрасети), я бы не рекомендовал использовать ни один из параметров аутентификации Windows, а вместо этого выбрать замену аутентификации Windows на файл cookie или аутентификации Windows на токен (она не не обязательно делать это как описанный вами STS/брокер, вы также можете запустить 3 отдельные страницы входа, если выданный файл cookie/токен распознается всеми 3 приложениями; конечно, это звучит как странный подход, но причины это может включать, среди прочего, необходимость по-разному маркировать страницы входа в разное время или в устаревших кодовых базах).

person zaitsman    schedule 02.11.2017