Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3      [все]
 Передаваемые данные при реализации SSO  [new]
Музаффар
Member

Откуда: UZB
Сообщений: 1115
Здравствуйте всем!
собственно сабж как это грамотно реализовать? т.е. клиенту А передавать одни данные пользователя, а клиенту В другие

на текущий момент реализована таблица где имеется к какому скоупу какие фильды разрешены и дальше с помощью рефлексии формируется передаваемые данные...
21 май 21, 09:14    [22325114]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Stanislav Bashkyrtsev
Member

Откуда: СПб
Сообщений: 137
Че-т я не понял.. Это вопрос про SSO или про данные, которые отдаются пользователю? SSO (Single Sign On) - это о том чтоб залогинится один раз, а не в каждом приложении.
21 май 21, 09:42    [22325125]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Музаффар
Member

Откуда: UZB
Сообщений: 1115
Stanislav Bashkyrtsev,

вопрос про данных, у меня есть клиенты (удаленные системы) и я должен дать информацию о пользователе только у каждого клиента (удаленной системы) свои скоупы скажем одному должен дать ФИО и год рождения другому логин
21 май 21, 09:57    [22325132]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Музаффар,
Не надо делать на коленке. Есть стандарты, либы, серверы для sso
21 май 21, 10:27    [22325145]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Музаффар
Member

Откуда: UZB
Сообщений: 1115
PetroNotC Sharp,

поделитесь если можно
21 май 21, 10:27    [22325146]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Музаффар
Member

Откуда: UZB
Сообщений: 1115
один из вариантов думаю какой ни будь ABAC?
21 май 21, 10:28    [22325147]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Stanislav Bashkyrtsev
Member

Откуда: СПб
Сообщений: 137
Музаффар, т.е. к SSO это не имеет отношения.

Для таких ситуаций есть протоколы типа OAuth2 - пользователь, когда логинится в систему, может указать какие права он желает дать этой системе (Client) на свои данные в другой из системы (Resource Server). Там это как раз scope и называется. Но это сам пользователь выдает права на свои ресурсы. Это твой случай?
21 май 21, 10:39    [22325153]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Музаффар
PetroNotC Sharp,

поделитесь если можно
как делится если ты вообще не приступал и не читал
Картинка с другого сайта.
21 май 21, 10:45    [22325155]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Музаффар
Member

Откуда: UZB
Сообщений: 1115
Stanislav Bashkyrtsev,

не совсем, предварительно как работает ссо (в моем случае) : после обмена токенами и после авторизации пользователя сервер ссо отправляет пользовательские данные в сервер клиента.
так вот теперь каждому удаленному клиенту я должен передать только тех аттрибутов которые указаны в договоре (в моем случае скоуп) и сейчас у меня реализован как есть клиент к нему свой скоуп где есть перечень аттрибутов и которые полностью совпадает с фильдами/аттрибутами класса. заполучив все возможные аттрибуты из базы я через ревлексии создаю новый объект для передачи...
конечно это рабочий вариант но возможно это есть более правильные решения, вот и спрашиваю
21 май 21, 10:45    [22325156]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
PetroNotC Sharp,
Identity пров это отдельная тачка с отдельным сервером.
Есть такая?
21 май 21, 10:47    [22325158]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Музаффар
Member

Откуда: UZB
Сообщений: 1115
PetroNotC Sharp,
все есть и ресурс сервер и ссо сервер
дело в том что вопрос не в ссо и не в реализации ссо а при предоставлении пользовательских данных
21 май 21, 11:02    [22325165]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Stanislav Bashkyrtsev
Member

Откуда: СПб
Сообщений: 137
Музаффар
после авторизации пользователя
После аутентификации.
Музаффар
сервер ссо отправляет пользовательские данные в сервер клиента.
Сервер ссо - это в смысле Auth Server? А как он отправляет данные? Может клиент запрашивает данные у Auth Server'a? Тот протокол о котором ты говоришь - у него есть название? Или это самопал?
Музаффар
так вот теперь каждому удаленному клиенту я должен передать только тех аттрибутов которые указаны в договоре (в моем случае скоуп) и сейчас у меня реализован как есть клиент к нему свой скоуп где есть перечень аттрибутов и которые полностью совпадает с фильдами/аттрибутами класса. заполучив все возможные аттрибуты из базы я через ревлексии создаю новый объект для передачи...
Ну звучит как норм схема. А как этот "договор" создается? Админ какой-то настраивает? Пользователь? В какой момент это настраивается?
21 май 21, 11:05    [22325170]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Музаффар
PetroNotC Sharp,
все есть и ресурс сервер и ссо сервер
дело в том что вопрос не в ссо и не в реализации ссо а при предоставлении пользовательских данных

Тогда на любой запрос к своему серверу на F5 ты в фильтре за микросек запрашиваешь сервер sso. И он шлет тебе ответ зашифрованный все что тебе надо.
В чем вопрос то?
21 май 21, 13:35    [22325259]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Мы делали с сервером Shbboleth и протокол SAML
21 май 21, 13:37    [22325260]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Нужно SSO по протоколу SAML. Кто делал?
21 май 21, 13:39    [22325265]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Музаффар
Member

Откуда: UZB
Сообщений: 1115
PetroNotC Sharp,

вроде как вопрос задал не правильный...

и мел ввиду вот что:
есть дата юзера которого надо передать удаленному сервису, при этом для каждого удаленного сервиса свои фильды/передаваемые данные (грубо говоря шаблон данных)

скажем
шаблон1 для клиента1
{"id":"", "name":""}


шаблон2 для клиента2
{"name":"", "birthDate":""}


есть данные пользователя который авторизовался
Obj obj = new Obj(1, "name", 2021-05-21);


так вот для клиента1 должен быть передан вот такой объект данных {"id":"1", "name":"name"}
а для второго клиента {"name":"name", "birthDate":"2021-05-21"}
21 май 21, 15:29    [22325331]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Музаффар,
Я даже картинку дал. Какой цифрой обозначен на ней твой вопрос?
21 май 21, 17:25    [22325422]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Музаффар,

До шага 4 мы не имели никакой инфы о юзвере. Вся инфа на Identity server.
И только после ввода пароля на шаге 3 он нам давал на шаге 4 всю инфу о нем.
21 май 21, 17:29    [22325424]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Музаффар,
В моем случае, вся инфа или поля данных что возвращал сервер sso загодя гвоздями забивался в xml формате.
То есть это контракт для нашего протокола.
Если я понял твой вопрос.
21 май 21, 17:52    [22325439]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Музаффар
Member

Откуда: UZB
Сообщений: 1115
PetroNotC Sharp
Музаффар,
Я даже картинку дал. Какой цифрой обозначен на ней твой вопрос?

на 4ом

автор
До шага 4 мы не имели никакой инфы о юзвере. Вся инфа на Identity server.
И только после ввода пароля на шаге 3 он нам давал на шаге 4 всю инфу о нем.

есть такое!

автор
В моем случае, вся инфа или поля данных что возвращал сервер sso загодя гвоздями забивался в xml формате.
То есть это контракт для нашего протокола.
Если я понял твой вопрос.

согласен

при этом передается вся инфа верно? а мне нужна дать только те данные которые разрешены.

что у меня сейчас работает: перед передачей клиентскому сервису инфы о пользователе я извлекаю из базы все фильды которые доступны именно этому клиенту далее сформированную где есть все инфа через рефлекшн прохожу и из нужных формирую объект json и это передаю

конечно это рабочий вариант, но у меня сейчас имеется свище 100 фильдов и пока 100 клиентских сервисов которые каждым днем растут...
и хотел бы предоставить данные по шаблону xml/json
З.Ы. опять таки передается не вся инфа о пользователе
21 май 21, 19:54    [22325480]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Музаффар,
>при этом передается вся инфа верно? а мне нужна дать только те данные которые разрешены.
=переведи.
У нас передается ФИО и роль ака должность.
И получает данные АДМИН.
Код работает под админом. Ну или хозяином томката.
То есть разрешены кому?
21 май 21, 21:27    [22325523]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Музаффар,
100 сервисов это что?
Опять микросервисы что ль?))))
Как можно 100 разных данных об человеке запрашивать?
))))
21 май 21, 21:33    [22325527]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Музаффар
Member

Откуда: UZB
Сообщений: 1115
PetroNotC Sharp,

Все верно но если подумать более глобально?, вроде как у гугла тоже есть такой механизм, скажем я хочу реализовать вход пользователя на свой свой сайт через гугл. После успешной авторизации что мне предоставит гугл о пользователе? Наверно почту, возможно фио, телефонный номер и т.д. И так всем эти инфы предоставляются со стороны гугла, верно?
Так вот если сказал правильно то в моем случае тоже почти так, только когда я говорил 100 сервисов это 100 удаленных клиентов/сайтов/порталов которым я предоставляю пользовательские данные, иными словами у меня только ссо сервер и сервер ресурсов/идентификации.
Так вот когда новый сервис хотят подключить согласовываются и предлставляемые данные о пользователе. Таким образом одному нужна будет фио другому фио+должность третьему адрес проживание и т.д.
Смог объяснить?
22 май 21, 05:22    [22325613]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Музаффар,
Смог. Но верится с трудом что ты гугль)
Он действительно спрашивает ЮЗВЕРЯ отдать ли САЙТУ ХХХХ инфу о тебе.
Если сервер Identity твой, то наверно так можно.
- нужно изучить либу или сервер identity
- попробовать по простому добавить в Его фррму с паролем галки что отдавать.
22 май 21, 12:48    [22325664]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Музаффар
Member

Откуда: UZB
Сообщений: 1115
PetroNotC Sharp,

у меня и ссо сервер и сервер ресурсов свои где несколько тысяч пользовательских данных при том каждым днем растёт,
на текущий день как я уже говорил все возможные аттрибуты (пользовательских) а их более 100
и около 100 подключенных удаленных сервисов, для каждого я на основе секретКея даю тот или иной аттрибут пользователя
для этого с базы извлекаю всех аттрибутов (соответствуют с аттрибутами класса) дальше по рефлексии прохожу и где совпадают аттрибуты тот и принадлежит передаче инече не передается

опять таки это рабочий вариант и на ура работает
но хочется что то другое если возможно а именно
у клиента хранить некий шаблон скажем
<first_name>%</first_name>
<last_name>%</lastname>
<birth_date>%</birth_date>

и т.д.
либо
{
"firstName":"%",
"lastName":"%",
"birthDate":"%"
}

далее извлекаю все данные пользователя из сервера ресурсов формирую по шаблону конкретного клиента то что показал чуть выше и заполнив передаю уже клиенту именно таком формате как был в шаблоне
22 май 21, 13:02    [22325668]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Музаффар,
Шаблон это протокол.
То есть ты пишешь руками протокол SSO и сервер идентификации,
Так?
Вот пример атрибутов юзаеря
          <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress">
            <AttributeValue>camilla@muppets.com</AttributeValue>
          </Attribute>

Но если руками, то взломают все твои 100 сервисов. Не?
22 май 21, 14:32    [22325685]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Вот в протоколе SAML
<saml:AttributeStatement>
   <saml:Attribute 
      Name="mail" 
      NameFormat="urn:oasis:names:tc:SAML:2.0:
         attrname-format:basic"  
      <saml:AttributeValue xsi:type="xs:string">
abc@example.com
      </saml:AttributeValue>
   </saml:Attribute> 
</saml:AttributeStatement>

А в твоем собственном протоколе можно хоть шариковой авторучкой на промокашке в ресторане.
Логично?
22 май 21, 14:40    [22325687]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Музаффар
Member

Откуда: UZB
Сообщений: 1115
PetroNotC Sharp

Но если руками, то взломают все твои 100 сервисов. Не?

это как?

автор
А в твоем собственном протоколе можно хоть шариковой авторучкой на промокашке в ресторане.
Логично?


походу я выразился не правильно или объяснил не правильно...

смотрите есть класс/объект
class UserDataDto{
private String name;
private String email;
private String phone;
}

как передать одному клиенту нейм и еМейл, другому все три? иными словами как сформировать такой объект? можно воспользоваться @JsonInclude(Include.NON_NULL) но как сделать это значение нулем?
22 май 21, 18:50    [22325740]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Музаффар,
1. "скажи фразу уж" - я изобретаю протокол и готовые не изучал. Че ты шифруешься.
Говори откровенно.
2.как вариант есть стримы. Очень современно. На входе стрим объектов Х а выходе Y.
Не?
23 май 21, 07:57    [22325799]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Музаффар
Member

Откуда: UZB
Сообщений: 1115
PetroNotC Sharp,

или 3. Мы говорим о разных вещах...
23 май 21, 17:19    [22325893]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Музаффар
Member

Откуда: UZB
Сообщений: 1115
PetroNotC Sharp
Музаффар,
1. "скажи фразу уж" - я изобретаю протокол и готовые не изучал. Че ты шифруешься.
Говори откровенно.
2.как вариант есть стримы. Очень современно. На входе стрим объектов Х а выходе Y.
Не?


один из готовых jackson?
24 май 21, 20:34    [22326476]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
fixxer
Member

Откуда:
Сообщений: 834
Внимательно посмотрите на то что имеете. У вас требование передавать различный набор полей, но контейнер данных (UserDataDto) ригидный. Просто используйте другую структуру данных, погибче, например Map, тогда задачка сойдется с ответом.

Сообщение было отредактировано: 24 май 21, 21:14
24 май 21, 21:22    [22326487]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Мы топчемся на месте. Просто автор не может никак рассказать контракт. Что ему надо?

На вход - schema-less xml/json. На выходе - вполне себе фиксированный POJO.

Так?
24 май 21, 21:49    [22326495]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
mayton,
Если так, то три буквы sso тут вообще в топике лишние.
Либо задача сводится к простейшему преобразованию DTO либо sso обсуждать.
Решений конечно много. Понять бы автора). Он боится разговаривать.
24 май 21, 22:14    [22326501]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Решений 100500. Просто автор хочет найти панацею или волшебный компонент который магическим образом
решит задачу.
24 май 21, 22:18    [22326504]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
mayton,
Согласен.
Простейший вариант вопроса звучит так:
- есть DTO с адресом и мылом. Как не отправить клиенту упоминание о мыле?
24 май 21, 23:24    [22326513]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Музаффар
Member

Откуда: UZB
Сообщений: 1115
автор
Внимательно посмотрите на то что имеете. У вас требование передавать различный набор полей, но контейнер данных (UserDataDto) ригидный. Просто используйте другую структуру данных, погибче, например Map, тогда задачка сойдется с ответом.

тоже вариант...

автор
Мы топчемся на месте. Просто автор не может никак рассказать контракт. Что ему надо?
На вход - schema-less xml/json. На выходе - вполне себе фиксированный POJO.
Так?

точняк, стоим на одном месте.
я уже несколько раз говорил вроде, во входе объект с данными + шаблон/маска в виде xml/json
на выходе некий json по шаблону/маске

шаблон/маска #1:
{
   "firstName": @s,
   "lastName": @s,
   "birthDay": @s
}


шаблон/маска #2:
{
   "id": @d,
   "firstName": @s,
   "lastName": @s
}


сам дто
class UserDataDto{
   private Long id;
   private String firstName;
   private String lastName;
   private LocalDate birthDay;
   private String email;
   private String phoneNumber;
}


далее объект на основе данных из бд

UserDataDto userData = userRepo.findById(1);


далее по маскам долен быть такой результат
по шаблону/маске #1:
{
   "firstName": "Иван",
   "lastName": "Иванов",
   "birthDay": "2000-01-01"
}



по шаблону/маске #2:
{
   "id": 1,
   "firstName": "Иван",
   "lastName": "Иванов"
}



автор
Если так, то три буквы sso тут вообще в топике лишние.

тут наверно мой косяк, т.к. вопрос большей части не относится к реализацию SSO в целом, но в моем контексте на самом деле используется при реализации ссо точнее из сервера ресурсов и ссо тут не причем.
25 май 21, 08:15    [22326540]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Музаффар,
>тоже вариант...
= ну дак делай и отпишись.
И забудь про свои маски. Маска это реализация и метод решения который ты предложил.
25 май 21, 09:32    [22326562]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Если говорить про маски, то ты хочешь чтобы новый клиент-СЕРВИС тебя ночью запросил поле "имясобакихозяина" и ты ночью начал его сервису его отдавать?
25 май 21, 09:36    [22326563]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Музаффар
Member

Откуда: UZB
Сообщений: 1115
PetroNotC Sharp
Если говорить про маски, то ты хочешь чтобы новый клиент-СЕРВИС тебя ночью запросил поле "имясобакихозяина" и ты ночью начал его сервису его отдавать?


для подключение нового сервиса сначала согласуется структура данных, и как бы все. и просто так они не могут запросит что то ещё.
25 май 21, 09:46    [22326568]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Музаффар,
Если согласовывается, тогда подходит не такой шаблон а аннотация или изменение кода маппинга или...
То есть при новом клиенте требуется программист. Устраивает?
25 май 21, 09:56    [22326572]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Музаффар
Member

Откуда: UZB
Сообщений: 1115
PetroNotC Sharp
Музаффар,
Если согласовывается, тогда подходит не такой шаблон а аннотация или изменение кода маппинга или...
То есть при новом клиенте требуется программист. Устраивает?


согласовывается макет данных же


вот что реализован, только фильды берутся с БД, но идея та же

public class App {
    private final String MY_FIELDS = "firstName,lastName,phone";

    public static void main(String[] args) {
        App app = new App();
        try {
            app.run();
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }

    private void run() throws NoSuchFieldException, IllegalAccessException {
        List<String> scopes = Arrays.stream(MY_FIELDS.split(",")).collect(Collectors.toList());
        Field[] classFields = UserDataDto.class.getDeclaredFields();

        UserDataDto oldUserDataDto = new UserDataDto("1", "Иван", "Иванов", "+123456789");
        UserDataDto newUserDataDto = new UserDataDto();

        for (Field f : classFields) {
            if (scopes.contains(f.getName())) {
                Field newField = newUserDataDto.getClass()
                        .getDeclaredField(f.getName());
                newField.setAccessible(true);

                newField.set(newUserDataDto, newField.get(oldUserDataDto));
            }
        }

        System.out.println(newUserDataDto);

        try {
            ObjectMapper mapper = new ObjectMapper();
            String json = mapper.writeValueAsString(newUserDataDto);
            System.out.println(json);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
    }

    @Setter
    @Getter
    @ToString
    @AllArgsConstructor
    @NoArgsConstructor
    @JsonInclude(JsonInclude.Include.NON_NULL)
    class UserDataDto {
        private String id;
        private String firstName;
        private String lastName;
        private String phone;

    }
}
25 май 21, 10:04    [22326578]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Музаффар,

Ок. Делайте совет fixxer а мы подумаем. ТЗ родили наконец (самопальный протокол)
25 май 21, 10:20    [22326592]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Музаффар,
Предложение1 - стримы
Предложение2 - ModelMapper
25 май 21, 10:46    [22326614]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Музаффар
Member

Откуда: UZB
Сообщений: 1115
PetroNotC Sharp,

пока вот такой вариант придумал, ну скорее можно оптимизировать

public class App {
    private final String MY_JSON = "{\"firstName\":\"\",\"lastName\":\"\",\"phone\":\"\"}";

    public static void main(String[] args) {
        App app = new App();
        try {
            app.runService();
        } catch (JsonProcessingException | NoSuchFieldException | IllegalAccessException e) {
            e.printStackTrace();
        }
    }


    private void runService() throws JsonProcessingException, NoSuchFieldException, IllegalAccessException {
        UserDataDto u = new UserDataDto("1", "fff", "lll", "ppp");
        Map<String, Object> retMap = new Gson().fromJson(
                MY_JSON, new TypeToken<HashMap<String, Object>>() {
                }.getType()
        );

        Field[] classFields = UserDataDto.class.getDeclaredFields();
        for (Field f : classFields) {
            Field newField = UserDataDto.class
                    .getDeclaredField(f.getName());
            newField.setAccessible(true);

            if (retMap.containsKey(f.getName())) {
                retMap.put(f.getName(), newField.get(u));
            }
        }
        retMap.values().removeIf(Objects::isNull);
        retMap.values().remove("");
        System.out.println(retMap);
    }

    @Setter
    @Getter
    @ToString
    @AllArgsConstructor
    @NoArgsConstructor
    @JsonInclude(JsonInclude.Include.NON_NULL)
    static class UserDataDto {
        private String id;
        private String firstName;
        private String lastName;
        private String phone;
    }
}
27 май 21, 09:45    [22327809]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Чтоб не писать много @Setter/@Getter.... там кажется можно просто @Data написать.
27 май 21, 10:42    [22327834]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
ТС была рефлексия и есть рефлексия. Что изменилось то?
27 май 21, 11:09    [22327847]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Музаффар
Member

Откуда: UZB
Сообщений: 1115
PetroNotC Sharp,

В том то и дело пока не смог уходить от рефлексии...
27 май 21, 13:52    [22327960]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Музаффар
PetroNotC Sharp,

В том то и дело пока не смог уходить от рефлексии...
сказали три варианта Карл!
Смотри выше.
27 май 21, 14:50    [22328019]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Музаффар
Member

Откуда: UZB
Сообщений: 1115
PetroNotC Sharp,

так то что накатал это не совсем то что предлагал fixxer (на счет мап)?
27 май 21, 15:42    [22328072]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Музаффар
PetroNotC Sharp,
так то что накатал это не совсем то что предлагал fixxer (на счет мап)?
по его варианту надо к нему
27 май 21, 15:47    [22328077]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
Музаффар
Member

Откуда: UZB
Сообщений: 1115
PetroNotC Sharp,

ну и по Вашему тоже не совсем понял,
1) стрим как может помочь?
2) на сколько мне известно с помощью ОбжекстМаппер можем из json сделать объект но дальше что тоже хз...
если можно можете какую нибудь наводку по обоим вариантам?
27 май 21, 15:56    [22328082]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Музаффар,
1) стрим это новая фишка spring boot 2.4.0 с реактивным программированием.
Import org.spring...boot...web.reactive
Туда ветер дует.
27 май 21, 16:33    [22328099]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Музаффар,
2) ты попробуй его. Не пробовал ведь до SSO?
27 май 21, 16:38    [22328103]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
2) вот наводка
Класс ObjectMapper ObjectMapper предоставляет функциональные возможности для чтения и записи JSON как в базовые объекты POJO (простые старые объекты Java), так и из общей модели дерева JSON (JsonNode), а также в связанные функции для выполнения преобразований. Он также обладает широкими возможностями настройки для работы как с различными стилями содержимого JSON, так и для поддержки более сложных концепций объектов, таких как полиморфизм и идентичность объектов. ObjectMapper также действует как фабрика для более продвинутых классов ObjectReader и ObjectWriter.
27 май 21, 16:39    [22328104]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Ерунда какая-то. А разве Jackson в базовой комплектации не делает тоже самое?
Заходит json. Типа
 "{\"firstName\":\"\",\"lastName\":\"\",\"phone\":\"\"}"


И на выходе у нас объект где замаплены те поля которые были. Те которых не было
просто равны null.
27 май 21, 17:05    [22328116]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
mayton,
На входе dto и список полей что надо у него отдать в веб
27 май 21, 17:43    [22328143]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18692
Музаффар
В том то и дело пока не смог уходить от рефлексии...
а чем рефлексия не устраивает?
27 май 21, 20:27    [22328207]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
вадя,
А чем плох динамический SQL в субд?
27 май 21, 20:41    [22328216]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
Непонятно, зачем такой кондовый код писать... ясно что прототип. Но и прототипы можно
сделать как функции с входом и выходом.

package ru.sql.MuzaFunc;

import org.springframework.cache.annotation.Cacheable;

// todo
public class MuzaFunc {

    @Cacheable(value = "transform", key = "{ #template, #userDataDto }" ) // тут я не помню как композитный ключ задать. вобщем из двух аргументов надо
    public String apply(String template, App.UserDataDto userDataDto) {
        // todo
        return .....;
    }

}


И кеширование добавить. Дабл-страйк - обойдет рефлексию и пойдет по линии выборки из кеша.

Сообщение было отредактировано: 27 май 21, 22:06
27 май 21, 22:13    [22328254]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
вадя
Member

Откуда: Екатеринбург
Сообщений: 18692
PetroNotC Sharp
вадя,
А чем плох динамический SQL в субд?
хорошая вещь, если грамотно использовать.
а не слушать всяких "гуру".....
28 май 21, 00:35    [22328276]     Ответить | Цитировать Сообщить модератору
 Re: Передаваемые данные при реализации SSO  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
вадя
PetroNotC Sharp
вадя,
А чем плох динамический SQL в субд?
хорошая вещь, если грамотно использовать.
а не слушать всяких "гуру".....
ну, если гуру то ты понял чем плох рефлекшн и ползание по готовому классу в рантайм.
28 май 21, 07:04    [22328300]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3      [все]
Все форумы / Java Ответить