![]() |
|
Модераторы: gambit |
![]()
|
|
| NikeDeForest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 15.9.2007 Репутация: нет Всего: 2 |
Я сначала опишу, чтобы мне хотелось получить, а потмо надеюсь вы подскажете, что мне больше подходит.
Есть методы службы, мне бы хотелось ограничить круг лиц, которые могли бы из вызывать. Например какие-то методы могут вызывать только зарегестрированные пользователи, каике-то только администраторы. ПРи этом информация о пользователях хранится в БД MySQL. Вот вопрос, что посоветуете использовать. Создавать что-то свое или использовать то, что уже есть в .NET и IIS. Я копался в МСДН по вопросам аутентификации и авторизации, но не совсем уверен, что правильно усвоил информацию и остались вопросы. Вот как мне кажется, мне необходимо использовать авторизацию на основе ролей. Для этого мне необходжимо создать класс производный от RoleProvider (не проблема, считайте, что уже есть ), в файле web-config расскоментировать <roleService enabled="true"/>, также необходимо создать еще один файл svc (не совсем понял какое имя ему дать, или можно любое). В файле писать <%@ ServiceHost Language="C#" Service="System.Web.ApplicationServices.RoleService" Factory="System.Web.ApplicationServices.ApplicationServicesHostFactory" %> Далее надо создать обработчик событий SelectingProvider и в нем указать свой класс -поставщика ролей. Вот что дальше делать еще не совсем разобрался. Но во-первых, мне хотеолось бы узнать в верном ли направлении копаю — это раз. И два, а не нужно ли мне еще реализовывать своего поставщика членства MembershipProvider. А то я как-то упустил по началу это, а теперь мне кажется, что без этого не обойтись. Короче, я жду вашего пинка --------------------
Еще один вопрос ... |
|||
|
||||
| NikeDeForest |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 15.9.2007 Репутация: нет Всего: 2 |
Вопрос по аутентификации.
Создал свой класс - наследний MembershipProvider. Класс определен в той же сборке, что и служба. Запуск службы происходит с использованием Visual Studio Development Server. В Web.config написал следующее (вроде как в МСДНн):
в behavior службы добавил
(из-за последнего добавления и ошибка собственно) При запуске службы ошибка типа Имя пользователя/пароль, указанные поставщиком Membership CP.Proj.Service.ServiceMemberShipProvider в конфигурации, недействительны. Такой поставщик не зарегистрирован в system.web/membership/providers. ServiceMemberShipProvider - навзаниt класса CP.Proj.Service.ServiceMemberShipProvider - пространство имен и класс Ошибся где-то или что-то не сделал Это сообщение отредактировал(а) NikeDeForest - 16.10.2009, 09:44 --------------------
Еще один вопрос ... |
||||
|
|||||
| NikeDeForest |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 15.9.2007 Репутация: нет Всего: 2 |
Попрбовал так
ошибка пропала, но фугнкция public override bool ValidateUser(string username, string password) { return false; //if (username == "Ivan" && password == "1") // return true; //return false; } Судя по коду, доступ будет запрещен всегда, но пока все наоборот. Судя по всему функция не вызывается. --------------------
Еще один вопрос ... |
||||
|
|||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 6 Всего: 49 |
NikeDeForest, добавь еще что-то вроде
в биндинге для сервиса. или нагугли готовый пример. |
|||
|
||||
| NikeDeForest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 15.9.2007 Репутация: нет Всего: 2 |
Попробую биндинг.
Гуглю, но везде попадаю на AspNetSqlProvider. Буду еще гуглить. Спасибо. --------------------
Еще один вопрос ... |
|||
|
||||
| NikeDeForest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 15.9.2007 Репутация: нет Всего: 2 |
Сделал, как ты сказал. Получил ошибку
Для обеспечения безопасности сообщений привязка BasicHttp требует эквивалентности BasicHttpBinding.Security.Message.ClientCredentialType и типа учетных данных BasicHttpMessageCredentialType.Certificate. Выберите уровень защиты Transport или TransportWithMessageCredential для учетных данных UserName. Я не хотел бы пока использовать защиту на транспортном уровне. У меня нет выбора? --------------------
Еще один вопрос ... |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 6 Всего: 49 |
NikeDeForest, да, разработчики WCF перестраховались.
Кака вариант, если сервис хостится в IIS, можно использовать forms authentication напрямую. http://blogs.msdn.com/brada/archive/2008/0...ilverlight.aspx http://msdn.microsoft.com/en-us/library/bb515342.aspx http://msdn.microsoft.com/en-us/library/bb398990.aspx Для не-silverlight нужно будет дополнитиельно включать BasicHttpBinding.AllowCookies со стороны клиента. |
|||
|
||||
| NikeDeForest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 15.9.2007 Репутация: нет Всего: 2 |
Вот что пока получается.
Есть свой MembershipProvider. Реализовал только функцию ValidateUser, где тупо возвращаю true. Запускал с тиспользованием ASP. NET Development сервер. Постоянно получал ошибку Имя пользователя/пароль, указанные поставщиком Membership MyMemberShipProvider (MyMemberShip.MyMemberShipProvider, MyMemberShip, Version=1.0.0.0) в конфигурации, недействительны. Такой поставщик не зарегистрирован в system.web/membership/providers. Потратил два дня, потом решил кинуть службу на ИИС сервер на виртуальной машине. Там у меня сразу в настройках мой membershipProvider показался и служба запустилась. Радости не было предела. Но при запуске выскаивает табличка авторизации. Ввожу от балды что хочу, но меня система авторизации отфутболивает. У меня два вопроса. Первый (менее важен). Как запустит свою службу из под ASP.NET Development server со своим MembershipProvider Второй (очень важен). Видимо при авторизации работае все таки не мой мембершип, а что-то еще. Что может быть и как это исправить. В настройках службы (при помощи ИИС) я в "Проверка подлинности" отключил все проверки кроме "Обычная проверка подлинности". Что надо еще сделать? ПРикладываю текст конфига и сам проект. Все таки надеюсь на помощь, уже слишком долго я вожусь с аутентификацией :( Вот конфиг
Присоединённый файл ( Кол-во скачиваний: 4 )
TempService.zip 80,61 Kb--------------------
Еще один вопрос ... |
|||
|
||||
| NikeDeForest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 15.9.2007 Репутация: нет Всего: 2 |
Понял какой пароль требовался, это пароль админа ОС. ТОлько на ИИС, все равно осталась ошибка
Теперь тыркаюсь с ощибкой Сертификат службы не предоставлен. Укажите сертификат службы в ServiceCredentials. Это сообщение отредактировал(а) NikeDeForest - 19.10.2009, 09:51 --------------------
Еще один вопрос ... |
|||
|
||||
| NikeDeForest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 15.9.2007 Репутация: нет Всего: 2 |
Блин, получилось. На уровне сообщений UserName, на уровне транспорта Basic и используется SSL.
Осталось решать три проблемы. 1. К службе можно обратиться как по http, так и по https. Как сделать так, чтобы толко по https? 2. Когда делаю ссылку клиента на службу, то в адресе к endpoint указывается имя сервера, а не его ip-адрес. Хотелось бы, чтобы был именно ip. Пока приходитися править руками после каждого обновления подключения 3.не знаю как сделать привязку узла в конфиге. Т.е. я сделал ее на ИИС-сервере, там добавил https и сертфиикат. Но мне бы это привязку указать в конфиге, чтобы можно было использовать ASP.Net DEvelopment Server. Кстати в видео-ролике на techdays в 1 части у сотрудницы Майкрософт при наборе адреса службы в строке адреса браузера выскакивала ошибка досутпа,е сли они набирала http. Если же она набирала https, то открывалась страничка службы, где появлялась ссылка на xml текс службы. Эта ссылка была через https. У меня же во всех случаях ссылка через http. Имеет ли это значение и если да, то хотелось бы это исправить на всякий случай прикладываю проект Это сообщение отредактировал(а) NikeDeForest - 19.10.2009, 13:36 Присоединённый файл ( Кол-во скачиваний: 24 )
TempService.zip 84,23 Kb--------------------
Еще один вопрос ... |
|||
|
||||
| NikeDeForest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 15.9.2007 Репутация: нет Всего: 2 |
С первым вопросом вроде бвы разобрался. В ИИС это делается в настроках "Параметры SSL". При этом в конеяной точке метаданных, надо запретить также httpGetUrl и разрешить httpsGetUrl.
Это сообщение отредактировал(а) NikeDeForest - 19.10.2009, 15:26 --------------------
Еще один вопрос ... |
|||
|
||||
| NikeDeForest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 15.9.2007 Репутация: нет Всего: 2 |
Думаю тему можно закрывать. Худо бедно с аутентификацией разобрался, по крайней мере один из способов смог реализовать, посмотрел на другие виды. Вроде кашу в голове разгреб. С авторизацией по идеи проблем не должно быть, по крайней мере с авторизацией с помощью ролей. За другие виды не берусь сказать.
Пока аутентификацию/авторизацию отложу. Опять возьмусь за нее, когда уже служба будет готова, буду прикручивать на готовую. Если какие вопросы будут, буду задавать уже в отдельных темах. Благодарю PashaPash, ты единственный кто откликнулся на этом форуме.и помогал мне и на другом форуме --------------------
Еще один вопрос ... |
|||
|
||||
| PashaPash |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1233 Регистрация: 3.1.2008 Репутация: 6 Всего: 49 |
NikeDeForest, ну, зато ты с основами WCF разобрался за пару дней. у меня на это больше времени ушло
Кстати, хостинг WCF под IIS - не самый лучший вариант (IMHO). |
|||
|
||||
| NikeDeForest |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 136 Регистрация: 15.9.2007 Репутация: нет Всего: 2 |
Только сейчас сообщение увидел. А что использвоать вместо IIS? Делать приложение selh-host?
--------------------
Еще один вопрос ... |
|||
|
||||
![]()
|
| Прежде чем создать тему, посмотрите сюда: | |
|
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, cully, mr.DUDA, Exception. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Распределённые приложения и сеть | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |