powered by simpleCommunicator - 2.0.29     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Передаваемые данные при реализации SSO
25 сообщений из 62, страница 2 из 3
Передаваемые данные при реализации 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
25 сообщений из 62, страница 2 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Передаваемые данные при реализации SSO
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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