powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Передаваемые данные при реализации SSO
62 сообщений из 62, показаны все 3 страниц
Передаваемые данные при реализации SSO
    #40071849
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте всем!
собственно сабж как это грамотно реализовать? т.е. клиенту А передавать одни данные пользователя, а клиенту В другие

на текущий момент реализована таблица где имеется к какому скоупу какие фильды разрешены и дальше с помощью рефлексии формируется передаваемые данные...
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40071856
Че-т я не понял.. Это вопрос про SSO или про данные, которые отдаются пользователю? SSO (Single Sign On) - это о том чтоб залогинится один раз, а не в каждом приложении.
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40071858
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev,

вопрос про данных, у меня есть клиенты (удаленные системы) и я должен дать информацию о пользователе только у каждого клиента (удаленной системы) свои скоупы скажем одному должен дать ФИО и год рождения другому логин
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40071864
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
Не надо делать на коленке. Есть стандарты, либы, серверы для sso
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40071865
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

поделитесь если можно
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40071866
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
один из вариантов думаю какой ни будь ABAC?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40071869
Музаффар, т.е. к SSO это не имеет отношения.

Для таких ситуаций есть протоколы типа OAuth2 - пользователь, когда логинится в систему, может указать какие права он желает дать этой системе (Client) на свои данные в другой из системы (Resource Server). Там это как раз scope и называется. Но это сам пользователь выдает права на свои ресурсы. Это твой случай?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40071870
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар
PetroNotC Sharp,

поделитесь если можно
как делится если ты вообще не приступал и не читал
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40071871
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stanislav Bashkyrtsev,

не совсем, предварительно как работает ссо (в моем случае) : после обмена токенами и после авторизации пользователя сервер ссо отправляет пользовательские данные в сервер клиента.
так вот теперь каждому удаленному клиенту я должен передать только тех аттрибутов которые указаны в договоре (в моем случае скоуп) и сейчас у меня реализован как есть клиент к нему свой скоуп где есть перечень аттрибутов и которые полностью совпадает с фильдами/аттрибутами класса. заполучив все возможные аттрибуты из базы я через ревлексии создаю новый объект для передачи...
конечно это рабочий вариант но возможно это есть более правильные решения, вот и спрашиваю
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40071872
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,
Identity пров это отдельная тачка с отдельным сервером.
Есть такая?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40071877
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,
все есть и ресурс сервер и ссо сервер
дело в том что вопрос не в ссо и не в реализации ссо а при предоставлении пользовательских данных
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40071880
Музаффар
после авторизации пользователя
После аутентификации .
Музаффарсервер ссо отправляет пользовательские данные в сервер клиента.Сервер ссо - это в смысле Auth Server? А как он отправляет данные? Может клиент запрашивает данные у Auth Server'a? Тот протокол о котором ты говоришь - у него есть название? Или это самопал?
Музаффартак вот теперь каждому удаленному клиенту я должен передать только тех аттрибутов которые указаны в договоре (в моем случае скоуп) и сейчас у меня реализован как есть клиент к нему свой скоуп где есть перечень аттрибутов и которые полностью совпадает с фильдами/аттрибутами класса. заполучив все возможные аттрибуты из базы я через ревлексии создаю новый объект для передачи...Ну звучит как норм схема. А как этот "договор" создается? Админ какой-то настраивает? Пользователь? В какой момент это настраивается?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40071927
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар
PetroNotC Sharp,
все есть и ресурс сервер и ссо сервер
дело в том что вопрос не в ссо и не в реализации ссо а при предоставлении пользовательских данных

Тогда на любой запрос к своему серверу на F5 ты в фильтре за микросек запрашиваешь сервер sso. И он шлет тебе ответ зашифрованный все что тебе надо.
В чем вопрос то?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40071928
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы делали с сервером Shbboleth и протокол SAML
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40071931
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40071956
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

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

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

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



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



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



так вот для клиента1 должен быть передан вот такой объект данных {"id":"1", "name":"name"}
а для второго клиента {"name":"name", "birthDate":"2021-05-21"}
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072008
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
Я даже картинку дал. Какой цифрой обозначен на ней твой вопрос?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072009
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,

До шага 4 мы не имели никакой инфы о юзвере. Вся инфа на Identity server.
И только после ввода пароля на шаге 3 он нам давал на шаге 4 всю инфу о нем.
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072019
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
В моем случае, вся инфа или поля данных что возвращал сервер sso загодя гвоздями забивался в xml формате.
То есть это контракт для нашего протокола.
Если я понял твой вопрос.
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072042
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Музаффар,
Я даже картинку дал. Какой цифрой обозначен на ней твой вопрос?

на 4ом

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

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

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

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

конечно это рабочий вариант, но у меня сейчас имеется свище 100 фильдов и пока 100 клиентских сервисов которые каждым днем растут...
и хотел бы предоставить данные по шаблону xml/json
З.Ы. опять таки передается не вся инфа о пользователе
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072064
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
>при этом передается вся инфа верно? а мне нужна дать только те данные которые разрешены.
=переведи.
У нас передается ФИО и роль ака должность.
И получает данные АДМИН.
Код работает под админом. Ну или хозяином томката.
То есть разрешены кому?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072067
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
100 сервисов это что?
Опять микросервисы что ль?))))
Как можно 100 разных данных об человеке запрашивать?
))))
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072123
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

Все верно но если подумать более глобально?, вроде как у гугла тоже есть такой механизм, скажем я хочу реализовать вход пользователя на свой свой сайт через гугл. После успешной авторизации что мне предоставит гугл о пользователе? Наверно почту, возможно фио, телефонный номер и т.д. И так всем эти инфы предоставляются со стороны гугла, верно?
Так вот если сказал правильно то в моем случае тоже почти так, только когда я говорил 100 сервисов это 100 удаленных клиентов/сайтов/порталов которым я предоставляю пользовательские данные, иными словами у меня только ссо сервер и сервер ресурсов/идентификации.
Так вот когда новый сервис хотят подключить согласовываются и предлставляемые данные о пользователе. Таким образом одному нужна будет фио другому фио+должность третьему адрес проживание и т.д.
Смог объяснить?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072159
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
Смог. Но верится с трудом что ты гугль)
Он действительно спрашивает ЮЗВЕРЯ отдать ли САЙТУ ХХХХ инфу о тебе.
Если сервер Identity твой, то наверно так можно.
- нужно изучить либу или сервер identity
- попробовать по простому добавить в Его фррму с паролем галки что отдавать.
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072160
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

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

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


и т.д.
либо
Код: xml
1.
2.
3.
4.
5.
{
"firstName":"%",
"lastName":"%",
"birthDate":"%"
}


далее извлекаю все данные пользователя из сервера ресурсов формирую по шаблону конкретного клиента то что показал чуть выше и заполнив передаю уже клиенту именно таком формате как был в шаблоне
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072172
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
Шаблон это протокол.
То есть ты пишешь руками протокол SSO и сервер идентификации,
Так?
Вот пример атрибутов юзаеря
Код: java
1.
2.
3.
          <Attribute Name="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress">
            <AttributeValue>camilla@muppets.com<;/AttributeValue>
          </Attribute>


Но если руками, то взломают все твои 100 сервисов. Не?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072174
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот в протоколе SAML
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<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>


А в твоем собственном протоколе можно хоть шариковой авторучкой на промокашке в ресторане.
Логично?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072208
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

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

это как?

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

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

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

как передать одному клиенту нейм и еМейл, другому все три? иными словами как сформировать такой объект? можно воспользоваться @JsonInclude(Include.NON_NULL) но как сделать это значение нулем?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072255
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
1. "скажи фразу уж" - я изобретаю протокол и готовые не изучал. Че ты шифруешься.
Говори откровенно.
2.как вариант есть стримы. Очень современно. На входе стрим объектов Х а выходе Y.
Не?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072294
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

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


один из готовых jackson ?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072572
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Внимательно посмотрите на то что имеете. У вас требование передавать различный набор полей, но контейнер данных (UserDataDto) ригидный. Просто используйте другую структуру данных, погибче, например Map, тогда задачка сойдется с ответом.
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072579
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы топчемся на месте. Просто автор не может никак рассказать контракт. Что ему надо?

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

Так?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072583
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Если так, то три буквы sso тут вообще в топике лишние.
Либо задача сводится к простейшему преобразованию DTO либо sso обсуждать.
Решений конечно много. Понять бы автора). Он боится разговаривать.
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072586
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решений 100500. Просто автор хочет найти панацею или волшебный компонент который магическим образом
решит задачу.
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072593
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Согласен.
Простейший вариант вопроса звучит так:
- есть DTO с адресом и мылом. Как не отправить клиенту упоминание о мыле?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072608
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторВнимательно посмотрите на то что имеете. У вас требование передавать различный набор полей, но контейнер данных (UserDataDto) ригидный. Просто используйте другую структуру данных, погибче, например Map, тогда задачка сойдется с ответом.
тоже вариант...

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

шаблон/маска #1:
Код: xml
1.
2.
3.
4.
5.
{
   "firstName": @s,
   "lastName": @s,
   "birthDay": @s
}



шаблон/маска #2:
Код: xml
1.
2.
3.
4.
5.
{
   "id": @d,
   "firstName": @s,
   "lastName": @s
}



сам дто
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
class UserDataDto{
   private Long id;
   private String firstName;
   private String lastName;
   private LocalDate birthDay;
   private String email;
   private String phoneNumber;
}



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

Код: java
1.
UserDataDto userData = userRepo.findById(1);



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




по шаблону/маске #2:
Код: xml
1.
2.
3.
4.
5.
{
   "id": 1,
   "firstName": "Иван",
   "lastName": "Иванов"
}




авторЕсли так, то три буквы sso тут вообще в топике лишние.
тут наверно мой косяк, т.к. вопрос большей части не относится к реализацию SSO в целом, но в моем контексте на самом деле используется при реализации ссо точнее из сервера ресурсов и ссо тут не причем.
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072616
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
>тоже вариант...
= ну дак делай и отпишись.
И забудь про свои маски. Маска это реализация и метод решения который ты предложил.
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072617
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если говорить про маски, то ты хочешь чтобы новый клиент-СЕРВИС тебя ночью запросил поле "имясобакихозяина" и ты ночью начал его сервису его отдавать?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072619
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Если говорить про маски, то ты хочешь чтобы новый клиент-СЕРВИС тебя ночью запросил поле "имясобакихозяина" и ты ночью начал его сервису его отдавать?


для подключение нового сервиса сначала согласуется структура данных, и как бы все. и просто так они не могут запросит что то ещё.
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072621
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
Если согласовывается, тогда подходит не такой шаблон а аннотация или изменение кода маппинга или...
То есть при новом клиенте требуется программист. Устраивает?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072623
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
Музаффар,
Если согласовывается, тогда подходит не такой шаблон а аннотация или изменение кода маппинга или...
То есть при новом клиенте требуется программист. Устраивает?


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


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

Код: 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.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
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;

    }
}
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072630
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,

Ок. Делайте совет fixxer а мы подумаем. ТЗ родили наконец (самопальный протокол)
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40072639
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
Предложение1 - стримы
Предложение2 - ModelMapper
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40073417
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

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

Код: 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.
45.
46.
47.
48.
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;
    }
}
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40073441
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтоб не писать много @Setter/@Getter.... там кажется можно просто @Data написать.
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40073453
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТС была рефлексия и есть рефлексия. Что изменилось то?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40073507
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

В том то и дело пока не смог уходить от рефлексии...
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40073538
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар
PetroNotC Sharp,

В том то и дело пока не смог уходить от рефлексии...
сказали три варианта Карл!
Смотри выше.
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40073576
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

так то что накатал это не совсем то что предлагал fixxer (на счет мап)?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40073579
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар
PetroNotC Sharp,
так то что накатал это не совсем то что предлагал fixxer (на счет мап)?
по его варианту надо к нему
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40073582
Музаффар
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp,

ну и по Вашему тоже не совсем понял,
1) стрим как может помочь?
2) на сколько мне известно с помощью ОбжекстМаппер можем из json сделать объект но дальше что тоже хз...
если можно можете какую нибудь наводку по обоим вариантам?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40073590
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
1) стрим это новая фишка spring boot 2.4.0 с реактивным программированием.
Import org.spring...boot...web.reactive
Туда ветер дует.
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40073594
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар,
2) ты попробуй его. Не пробовал ведь до SSO?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40073595
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2) вот наводка
Класс ObjectMapper ObjectMapper предоставляет функциональные возможности для чтения и записи JSON как в базовые объекты POJO (простые старые объекты Java), так и из общей модели дерева JSON (JsonNode), а также в связанные функции для выполнения преобразований. Он также обладает широкими возможностями настройки для работы как с различными стилями содержимого JSON, так и для поддержки более сложных концепций объектов, таких как полиморфизм и идентичность объектов. ObjectMapper также действует как фабрика для более продвинутых классов ObjectReader и ObjectWriter.
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40073602
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ерунда какая-то. А разве Jackson в базовой комплектации не делает тоже самое?
Заходит json. Типа
Код: java
1.
 "{\"firstName\":\"\",\"lastName\":\"\",\"phone\":\"\"}"



И на выходе у нас объект где замаплены те поля которые были. Те которых не было
просто равны null.
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40073619
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
На входе dto и список полей что надо у него отдать в веб
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40073652
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Музаффар
В том то и дело пока не смог уходить от рефлексии...
а чем рефлексия не устраивает?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40073657
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя,
А чем плох динамический SQL в субд?
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40073678
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Непонятно, зачем такой кондовый код писать... ясно что прототип. Но и прототипы можно
сделать как функции с входом и выходом.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
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 .....;
    }

}



И кеширование добавить. Дабл-страйк - обойдет рефлексию и пойдет по линии выборки из кеша.
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40073692
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
вадя,
А чем плох динамический SQL в субд?
хорошая вещь, если грамотно использовать.
а не слушать всяких "гуру".....
...
Рейтинг: 0 / 0
Передаваемые данные при реализации SSO
    #40073708
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вадя
PetroNotC Sharp
вадя,
А чем плох динамический SQL в субд?
хорошая вещь, если грамотно использовать.
а не слушать всяких "гуру".....
ну, если гуру то ты понял чем плох рефлекшн и ползание по готовому классу в рантайм.
...
Рейтинг: 0 / 0
62 сообщений из 62, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Передаваемые данные при реализации SSO
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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