Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 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]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Java Ответить