У нас есть сайт, созданный в .NET 3.5 с мультиплексированным поставщиком членства/роли и связанный сайт PHP (на другом сервере), который использует одни и те же пользователи (или частично по крайней мере) и мы изучаем возможность использования единого входа, и мне интересно, работают ли другие, что-то вроде этого.Одиночный вход ASP.NET и PHP
Когда аутентификация сайта PHP завершена, он устанавливает переменную сеанса с идентификатором пользователя, а затем перенаправляет пользователя на стартовую страницу.
В будущем это означает, что пользователь всегда входит в систему на сайте ASP.NET, поэтому то, что я сделал, пытается аутентифицироваться на PHP-сайте одновременно с ASP.NET. Для того, чтобы иметь возможность использовать пароль пользователя я добавил логику по методу ValidateUser в MembershipProvider:
HttpWebRequest req = HttpWebRequest.Create(url) as HttpWebRequest;
string data = string.Format("username={0}&password={1}", MembershipHelper.UrlEncode(username), MembershipHelper.UrlEncode(password));
req.Method = WebRequestMethods.Http.Post;
req.ContentLength = data.Length;
req.ContentType = "application/x-www-form-urlencoded";
req.AllowAutoRedirect = false;
req.CookieContainer = new CookieContainer();
StreamWriter w = new StreamWriter(req.GetRequestStream());
w.Write(data);
w.Close();
Но, как вы понимаете, это не работает. Когда я посещаю php-сайт, я все еще не вошел в систему, что, конечно же, имеет какое-то отношение к сеансу, но я просто не могу понять, как правильно его перенести.
Мы также пытаемся сделать концепцию единого входа между .NET и PHP-сайтами. Как мы можем это сделать, можно ли использовать SAML, OPENID? Это бесплатно или нужно покупать? Это проблема безопасности? Предложите шаги внедрения и где я скачал его? – Thilak