powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Аутентификация, авторизация в swing приложении: как реализовать?
26 сообщений из 26, показаны все 2 страниц
Аутентификация, авторизация в swing приложении: как реализовать?
    #38759036
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
Пишу простое приложение - десктопное, которое дергает данные из базы данных, дополняет информационные справочники, делает некую аналитику, выводит отчет.
На данном этапе хочу реализовать вход для пользователей и ограничение по функционалу например на уровне доступа к компонентам.
По аутентификации набросал схемку:

Просьба поправить если есть какие-то не точности, если кто считает что это ерунда предложите свой вариант решения или поделитесь своими мыслями. Либо наиболее простым работающим вариантом.

По авторизации как думаете паттерн стратегия применим для ограничения пользователей или все таки нужно раздавать привилегии на уровне базы данных?
Спасибо!
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38759060
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.HofmannПросьба поправить если есть какие-то не точности, если кто считает что это ерунда предложите свой вариант решения или поделитесь своими мыслями. Либо наиболее простым работающим вариантом.

Ерунда, потому что...
Существует два типа систем. Один, которые нужно обезопасить. В вашем сценарии клиентский код инструментируется и получает доступ без проверки паролей. Поэтому до безопастности вашей схеме ещё очень далеко.
Второй, когда ввод пароля это условность. Например система работает в интранете клиента, и там нет ничего секретного, любой сотрудник может получить нужные данные в оффлайне. Для этого случая у вас слишком всё заморочено - соль, серверная проверка, временная таблица.

Dr.HofmannПо авторизации как думаете паттерн стратегия применим для ограничения пользователей или все таки нужно раздавать привилегии на уровне базы данных?

Я думаю, что вам нужно научится не тыкать паттерны куда попало. Особенно если вы не понимаете их назначения. И начать с каких-то базовых вещей, таких как Abstract Layer и Single Responsibility Principle.


В 2-tier системах, обычно используюется Security на уровне БД. Зачем вам изобретать что-то своё, если можно в SQL Server 2008 создать юзеров, задать пароли и раздать права на таблицы и базы.
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38759065
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если писать приложение под винду, то я бы вообще делал SSO с ActiveDirectory.
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38759085
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.Hofmannпаттерн стратегия
прям паранойя какая-то)
У нас есть что защищать, перед тем как систему строить?
Может лучше трафик до БД шифровать? Чтобы ИС не трогать?
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38759095
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпрям паранойя какая-то)

Ну хорошо хорошо это мое предположение не более того.
авторМожет лучше трафик до БД шифровать? Чтобы ИС не трогать?
Какие есть варианты?
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38759096
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38759100
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.HofmannКакие есть варианты?
- их привели выше:
- Win авторизация / SSO / IPSec
- сначала сделать "ГУИ разное от роли", что сложнее.
А все вызовы обернуть try чтобы юзверь увидел ошибку ОТ СЕРВЕРА - У вас недостаточно прав на данную операцию.
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38759137
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.Hofmann, по всей вуидимости у тебя двузвенка. Поэтому надо исходить из того
что все бинари и исходники доступны пользователю на рабочей станции. Следовательно
всю информацию о секретных ключах и хешах нужно убрать из клиента в вынести
его в сервер. В роли этого сервера у тебя выступает БД (так сложилось) поэтому
и аутентификацию надо реализовывать теми средствами что есть в БД.

Выдумывать всякие соли и хеш даты нет никакого смысла. Заводи каждому
пользователю учётку в БД.
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38761523
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВ 2-tier системах, обычно используюется Security на уровне БД. Зачем вам изобретать что-то своё, если можно в SQL Server 2008 создать юзеров, задать пароли и раздать права на таблицы и базы.

авторВыдумывать всякие соли и хеш даты нет никакого смысла. Заводи каждому
пользователю учётку в БД.

Я правильно понимаю,
Что просто делаю форму аутентификации и передаю логин пароль:
Сюда:
Код: java
1.
2.
3.
ConnectMSSQLServer sqlConnect = new ConnectMSSQLServer();
       sqlConnect.dbConnect("jdbc:sqlserver://192.168.25.115:1433;databaseName=arm",
              "arm", "1q2w3e4r!");



Каждый раз когда это необходимо?
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38761532
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.HofmannЧто просто делаю форму аутентификации и передаю логин пароль:
Сюда:
Код: java
1.
2.
3.
ConnectMSSQLServer sqlConnect = new ConnectMSSQLServer();
       sqlConnect.dbConnect("jdbc:sqlserver://192.168.25.115:1433;databaseName=arm",
              "arm", "1q2w3e4r!");



Каждый раз когда это необходимо?
Ну, грубо-говоря да. Не очень понятно про "каждый" раз. Обычно, DataSource создается единожды.
Есть и альтернативные варианты, которые позволяют не хранить пароль в памяти. Но вам пока можно не заморчиваться.
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38761646
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНе очень понятно про "каждый" раз. Обычно, DataSource создается единожды.

правильно понимаю он делается статическим.
+ создаем гетер на DataSource?
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38761710
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.HofmannавторНе очень понятно про "каждый" раз. Обычно, DataSource создается единожды.

правильно понимаю он делается статическим.
+ создаем гетер на DataSource?
У тебя - десктоп:
2 варианта
- MS рекомендует коннект при создании окна
- проще (я делал) коннект при открытии приложения + протаскивать коннект в каждое окно в конструкторе.
А дальше уже по вкусу.
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38762105
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я-бы не стал дергать в каждой формочке коннект без крайней необходимости.
Лучше попробовать isValid
http://stackoverflow.com/questions/847246/what-is-the-best-way-to-ping-a-database-via-jdbc
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38767652
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторУ тебя - десктоп:
2 варианта
- MS рекомендует коннект при создании окна
- проще (я делал) коннект при открытии приложения + протаскивать коннект в каждое окно в конструкторе.
А дальше уже по вкусу.

Комрады мы говорим с вами про DriverManager: ???
или DataSource ???
Я так понял понял что для swing приложений используется DriverManager с jdbc url-ом, а DataSource jndi именами для EE? поправте если ошибаюсь.

авторЯ-бы не стал дергать в каждой формочке коннект без крайней необходимости.
Лучше попробовать isValid
http://stackoverflow.com/questions/847246/what-is-the-best-way-to-ping-a-database-via-jdbc


Такой ход мысли???

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
private Connection connection = null;

public Connection getConnection() {
  try {
    if ( connection.isClosed() ) {
      // Start afresh.
      connection = null;
    }
    // ** More tests here to check connection is ok.
    if (connection == null) {
      // Make a new connection.
      connection = Connections.getConnection(alias);
    }
  } catch (SQLException ex) {
    // Cause a NPE further down the line.
    connection = null;
  }
  return connection;
}
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38767669
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.Hofmann, я пишу про использование метода isValid

http://docs.oracle.com/javase/7/docs/api/java/sql/Connection.html#isValid(int)
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38767692
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.Hofmann,
- выше 20 строк абсолютно ничего не делают.
- если у нас десктоп, то только ты своим кодом владеешь коннектом.
Поэтому выключаем автокоммит, таймаут = длинные транзакции.
БД и её возможности используем по полной.
(чтобы не писать такой шум на 20 строк)
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38767723
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторDr.Hofmann, я пишу про использование метода isValid

http://docs.oracle.com/javase/7/docs/api/java/sql/Connection.html#isValid(int)


авторDr.Hofmann,
- выше 20 строк абсолютно ничего не делают.
- если у нас десктоп, то только ты своим кодом владеешь коннектом.
Поэтому выключаем автокоммит, таймаут = длинные транзакции.
БД и её возможности используем по полной.
(чтобы не писать такой шум на 20 строк)


около???
Код: java
1.
2.
3.
4.
5.
6.
private Connection getConnection() {
       try {
           if (connection != null) {
               if (connection.isClosed() || !connection.isValid(10000)) {
                  connection = Connections.getConnection(alias);
               }
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38767749
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.Hofmann,
коннект это обычная переменная.
Ты же все переменные на null не проверяешь?

Код: java
1.
2.
3.
4.
5.
6.
7.
public class Main {
	private static final String url = "jdbc:postgresql://2222222222/postgres";
	public static void main(String[] args) {
		try {
			DriverManager.registerDriver(new org.postgresql.Driver());
			Object connection = DriverManager.getConnection(url, userName,
					userPassword);
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38767888
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторконнект это обычная переменная.
Ты же все переменные на null не проверяешь?


автор- проще (я делал) коннект при открытии приложения + протаскивать коннект в каждое окно в конструкторе.

ой я уже запутался если он создается при открытии приложения зачем его проверять?

Уже каша в голове логика такая должна быть?

...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38767895
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.Hofmann , я тебя прошу не флудить картинками. Они безсмысенны т.к. ты используешь
свою собственную систему обозначений flow алгоритма не совместимую с UML и непонятную
для большинства.

Пиши лучше кодом или текстом.
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38767910
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.Hofmann,
действительно. Твои картинки странные.
В чём вопрос?
....
Т.к. жизненный цикл всех окон я контролирую (закрытие и открытие).
То, логично, в 3 класса окна, в конструкторе передать Conn.
Что непонятно?
При закрытии приложения прибить коннект.
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38768013
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторDr.Hofmann,
действительно. Твои картинки странные.
В чём вопрос?
....
Т.к. жизненный цикл всех окон я контролирую (закрытие и открытие).
То, логично, в 3 класса окна, в конструкторе передать Conn.
Что непонятно?
При закрытии приложения прибить коннект.


авторDr.Hofmann, я тебя прошу не флудить картинками. Они безсмысенны т.к. ты используешь
свою собственную систему обозначений flow алгоритма не совместимую с UML и непонятную
для большинства.

Пиши лучше кодом или текстом.


Извините пожалуйста что саботировал ваш мозг своими картинками.

Я просто размышляю вслух и пытаюсь написать код наиболее приемлемым-подходящим образом:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
 */
package connection;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 *

 */
public class anotherConnection {
    
    private Connection conn = null;
    
    public anotherConnection(String db_connect_string, String db_userid, String db_password) throws ClassNotFoundException{
        
        try {
         Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
     
         conn = DriverManager.getConnection(db_connect_string,
                  db_userid, db_password);
        
         } catch (Exception e) {
         
             e.printStackTrace();
      
         }
}
    
   public Connection getanotherConnection(String db_connect_string, String db_userid, String db_password) throws SQLException{
       if(!conn.isValid(10)){
            conn = DriverManager.getConnection(db_connect_string,
                  db_userid, db_password);
       }
    return conn;
}
       
   
   public void CloseConnection() throws SQLException{
       
       this.conn.close();
   }
   
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38768051
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.Hofmann,
ну дак, и пишите Приложение, а не класс MyConnection - он уже есть.
Зачем вам геттер?
Вместо 2-х строк стало 55.
Вместо USER PASS тоже 2 класса будет?
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38768109
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЗачем вам геттер?

Чтоб не писать каждый раз, нечто подобное:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
 private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {                                           

       ConnectMSSQLServer sqlConnect = new ConnectMSSQLServer();
       sqlConnect.dbConnect("jdbc:sqlserver://192.168.25.115:1433;databaseName=arm366",
              "arm", "1q2w3e4r!");
       
       
// TODO add your handling code here:
    }                                          



а вызывать getanotherConnection когда это необходимо.

авторВместо USER PASS тоже 2 класса будет?

Я плохо понял вопрос честно говоря.
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38768154
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.Hofmann,
я говорил про 2 варианта архитектуры:
1) передавать коннект в окно-контейнер
2) при создании окна-контейнера написать ЭТИ 2 строки.
Окно контейнер ты неделю проектируешь.
Про какой случай говорим?
ЗЫ
- В менюшках не нужен коннект.
- "каждый раз" понятие относительное....оверхед - тоже
...
Рейтинг: 0 / 0
Аутентификация, авторизация в swing приложении: как реализовать?
    #38768166
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.Hofmann,
по большему счёту, это неважно.
Пусть будет твой утилитный статик-класс \ синглетон \ инжекция.
К сабжу отношения не имеет.
Удачи!
...
Рейтинг: 0 / 0
26 сообщений из 26, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Аутентификация, авторизация в swing приложении: как реализовать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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