У вас есть два веб-приложения ASP.NET, и одно приложение выполняет только аутентификацию пользователя?
это звучит как работа для ....
Веб-сервисы!
Создайте новый веб-сервис в приложении аутентификации (это расширение .asmx), добавьте единственный метод, который принимает имя пользователя и пароль и т. Д., И возвращает информацию аутентификации.
Затем импортируйте WSDL в ваше второе приложение и вызовите первое приложение, как будто это был метод. Это упростит ваш код и решит вашу проблему.
Пример:
AuthenticateUserService.asmx запускается приложением аутентификации:
using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class AuthenticateUserService : System.Web.Services.WebService
{
[WebMethod]
public bool AuthenticateUser(string username, string passhash)
{
// Fake authentication for the example
return (username == "jon" && passhash == "SomeHashedValueOfFoobar");
}
}
После настройки запустите главное приложение, щелкните правой кнопкой мыши проект и нажмите «Добавить веб-ссылку».
Введите URL-адрес asmx в приложении аутентификации, и Visual Studio обнаружит его и создаст прокси-класс.
Как только это будет сделано, мы можем вызвать этот метод, как если бы он был локальным методом в нашем основном приложении:
protected void Page_Load(object sender, EventArgs e)
{
// Now we can easily authenticate user in our code
AuthenticateUserService authenticationProxy =
new AuthenticateUserService();
bool isUserAuthenticated =
authenticationProxy.AuthenticateUser("jon", SomeHashMethod("foobar"));
}
Итак, что это действительно делает?
Исключает клиента из процесса аутентификации.
Ваш текущий процесс:
- Клиент вводит учетные данные для AppA
- AppA перенаправляет клиента в AppB
- AppB перенаправляет клиента обратно в AppA, если учетные данные совпадают.
Заменяется на SOAP-вызов на стороне сервера между AppA и AppB. Теперь это так:
- Клиент вводит учетные данные в AppA
- AppA спрашивает AppB, хороши ли они
- AppA предоставляет клиенту правильный контент.