Web Server Application
Пишется БД, для просмотра решил использовать Web Server Application - CGI. Прикинул, юзеры будут просматривать ее через браузер(IE). Удобно, не нужно им ставить клиентскую часть. Все вроде ничего, но тут же возник естественный вопрос: - доступ. Как организовать доступ к БД по имени и паролю? Чтоб человек при заходе мог авторизоваться введя в нек. форме имя и пароль и далее беспрепятственно работал с БД пока не закроет браузер. Что имеем WinXP, IIS 5.1, BCB5, IB 6.0. Если не понятно объяснил - извиняюсь, занимаюсь этим 2-й день, уточняйте, объясню.
Привет!
Пишется БД, для просмотра решил использовать Web Server Application - CGI. Прикинул, юзеры будут просматривать ее через браузер(IE). Удобно, не нужно им ставить клиентскую часть. Все вроде ничего, но тут же возник естественный вопрос: - доступ. Как организовать доступ к БД по имени и паролю? Чтоб человек при заходе мог авторизоваться введя в нек. форме имя и пароль и далее беспрепятственно работал с БД пока не закроет браузер. Что имеем WinXP, IIS 5.1, BCB5, IB 6.0. Если не понятно объяснил - извиняюсь, занимаюсь этим 2-й день, уточняйте, объясню.
Завести юзера, назначить права, при вводе данных - формировать строку подключения(параметры подключения) используя данные из формы заполненой им. Правда не приходилось использовать это в Web Server Application - CGI - но если идеология там такая же как и в СОМ-сервере билдера то мне приходилось реализовывать отдельно функцию авторизации в которой все и выполнял.
Завести юзера, назначить права, при вводе данных - формировать строку подключения(параметры подключения) используя данные из формы заполненой им. Правда не приходилось использовать это в Web Server Application - CGI - но если идеология там такая же как и в СОМ-сервере билдера то мне приходилось реализовывать отдельно функцию авторизации в которой все и выполнял.
Про "завести юзера" можно по подробнее, где в XP или IIS? Пробую так:
TObject *Sender, TWebRequest *Request, TWebResponse *Response,
bool &Handled)
{
if (UserIsAuthorized())
{
Response->StatusCode = 200;
Response->Content = "Ok";
}
else
{
Response->StatusCode = 401;
Response->WWWAuthenticate = AuthenticationString;
Response->Content = "<H1>False</H1>";
}
}
//---------------------------------------------------------------------------
bool __fastcall TWebModule1::UserIsAuthorized()
{
//TODO: Add your source code here
String UserName, Password;
DecodeUserNameAndPassword(Request->Authorization, UserName, Password);
if ((UserName == "gizmo") && (Password == "111"))
return true;
else
return false;
}
//---------------------------------------------------------------------------
void __fastcall TWebModule1::DecodeUserNameAndPassword(String EncodedString, String &UserName, String &Password)
{
//TODO: Add your source code here
String DecodedString;
EncodedString = EncodedString.SubString(7, EncodedString.Length());
EncodedString = EncodedString.SubString(1, EncodedString.Pos("=") -1);
DecodedString = MimeDecodeString(EncodedString);
UserName = DecodedString.SubString(1, DecodedString.Pos(":") -1);
DecodedString.Delete(1, DecodedString.Pos(":"));
Password = DecodedString;
}
Вызывается окно для ввода имени и пароля (стандартное). Ввожу имя и пароль, а он сука пишет: - У вас отсутствуют разрешения на просмотр этой страницы. Указанные вами учетные сведения не позволяют просматривать данный каталог или страницу.
Где и как завести пользователя ума не приложу...
Про "завести юзера" можно по подробнее, где в XP или IIS? Пробую так:
...
Вызывается окно для ввода имени и пароля (стандартное). Ввожу имя и пароль, а он сука пишет: - У вас отсутствуют разрешения на просмотр этой страницы. Указанные вами учетные сведения не позволяют просматривать данный каталог или страницу.
Где и как завести пользователя ума не приложу...
Я заводил пользователя в базе - а данные логина и пасса просто подставлял в строку коннекта. Но еще раз подчеркну - в билдере мне подобным заниматься не приходилось. Просто по аналогии с РДМ я могу передположить что проблема схожая - прежде чем я смог подконектится мне пришлось дать разрешение на доступ (и выполнение) к СОМ-объектам определенной группе юзеров.
При разработке я например столкнулся с тем что был необходим доступ на папку для процесса ASP - пока я с этим не разобрался тоже получал акцесс денайд - возможно проблема таже - кроме этого необходимы разрешения для сети.
Т.е. я бы сделал так:
1. Проверил разрешения на доступ по сети для нужной группы (или "Все")
2. Для процесса ASP - дал разрешения на чтение, выполнение и т.п(возможно в твоем случае это будет твой компонент - просто я использовал ASP).
Я заводил пользователя в базе - а данные логина и пасса просто подставлял в строку коннекта. Но еще раз подчеркну - в билдере мне подобным заниматься не приходилось. Просто по аналогии с РДМ я могу передположить что проблема схожая - прежде чем я смог подконектится мне пришлось дать разрешение на доступ (и выполнение) к СОМ-объектам определенной группе юзеров.
При разработке я например столкнулся с тем что был необходим доступ на папку для процесса ASP - пока я с этим не разобрался тоже получал акцесс денайд - возможно проблема таже - кроме этого необходимы разрешения для сети.
Т.е. я бы сделал так:
1. Проверил разрешения на доступ по сети для нужной группы (или "Все")
2. Для процесса ASP - дал разрешения на чтение, выполнение и т.п(возможно в твоем случае это будет твой компонент - просто я использовал ASP).
Вот и я подозреваю, что какая-то хрень с настройками IIS и/или Винды. К сожалению "настройщик" из меня такой же как и программист:(
Есть другая идейка - с куками: если браузер прислал в хедере имя и пароль, то вперед, если нет, то на страницу с запросом имени и пароля. Если имя и пароль верные, устанавливаем куки и работаем.
Вот и я подозреваю, что какая-то хрень с настройками IIS и/или Винды. К сожалению "настройщик" из меня такой же как и программист:(
Есть другая идейка - с куками: если браузер прислал в хедере имя и пароль, то вперед, если нет, то на страницу с запросом имени и пароля. Если имя и пароль верные, устанавливаем куки и работаем.
Ну идея в целом верна - правда не понятно как ты будешь проверять правильность логина и пароля - ведь как я понял у тебя не дает доступа к ресурсам сервера?
Ну идея в целом верна - правда не понятно как ты будешь проверять правильность логина и пароля - ведь как я понял у тебя не дает доступа к ресурсам сервера?
Не, не так понял. Если я создаю вирт. каталог на IIS кидаю туда свой скрипт, то все работает. Не получается заставить IIS использовать Basic Authentication для авторизации.
Не, не так понял. Если я создаю вирт. каталог на IIS кидаю туда свой скрипт, то все работает. Не получается заставить IIS использовать Basic Authentication для авторизации.
А методы проверки подлинности установлены? У меня были бока когда я не добавил в пермишины ASP.NET Machine Account - для билдера наверное тоже должна быть какая либо служба. Кроме того - анонимный пользователь? Попробуй отключи анонимную авторизацию - может это то, что ты ищешь?