Forms Authentication :(
От: k_2  
Дата: 20.09.04 08:09
Оценка:
Помогите пожалуйста разобраться с Forms Authentication:

Web.config
...cut...
<authentication mode="Forms">
   <forms loginUrl="logon.aspx" name="pidCookie" timeout="60" path="/" />
</authentication>
<authorization>
   <deny users="?"/>
   <allow users="*"/>
</authorization>
...cut...


Форма Logon.aspx:
asp:TextBox tbxUser
asp:TextBox tbxPassword
asp:Button Login

procedure TWebForm1.btnLogin_Click(sender: System.Object; e: System.EventArgs);
begin
 //cut user authentication 
 FormsAuthentication.RedirectFromLoginPage(tbxUser.Text, false);
end;



Форма Content.aspx:
asp:TextBox tbxUName
asp:Button LogOut

procedure TWebForm1.btnLogOut_Click(sender: System.Object; e: System.EventArgs);
begin
 FormsAuthentication.SignOut;
end;



Все работает на localhost и не работает в интранете
От каких настроек зависит? на IIS уже вроде все настройки перепробовала
Re: Forms Authentication :(
От: Gollum Россия  
Дата: 20.09.04 08:11
Оценка:
Здравствуйте, k_2, Вы писали:

k_2>Все работает на localhost и не работает в интранете


Что значит — не работает?
Ph'nglui mglw'nath Ctulhu R'lyeh wgah'nagl fhtagn
Eugene Agafonov on the .NET

Re[2]: Forms Authentication :(
От: k_2  
Дата: 20.09.04 08:19
Оценка:
Здравствуйте, Gollum, Вы писали:
G>Здравствуйте, k_2, Вы писали:
k_2>>Все работает на localhost и не работает в интранете
G>Что значит — не работает?

Это значит што на localhost при входе на страницу content.aspx пользователь перенаправляется на страницу logon.aspx вводит пароль и по кнопке btnLogin попадает на content.aspx. В интранете по btnLogin пользователь вновь оказывается на logon.aspx.
Re: Forms Authentication :(
От: Козьма Прутков Россия  
Дата: 20.09.04 08:19
Оценка:
Здравствуйте, k_2, Вы писали:

k_2>Все работает на localhost и не работает в интранете

k_2>От каких настроек зависит? на IIS уже вроде все настройки перепробовала

1) Что такое "все"? Так обычно пользователи говорят, когда после месяца эксплуатации они вдруг замечают, что что-то не так (например, список, которым они не пользовались, пуст), и начинают ругаться, что у них "опять все не работает". Выражайтесь яснее, коллега, не уподобляйтесь нашим бестолковым кормильцам Симптомы — в студию!

2) В IIS нужно дать возможность анонимного доступа к приложению. Кстати, приложение-то в каталоге создано? global.asax туда скопировано (а то без нее таакие чудеса бывают, мама не горюй)?
Да хранит вас господь в сухом прохладном месте...
Re[3]: Forms Authentication :(
От: Gollum Россия  
Дата: 20.09.04 08:23
Оценка:
Здравствуйте, k_2, Вы писали:

k_2>Это значит што на localhost при входе на страницу content.aspx пользователь перенаправляется на страницу logon.aspx вводит пароль и по кнопке btnLogin попадает на content.aspx. В интранете по btnLogin пользователь вновь оказывается на logon.aspx.


Где пользователи определены? Если в базе, то может быть используются разные базы, и на базе в интранете пользователь не заведен?
He's taking the preventive measures, It must have been too late
Eugene Agafonov on the .NET

Re[2]: Forms Authentication :(
От: k_2  
Дата: 20.09.04 08:23
Оценка:
Здравствуйте, Козьма Прутков, Вы писали:

КП>Здравствуйте, k_2, Вы писали:


k_2>>Все работает на localhost и не работает в интранете

k_2>>От каких настроек зависит? на IIS уже вроде все настройки перепробовала

КП>1) Что такое "все"? Так обычно пользователи говорят, когда после месяца эксплуатации они вдруг замечают, что что-то не так (например, список, которым они не пользовались, пуст), и начинают ругаться, что у них "опять все не работает". Выражайтесь яснее, коллега, не уподобляйтесь нашим бестолковым кормильцам Симптомы — в студию!


КП>2) В IIS нужно дать возможность анонимного доступа к приложению. Кстати, приложение-то в каталоге создано? global.asax туда скопировано (а то без нее таакие чудеса бывают, мама не горюй)?


Извеняюсь за туманность — я думала весь мир со мной вместе мучается и все и так понятно без слов Приложение разумеется создано global.asax в наличии. Симптомы в предыдущем посте, выражения вырезаны
Re[3]: Forms Authentication :(
От: Gollum Россия  
Дата: 20.09.04 08:26
Оценка:
Здравствуйте, k_2, Вы писали:

k_2>Извеняюсь за туманность — я думала весь мир со мной вместе мучается


Увы Формс работает вполне нормально Тут явно в консерватории надо править.
В инфракрасный прицел мы видны, как небесный ОМОН
Eugene Agafonov on the .NET

Re[4]: Forms Authentication :(
От: k_2  
Дата: 20.09.04 08:29
Оценка:
Здравствуйте, Gollum, Вы писали:

G>Здравствуйте, k_2, Вы писали:


k_2>>Это значит што на localhost при входе на страницу content.aspx пользователь перенаправляется на страницу logon.aspx вводит пароль и по кнопке btnLogin попадает на content.aspx. В интранете по btnLogin пользователь вновь оказывается на logon.aspx.


G>Где пользователи определены? Если в базе, то может быть используются разные базы, и на базе в интранете пользователь не заведен?


Дело как я понимаю не в базе данных (xml), возможно ввели в заблуждение комментарии //cut user authentication
На данный момент отключила проверку пользователя и просто пытаюсь отработать перенаправление между страницам content и logon.


procedure TWebForm1.btnLogin_Click(sender: System.Object; e: System.EventArgs);
begin
 FormsAuthentication.RedirectFromLoginPage(tbxUser.Text, false);
end;
Re[5]: Forms Authentication :(
От: Gollum Россия  
Дата: 20.09.04 08:33
Оценка:
Здравствуйте, k_2, Вы писали:

k_2>Дело как я понимаю не в базе данных (xml), возможно ввели в заблуждение комментарии //cut user authentication

k_2>На данный момент отключила проверку пользователя и просто пытаюсь отработать перенаправление между страницам content и logon.

Как можно перенаправить к странице content если доступ к ней анонимным пользователям запрещен в веб.конфиг как я понял, а аутентификации не происходит?
Это в голове у него перекос — параллакс...
Eugene Agafonov on the .NET

Re[4]: Forms Authentication :(
От: k_2  
Дата: 20.09.04 08:34
Оценка:
Здравствуйте, Gollum, Вы писали:

G>Здравствуйте, k_2, Вы писали:


k_2>>Извеняюсь за туманность — я думала весь мир со мной вместе мучается


G>Увы Формс работает вполне нормально Тут явно в консерватории надо править.


Увы мне увы наша консерватория только localhost работает Возможно поэтому мне и помощь понадобилась?
Re[5]: Forms Authentication :(
От: Gollum Россия  
Дата: 20.09.04 08:40
Оценка:
Здравствуйте, k_2, Вы писали:

k_2>Дело как я понимаю не в базе данных (xml), возможно ввели в заблуждение комментарии //cut user authentication

k_2>На данный момент отключила проверку пользователя и просто пытаюсь отработать перенаправление между страницам content и logon.

В общем, почитайте вот это:

How To: Use Forms Authentication with SQL Server 2000

заменяя обращения к базе данных на вашу специфику определения пользователей, все должно быть в порядке.
По всей Смоленщине нет кокаина — это временный кризис сырья
Eugene Agafonov on the .NET

Re: Forms Authentication :(
От: Dronkoff Россия  
Дата: 20.09.04 08:41
Оценка:
Здравствуйте, k_2, Вы писали:
k_2>Все работает на localhost и не работает в интранете
k_2>От каких настроек зависит? на IIS уже вроде все настройки перепробовала
От IIS практически не зависит.
Насколько я понял, то не работает не все, а именно процедура входа после выхода.
Проблема скорее всего в куках.
Попробуй в Global.asax в обработчике Application_AuthenticateRequest посмотреть на коллекцию Context.Request.Cookies.
Из чего она состоит?
На серваке, на котором все неработает стоит один экземпляр приложения?
Если нет, то надо чтоб у каждого экземпляра приложения название кук были разные. Можно еще попробовать ограничивать куки по пути. Например:
<authentication mode="Forms">
   <forms loginUrl="logon.aspx" name="pid_auth_1" timeout="60" path="/pid_app_1" />
</authentication>
Re[6]: Forms Authentication :(
От: k_2  
Дата: 20.09.04 08:53
Оценка:
Здравствуйте, Gollum, Вы писали:

G>Здравствуйте, k_2, Вы писали:


k_2>>Дело как я понимаю не в базе данных (xml), возможно ввели в заблуждение комментарии //cut user authentication

k_2>>На данный момент отключила проверку пользователя и просто пытаюсь отработать перенаправление между страницам content и logon.

G>Как можно перенаправить к странице content если доступ к ней анонимным пользователям запрещен в веб.конфиг как я понял, а аутентификации не происходит?


Я видимо не так понимаю штото. Опознание пользователя реализовала в простеньком классе

  TUsers = class
  private
    FUserFile: string;
  public
    constructor Create(path: string);
    function GetUserDetails(const UserName : string): TUsersDetails;
    function Login(const UserName, Password : String): boolean;
  end;

метод Login читает хмл и ищет пользователя с именем и паролем, результат проверяется

procedure TWebForm1.btnLogin_Click(sender: System.Object; e: System.EventArgs);
var
 u: TUsers; 
begin
 u := TUsers.Create(Server.MapPath('./bd_xml/UsersDB.xml'));
 try
  if u.Login(tbxUser.Text, tbxPassword.Text) then 
    FormsAuthentication.RedirectFromLoginPage(tbxUser.Text, false)
  else 
    msg.text := 'Што то грозное' //msg - asp:label на login
 finally
  u.free
 end; 
end;


при правильном вводе пользователя и в localhost и в интранете при трассировке однозначно попадаю на строчку FormsAuthentication.RedirectFromLoginPage
(tbxUser.Text, false) а вот результат выполнения этой процедуры разный. Ну и наверное если аутенфикации не происходит в интранете то не должно происходить и на localhost? Подскажите тогда какие настройки надо поменять штобы и для localhost пееренаправление на content не проиходило?(шутка)
Re[7]: Forms Authentication :(
От: Gollum Россия  
Дата: 20.09.04 09:08
Оценка:
Здравствуйте, k_2, Вы писали:

k_2>(tbxUser.Text, false) а вот результат выполнения этой процедуры разный. Ну и наверное если аутенфикации не происходит в интранете то не должно происходить и на localhost?


Не факт. Попробуйте почистить куки, потом попытаться сразу на интранет залогиниться.
В мире что-то не так? Или это у меня в голове?
Eugene Agafonov on the .NET

Re[2]: Forms Authentication :(
От: k_2  
Дата: 20.09.04 09:08
Оценка:
Здравствуйте, Dronkoff, Вы писали:

D>Здравствуйте, k_2, Вы писали:

k_2>>Все работает на localhost и не работает в интранете
k_2>>От каких настроек зависит? на IIS уже вроде все настройки перепробовала
D>От IIS практически не зависит.
D>Насколько я понял, то не работает не все, а именно процедура входа после выхода.
D>Проблема скорее всего в куках.
D>Попробуй в Global.asax в обработчике Application_AuthenticateRequest посмотреть на коллекцию Context.Request.Cookies.
D>Из чего она состоит?
D>На серваке, на котором все неработает стоит один экземпляр приложения?
D>Если нет, то надо чтоб у каждого экземпляра приложения название кук были разные. Можно еще попробовать ограничивать куки по пути. Например:
D>
D><authentication mode="Forms">
D>   <forms loginUrl="logon.aspx" name="pid_auth_1" timeout="60" path="/pid_app_1" />
D></authentication>
D>


спасибо я сейчас все попробую
сервак пока состоит из моей машины, экземпляр один, с куками немного поигралась
var
  hc: HttpCookie;
  ts: TimeSpan;
begin
hc := FormsAuthentication.GetAuthCookie(tbxUser.Text, false);
ts := TimeSpan.Create(1,0,0,0);
hc.Expires := DateTime.Now.Add(ts);
Response.Cookies.Add(hc);...

безрезультатно

ещё выводила в label
FormsAuthentication.GetRedirectUrl(tbxUser.Text, false) — одинаковое значение в обоих случаях

И ещё маленькое уточнение "то не работает не все, а именно процедура входа после выхода."
не работает именно с первого входа а не после выхода
Re[3]: Forms Authentication :(
От: k_2  
Дата: 20.09.04 09:17
Оценка:
в соседней ветке по тому же поводу страдают http://www.rsdn.ru/Forum/Message.aspx?mid=815524
Автор: Cherub
Дата: 20.09.04
Re[3]: Forms Authentication :(
От: Dronkoff Россия  
Дата: 20.09.04 09:26
Оценка:
Здравствуйте, k_2, Вы писали:
D>>Здравствуйте, k_2, Вы писали:
D>>Проблема скорее всего в куках.
D>>Попробуй в Global.asax в обработчике Application_AuthenticateRequest посмотреть на коллекцию Context.Request.Cookies.
D>>Из чего она состоит?
k_2>спасибо я сейчас все попробую

Так это, что находится в Context.Request.Cookies, если бряку поставить в Application_AuthenticateRequest?
k_2>ещё выводила в label
k_2>FormsAuthentication.GetRedirectUrl(tbxUser.Text, false) — одинаковое значение в обоих случаях
Какое?
k_2>И ещё маленькое уточнение "то не работает не все, а именно процедура входа после выхода."
k_2>не работает именно с первого входа а не после выхода
Упс. А когда работет?
Смотри, сама формс аутентификация работает так:
В методе RedirectFromLoginPage происходит не просто редирект, а браузеру отдается кука, содержащая защифрованный ticket FormsAuthentication модуля. А потом происходит сам редирект. После редиректа, при запросе страницы content в событии Application_AuthenticateRequest просиходит дешифровка ticket куки и создание из него класса FormsAuthenticationTicket, затем создается IPrincipal и добавляется к контексту. Если все прошло успешно, то считается что пользователь, обращающийся к ресурсу аутентифицирован, если нет, то он перенаправляется обратно на login page.
90% что проблема с куками. Посмотри какие куки в браузере. какие приходят на сервер и в каком порядке.
У меня один раз ошибочка была связана с тем, что было две одноименных куки — одна пуская, одна с ticket. В коллекции пустая кука всегда была раньше куки с ticket и аутентификация просто не работала, так как не проходила дешифрация ticket.
Попробуй еще удалить все куки из браузера и попробовать заново.
Re[2]: Forms Authentication :(
От: k_2  
Дата: 20.09.04 09:29
Оценка:
в Context.Request.Cookies коллекция пустая как я понимаю она дожна была очиститься лишь по завершении приложения?
бэгиннер в недоумении
Re[4]: Forms Authentication :(
От: k_2  
Дата: 20.09.04 09:34
Оценка:
Context.Request.Cookies.Count = 0

k_2>>FormsAuthentication.GetRedirectUrl(tbxUser.Text, false) — одинаковое значение в обоих случаях

D>Какое?
/dwork/content.aspx dwork-название виртуального каталога

спасибо за помощь, будем искать
Re[3]: Forms Authentication :(
От: Dronkoff Россия  
Дата: 20.09.04 09:36
Оценка:
Здравствуйте, k_2, Вы писали:
k_2>в Context.Request.Cookies коллекция пустая как я понимаю она дожна была очиститься лишь по завершении приложения?
k_2>бэгиннер в недоумении
Я ж говорил! Там как минимум должна быть кука "pidCookie". login page все прекрасно делает, а вот при следующем запросе происходит бяка.
Может какие-то настройки браузера?
Может у тебя кука слишком больших размеров получается?
Посмотри, какие куки туда-суда ходят.
Есть такая полезная тулза, ieHttpHeaders называется.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.