powered by simpleCommunicator - 2.0.28     © 2024 Programmizd 02
Map
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Как сдизайнировать такое: апп->wcf/rest->db server
25 сообщений из 40, страница 1 из 2
Как сдизайнировать такое: апп->wcf/rest->db server
    #40025898
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересует следующее:

юзер пускает апп, сейчас он вводит имя/пароль (родные sql server-ные), они передаются серису, он строит connection string, коннектится к серверу.

Как избежать постоянной передачи имени/пароля от клиента к сервису? есть же что-то
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40025910
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно есть. Сервис должен всегда коннектится к серверу БД со своим логином/паролем (или какими-нибудь другими, но все равно своими собственными креденшиалами). Любой другой способ это полный фейспалм.
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40025911
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Завести учетные данные для пользователей на бэкэнде, а не транслировать их на sql-сервер
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40025917
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fkthat
Конечно есть. Сервис должен всегда коннектится к серверу БД со своим логином/паролем (или какими-нибудь другими, но все равно своими собственными креденшиалами). Любой другой способ это полный фейспалм.


Чуть подробнее, если можно, как в таком случае различать юзерскую массу?

юзер-апп->как коннектится, как их различить?
сервис->коннектится со своим имя/пароль, а если конечных юзеров 1000?
-------------->дб сервер
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40025920
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Завести учетные данные для пользователей на бэкэнде, а не транслировать их на sql-сервер


и как с ними работать?

юзер стартует апп, коннект к сервису (логин?), сервис уже коннектнут у серверу баз со своими credentials.
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40025926
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
а если конечных юзеров 1000?
для этого придумали роли и прочее.

Интересно, управление 1000 пользователей на SQL-сервере у тебя вопросов не вызывает?
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40025932
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Ролг Хупин
а если конечных юзеров 1000?
для этого придумали роли и прочее.

Интересно, управление 1000 пользователей на SQL-сервере у тебя вопросов не вызывает?


ну, 1000 - это образно, 10-20.

Я использую database roles, или имеются в виду роли тех что в ASP.NET используются?
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40025934
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Ролг Хупин, сегодня, 12:00 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1331613&msg=22244777][22244777]
>... есть же что-то
<
а если так:
1. каждый клиент в системе имеет уникальный id
2. каждый клиент в системе имеет свой ключ симметричного шифрования
3. таблица Клиенты базы данных содержит для каждого клиента <id, ключ_симметричного_шифрования, строка_соединения, ...)
4. клиент посылает строку_запроса сервису формата <id, зашифрованная_строка_запроса_работы_с_данными, ...)
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40025936
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
>Ролг Хупин, сегодня, 12:00 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1331613&msg=22244777][22244777]
>... есть же что-то
<
а если так:
1. каждый клиент в системе имеет уникальный id
2. каждый клиент в системе имеет свой ключ симметричного шифрования
3. таблица Клиенты базы данных содержит для каждого клиента <id, ключ_симметричного_шифрования, строка_соединения, ...)
4. клиент посылает строку_запроса сервису формата <id, зашифрованная_строка_запроса_работы_с_данными, ...)


Как клиент получает (1)?
Исходя из рекомендаций выше - сервис коннектится к базе со своим имя/пароль, или в данной концепции (4) сервис получает строку, выдергивает из нее данные, формирует connection string, делает коннект к SQL Server для данного юзера?
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40025938
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
или имеются в виду роли тех что в ASP.NET используются?
именно так.

В трехзвенной архитектуре управление полномочиями осуществляется на уровне приложения, а не на уровне БД. Приложение имеет доступ к БД под одной учеткой на уровне reader-writer (ну или +DDL-админ если без этого не обойтись).
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40025955
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Ролг Хупин, сегодня, 14:10 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1331613&msg=22244872][22244872]
>Исходя из рекомендаций выше...
<
Сервис выполняет вызов хранимой процедуры с общими для всех <имя, пароль> для получения параметров клиента и пытается дешифрировать строку_запроса, если ок, штатное продолжение, иначе - не штатная ситуация.
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40025961
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Ролг Хупин
или имеются в виду роли тех что в ASP.NET используются?
именно так.

В трехзвенной архитектуре управление полномочиями осуществляется на уровне приложения, а не на уровне БД. Приложение имеет доступ к БД под одной учеткой на уровне reader-writer (ну или +DDL-админ если без этого не обойтись).


т.е. сервис должен держать список ролей и определять к какой роли относится входящий юзер, далее - в базу.
1. Юзер все равно должен регистрироваться/логиниться?
2. А если у меня юзеры имеют наборы датабазных ролей? как это разруливать?
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40025972
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин
как это разруливать?
разруливать что?
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40025993
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Ролг Хупин
как это разруливать?
разруливать что?


"юзеры имеют наборы датабазных ролей" - сейчас они коннектятся, запуская приложения, исходя из списка дабазаных ролей получают доступ к какому-то функционалу в базе.
А если они будут обезличены, тогда юзер не сможет получить свой список ролей
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40026007
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще раз, датабазные роли не нужны. Права разруливаются приложением.

Иначе ты возвращаешься в первому сообщению. Или хранишь пароли каждого пользователя в явном виде на стороне приложения. Или, ну я не знаю, прикручиваешь всё к доменным ролям. Оно тебе всё это зачем? Не строят так трёхзвенные приложения.
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40026017
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Еще раз, датабазные роли не нужны. Права разруливаются приложением.

Иначе ты возвращаешься в первому сообщению. Или хранишь пароли каждого пользователя в явном виде на стороне приложения. Или, ну я не знаю, прикручиваешь всё к доменным ролям. Оно тебе всё это зачем? Не строят так трёхзвенные приложения.


Всё так, но, как в жизни, чуть сложнее. Это существующая система, в которой есть клиент-сервер, и есть клиент-сервис-сервер.
Т.е. попытка прикрутить трехзвенку к двухзвенке.
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40026039
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Ролг Хупин, сегодня, 16:39 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1331613&msg=22245052][22245052]
>Т.е. попытка прикрутить трехзвенку к двухзвенке.
<
1. VPN применить не пытались?
2. здесь в 3. таблица Клиенты базы данных меняем <id, ключ_симметричного_шифрования, строка_соединения, ...) на <id, ключ_симметричного_шифрования, login(что в двухзвенке), password(что в двухзвенке)>
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40026042
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
>Ролг Хупин, сегодня, 16:39 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1331613&msg=22245052][22245052]
>Т.е. попытка прикрутить трехзвенку к двухзвенке.
<
1. VPN применить не пытались?
2. здесь в 3. таблица Клиенты базы данных меняем <id, ключ_симметричного_шифрования, строка_соединения, ...) на <id, ключ_симметричного_шифрования, login(что в двухзвенке), password(что в двухзвенке)>


Заратустра не позволяет.
Это не в одном месте, надо будет отдать кустомеру, одному, второму.
Хочется красивого решения

Я подумал JWT использовать, но тогда что-то типа Identity Service надо как-то заюзить.
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40026046
Сон Веры Павловны
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
Приложение имеет доступ к БД под одной учеткой на уровне reader-writer (ну или +DDL-админ если без этого не обойтись).

А потом, когда возникает необходимость прикрутить на сервере аудит или CDC, все дружно ругаются матом - логин один, хост один. Можно, конечно, модифицировать строку соединения (уникальный зависящий от пользователя AppName добавить, например), или использовать sp_set_session_context, чтобы вычислять их в самописном аудите. Стандартный аудит и CDC всё равно тут не помогут никак. Вот за такие пляски с бубном около БД я и не люблю классическую трёхзвенку.


Ролг Хупин,

как вариант - перевести всех пользователей на win-аутентификацию, на хосте, где развёрнут WCF, настроить kerberos double hop, сам сервис тоже переконфигурить на win-аутентификацию, и имперсонировать нужные методы сервиса - тогда пользователи будут через сервис попадать в базу со своей родной учёткой.
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40026060
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сон Веры Павловны
Shocker.Pro
Приложение имеет доступ к БД под одной учеткой на уровне reader-writer (ну или +DDL-админ если без этого не обойтись).

А потом, когда возникает необходимость прикрутить на сервере аудит или CDC, все дружно ругаются матом - логин один, хост один. Можно, конечно, модифицировать строку соединения (уникальный зависящий от пользователя AppName добавить, например), или использовать sp_set_session_context, чтобы вычислять их в самописном аудите. Стандартный аудит и CDC всё равно тут не помогут никак. Вот за такие пляски с бубном около БД я и не люблю классическую трёхзвенку.


Ролг Хупин,

как вариант - перевести всех пользователей на win-аутентификацию, на хосте, где развёрнут WCF, настроить kerberos double hop, сам сервис тоже переконфигурить на win-аутентификацию, и имперсонировать нужные методы сервиса - тогда пользователи будут через сервис попадать в базу со своей родной учёткой.


- это мечта юзера, получить что -то типа трастед коннекшын и ни о чем не думать. С одной стороны - да, но с другой, если юзер засунет базу в тучу или поставит сервер под линукс, надо быть готовым обрабатывать и SQL юзеров.
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40026064
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну тогда действительно, пусть клиент логинится в IdentityServer с паролем от sql-базы
IdentityServer попробует сделать "SELECT 1" с этими учетными данными, если ок - будет считать этого пользователя существующим, зашифрует пароль каким-нибудь своим ключом и положит в токен.
Клиент будет ходить в прилагалище с этим токеном, оно будет пароль доставать, расшифровывать и обращаться с ним к sql-серверу. Таким образом можно избежать хранения пароля на стороне сервера.
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40026085
Ролг Хупин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro
ну тогда действительно, пусть клиент логинится в IdentityServer с паролем от sql-базы
IdentityServer попробует сделать "SELECT 1" с этими учетными данными, если ок - будет считать этого пользователя существующим, зашифрует пароль каким-нибудь своим ключом и положит в токен.
Клиент будет ходить в прилагалище с этим токеном, оно будет пароль доставать, расшифровывать и обращаться с ним к sql-серверу. Таким образом можно избежать хранения пароля на стороне сервера.


О, уже просматривается схема.
а эту схему для Виндоуз юзеров как использовать?
Даже, если один домен, то все зависит от протокола WCF, часто в сервисе не отлавливается реальный вин юзер, запустивший клиентсоке приложение.
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40026133
ВМоисеев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Ролг Хупин, сегодня, 12:00 https://www.sql.ru/forum/actualutils.aspx?action=gotomsg&tid=1331613&msg=22244777][22244777]
>...юзер пускает апп, сейчас он вводит имя/пароль (родные sql server-ные), они передаются...
<
считаю что пользователь не должен знать явные имя/пароль (родные sql server-ные)
ему достаточно иметь:
1. криптоконтейнер (.rar файл к примеру) с необходимыми параметрами <явные имя/пароль (родные sql server-ные), строка доступа к WCF - сервису и пр... >
2. пин-код для расшифровки криптоконтейнера (расшифровку делает приложение, а не пользователь)
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40026137
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВМоисеев
считаю что пользователь не должен знать явные имя/пароль (родные sql server-ные)
Тогда зачем всё это? Делаешь всем пользователям БД одинаковый фиксированный пароль, а логины разные, сопоставленные (или даже равные) логинам в апп. Соответственно, аутентифицируются пользователи на аппе, а ролевая модель сохраняется от sql-сервера
...
Рейтинг: 0 / 0
Как сдизайнировать такое: апп->wcf/rest->db server
    #40026169
felix_ff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ролг Хупин,

прямую имперсонацию использовать не хотите?

к примеру логину сервиса доступно олицетворение любого контекста пользователя.

при первоначальном подключении к сервису, пользователь вызывает что то в виде метода login() передающего некоторые данные для аутентификации.

метод login реализуется в модели через любой доступный вариант хоть от статичного файла, до вызова процедурки в бд которая сравнивает данные в таблице etc.
если предоставленные данные проходят авторизацию сервис сохраняет у себя некий динамический токен и возвращает клиенту.
все последующие вызовы от клиента должны будут предоставлять данный токен. токен явно сопоставлен с каким либо пользователем, то есть при поступлении POST запроса к примеру

http://web/document/insert?id=XXXXYYYY&name=vasya
XXXXYYYY выступает в роли токена, сервис явно сопостовляет его в логином clients\petrov олицетворяет контекст данного логина и остальную логику выполняет из под его учетки.

образно обрисовал, надеюсь суть ясна
...
Рейтинг: 0 / 0
25 сообщений из 40, страница 1 из 2
Форумы / WCF, Web Services, Remoting [игнор отключен] [закрыт для гостей] / Как сдизайнировать такое: апп->wcf/rest->db server
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]