2010-05-09 4 views
8

Мы пытаемся создать решение для однодоменного междоменного доступа с использованием ASP.NET MVC.Single-Sign-On ASP.NET MVC

Доступны ли существующие решения или учебные пособия?

+1

Могут ли серверы разговаривать друг с другом или в этом отношении к одной и той же БД Если поэтому решение довольно просто –

+0

эй -.. Да www.example.com - это единый веб-сайт с БД. БД распространена во всех входах, поэтому его в основном просто «удаленный» сайт должен аутентифицироваться с помощью www.example.com и т. д. – Mike

ответ

10

Если вы веб-приложения на одном сервере и же домена то все, что вам нужно сделать, это убедиться, что Validationkey и ключ шифрования являются одинаковыми в веб-конфигурации (MachineKey).

В вашем примере вам нужно будет приложить билет проверки подлинности в строке запроса, чтобы транспортировать его обратно в другой домен, например:

public void Login(string userName, string password) 
{ 
    if(AuthenticateUser(userName,password)) 
    { 
     Response.Redirect(String.format("{0}?{1}={2}"), 
      Request.QueryString["ReturnUrl"], 
      FormsAuthentication.FormsCookieName, 
      FormsAuthentication.GetAuthCookie(userName, false).Value)); 
    } 
} 

На местном применении необходимо включить аутентификацию Cookieless формы , и разрешить аутентифицированным пользователям поступать из внешних приложений, установив enableCrossAppRedirect.

<authentication mode="Forms"> 
    <forms enableCrossAppRedirect="true" cookieless="useUri" /> 
</authentication> 

Примечания:

  1. Смотрите также FormsAuthentication.RedirectFromLoginPage - http://msdn.microsoft.com/en-us/library/ka5ffkce.aspx.

  2. В моем случае ReturnUrl потерял доменную часть URL :(

Смежные вопросы