BG Development


  Reply to this topicStart new topicStart Poll

> Автентикация на рест клиент
thrawn
Публикувано на: 09-04-2021, 06:42
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3091
Регистриран на: 17.01.17



Върти ми се в главата едно проектче за което бих искал да контролирам използването на отдалечените клиенти (плащане на лицензии).

Замислил съм следната схема: давам на клиентите сертификати (Х.509 + частен ключ де) в които има всичко което ми трябва за валидиране (данни на клиент, валидност на лиценз - демек, на сертификат). След това всяка заявка се подписва като подписът се праща в хедърите + хедър със сертификатът.

Съответно сървърът (така де, приложението, щото това до някъде е преоткриване на колелото) проверява дали сертификатът е подписан от мен, дали самият сертификат е валиден и дали подписът на пакета е валиден.

Идеята на цялата тая глупост е, че има вариант при който и самия сървър да е в инфраструктурата на клиентът (демек, не под мой контрол).

Как мислите, има ли някакъв резон в тая работа или да не се занимавам с глупости?

Това мнение е било редактирано от thrawn на 09-04-2021, 06:43
PMEmail Poster
Top
DarkOne
Публикувано на: 09-04-2021, 13:50
Quote Post


Group Icon
Име: Александър Петков
Група: Администратор
Ранг: Почетен член

Мнения: 3597
Регистриран на: 30.01.04



Не е ли по-лесно направо да изискваш клиентски сертификати на ниво уеб сървър? Самият уеб сървър може да се настрои какви сертификати да приема - общо взето ще сложиш само издадените от теб да се приемат и си готов.

ПП: А, сега прочетох, че всъщност сървърът може да не е при теб. В такъв случай може да преместиш тази логика в приложението, да.

Това мнение е било редактирано от DarkOne на 09-04-2021, 13:51


--------------------
The man who learns only what others know
is as ignorant as if he learns nothing.
The treasures of knowledge are the most rare,
and guarded most harshly.
-- Chronicle of the First Age
PMICQ
Top
Антон Яначков
Публикувано на: 09-04-2021, 13:57
Quote Post



Име: Антон Яначков
Група: Потребител
Ранг: Почетен член

Мнения: 2221
Регистриран на: 27.07.16



Това хубаво, но помисли над варианта как да предупреждаваш клиентите, че сертификата изтича поне две седмици по-рано, защото теб те вълнува да им вземеш следващата такса, а тях ги вълнува да няма прекъсване на работата. Освен това помисли как може клиента да си подновява сертификата значително по-рано от изтичащият срок без да губи нищо. Така аз се опитах да си подновя един сертификат предварително и ми казаха, че може, но ще загубя два месеца, защото старият сертификат ми изтичал след два месеца. Нелогично, но е факт и сега съм си сложил отметка на десктопа и дано да не забравя.
PMEmail PosterUsers Website
Top
thrawn
Публикувано на: 10-04-2021, 06:59
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3091
Регистриран на: 17.01.17



Да, основния проблем е, че сървърът не се знае къде ще е, а другия проблем е източникът на точно време.
Размерът на хедърите не би трябвало да е проблем за предаване на сертификатът (компресиран) а клиентите няма да разчитат на браузер за да работят (ще са java и swift). Та като цяло, технически проблеми за реализацията няма (освен часовникът де, ама за него ще ползвам независим източник със собствена защита).

Основния въпрос е, до коко е оправдано да се върви по тоя път, защото проста проверка на сертификатът в самия клиент би дала (почти) същия резултат.

Относно издаването/подновяването на серификатите, всичко ше минава през мен (ще си изградя CA инфраструктура) така периодите на валидност ще са изцяло под мой контрол (ще мога да задавам с точност до секунда от/до кога е валиден всеки сертификат)
PMEmail Poster
Top
DarkOne
Публикувано на: 11-04-2021, 05:53
Quote Post


Group Icon
Име: Александър Петков
Група: Администратор
Ранг: Почетен член

Мнения: 3597
Регистриран на: 30.01.04



Можеш да добавиш Timestamp Authority Server в решението, за да решиш проблемът с точното време. Иначе сървърното решение има предимството, че е истински сигурно решение, когато ти контролираш сървъра. Когато не контролираш сървъра и клиентите, всяко решение е "хакваемо". Ако избереш да сложиш защитата само при клиентите, залагаш само на хакваемата защита.


--------------------
The man who learns only what others know
is as ignorant as if he learns nothing.
The treasures of knowledge are the most rare,
and guarded most harshly.
-- Chronicle of the First Age
PMICQ
Top
thrawn
Публикувано на: 12-04-2021, 09:38
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3091
Регистриран на: 17.01.17



Баш така си е. Но при положение, че целия цирк е при клиентите всяко обръщение към външен сървър (било то тайм или за валидиране) е под въпрос, защото може или да се "шунтира" или да се мокне самия сървър.

Затова се чудя до колко има резон да се заигравам точно с това.
PMEmail Poster
Top
DarkOne
Публикувано на: 12-04-2021, 12:11
Quote Post


Group Icon
Име: Александър Петков
Група: Администратор
Ранг: Почетен член

Мнения: 3597
Регистриран на: 30.01.04



Е, ти ще проверяваш дали timestamp-ът е подписан, те няма да могат да подпишат, за да го "mock"-нат. Иначе могат да го спрат и трябва да решиш какво да правиш, ако не можеш да се свържеш с timestamp сървъра.

Аз останах с впечателние, че има и модел на внедряване, при който сървърът е при теб. Ако на практика винаги сървърът е при клиента, то му криптираш данните с един симетричен ключ вътре в кода и имаш общо взето същото ниво на сигурност.


--------------------
The man who learns only what others know
is as ignorant as if he learns nothing.
The treasures of knowledge are the most rare,
and guarded most harshly.
-- Chronicle of the First Age
PMICQ
Top
Bender++
Публикувано на: 18-04-2021, 21:35
Quote Post



Име:
Група: Потребител
Ранг: Новопостъпил

Мнения: 3
Регистриран на: 18.04.21



За OAuth мислил ли си ? Или заявки към външни системи са напълно нежелани ?
PMEmail Poster
Top
thrawn
Публикувано на: 19-04-2021, 12:48
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3091
Регистриран на: 17.01.17



Чак па напълно нежелани не са. Но ми се иска да не връзвам много услуги които да зависят една от друга.

Относно тайм сървърът, в системата (ще) има фискално устройство та смятам да взимам датата от него (то си има защита за връщане на дата и час а и законът задължава собствениците на ФУ да не допускат разминаване с повече от 2 часа на часовника).

Това мнение е било редактирано от thrawn на 19-04-2021, 12:53
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0