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

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

Есть некоторое надопонимание. Вот допустим есть такое микросервисное приложение:

Картинка с другого сайта.

hello-world-service использует hello-service. Юзер может обращаться как к одному приложению, так и ко второму. Как сделать чтобы аунтефицировать пользователя черещ auth server понятно.

Непонятно как аунтефицировать микросевисы при обращении друг к другу
16 май 18, 13:10    [21413202]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
забыл ник
Member

Откуда:
Сообщений: 2474
redwhite90

hello-world-service использует hello-service.


Накуа нужны такие микросервисы? Опять приходим к тому что городят их только ради того что "модно". Микросервисы не должны пересекаться, если же все же нужен обмен какой-то информацией, то это делается через messaging, и это скорее нотификации чем изменение данных
16 май 18, 13:15    [21413227]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
redwhite90
Member

Откуда:
Сообщений: 1870
забыл ник
redwhite90
hello-world-service использует hello-service.


Накуа нужны такие микросервисы? Опять приходим к тому что городят их только ради того что "модно". Микросервисы не должны пересекаться, если же все же нужен обмен какой-то информацией, то это делается через messaging, и это скорее нотификации чем изменение данных

Накуя нужны такие вопросы? Понятно, что это высосанный из пальца пример. Но RPC делать иногда нужно. Вопрос как аунтефицироваться.

P.S.

Очереди будут на следующем этапе.
16 май 18, 13:17    [21413243]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 6914
Зачем нужен Single Sing On - в общем то понятно, микросервисы тут не при чем.
Как настроить SSO и как с ним работать - наверное читать в доке по тому продукту поддерживающему SSO, который используете )))

Зачем нужно аудентификация при обмене данных между микросервисами - лично мне не понятно. Человек уже прошел контроль, запросы между микросервисами уже доверительные (в локальной/закрытой подсети). Зачем там какая-то аудентификация - лично мне не понятно.

IMHO
16 май 18, 13:25    [21413274]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 33931
redwhite90,
Опять вопросы журналста)
redwhite90
Говорят

))
16 май 18, 13:28    [21413283]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 6914
P.S.
Картинку не понял. Т.к. например в SSO от Oracle, аутентификация проходит на HTTP сервере. Т.е. сервер(служба) аутентификации работает МЕЖДУ клиентом и нашим приложением (микросервисом). Если клиент аутентификаци не прошел, до приложения (микросервиса) запрос даже доходить не должен.
16 май 18, 13:29    [21413289]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
redwhite90
Member

Откуда:
Сообщений: 1870
Leonid Kudryavtsev
P.S.
Картинку не понял. Т.к. например в SSO от Oracle, аутентификация проходит на HTTP сервере. Т.е. сервер(служба) аутентификации работает МЕЖДУ клиентом и нашим приложением (микросервисом). Если клиент аутентификаци не прошел, до приложения (микросервиса) запрос даже доходить не должен.


Ну то есть Вы полагаете, что надо сделать какой-то фасад, который на котором будет проходить аунтефикация. Если аунтефикация пройдена, то всё доступно.
Сам этот фасад с другими микросервисами работает без авторизации? миросервисы друг с другом тоже?
16 май 18, 13:42    [21413367]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
redwhite90
Member

Откуда:
Сообщений: 1870
У этого перца судя по картинке все запросы аунтефицированные
Картинка с другого сайта.
16 май 18, 13:48    [21413385]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 6914
redwhite90
Ну то есть Вы полагаете, что надо сделать какой-то фасад, который на котором будет проходить аунтефикация.

Нет. Я полагаю, что все уже сделано до нас. Это задача SSO и Web Server'а (или Application Server'а если он берет на себя задачу обслуживания внешнего HTTP).

redwhite90
Если аунтефикация пройдена, то всё доступно.

Не все. А в рамках полномочий данного пользователя.

Если ф-ции приложения разнесены по раным URL / страничкам / servlet'ам , то возможно даже задачу разграничения полномочий может взять на себя Web Server

Но скорее всего, полномочия проще проверять в прикладном коде

redwhite90
Сам этот фасад с другими микросервисами работает без авторизации? миросервисы друг с другом тоже?

Наверное зависит от задачи (и архитектуры) и от степени параноидальности людей отвечающих за секьюрити

Моя точка зрения, что они МОГУТ работать без авторизации. Точнее, сам факт наличия IP из внутренней подсети - может уже быть достаточным основаниям доверять источнику запроса.

Фасад занимающийся авторизацией. в любом случае, с микросервисами будет работаь без авторизации. Иначе получается, что нужно делать фасад который будет авторизовать фасад занимающийся авторизацией и так далее, до бесконечности
16 май 18, 14:08    [21413491]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 6914
Ну и остается определить, что такое "авторизация".

На мой взгляд, это процесс проверки user name + password и выдача user id (или некоего другого "токена"). Ее достаточно делать один раз.

НО в наиболее параноидальных случаях, возможно требуется делать на каждую операцию (пример: банкомат, попросили баланс - требуют пин-код, попросили снять деньги - опять требуют пин-код)
16 май 18, 14:11    [21413501]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
Arm79
Member

Откуда: МО, Раменское
Сообщений: 3473
я бы использовал JWT-токен.
При обращении к любому сервису проверяется его наличие, если нет - редирект на страницу аутентфикации
16 май 18, 14:26    [21413544]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 33931
Arm79
его наличие,
где именно он должен лежать?
16 май 18, 14:35    [21413595]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
Андрей Панфилов
Member

Откуда: Москва > Melbourne
Сообщений: 2815
Petro123
где именно он должен лежать?
В запросе "клиентском": token is created during authentication (is provided in case of successful authentication) and is verified by the server before any processing. It is used by an application to allow a client to present a token representing his "identity card" (container with all information about him) to server and allow the server to verify the validity and integrity of the token in a secure way, all of this in a stateless and portable approach (portable in the way that client and server technologies can be different including also the transport channel even if HTTP is the most often used). Т.е. если мы от одного сервиса шлем запрос в другой, то этот токен нужно копировать в новый запрос.

PS. В вебсфере через LTPA все уже очень давно и прозрачно работает.
16 май 18, 14:50    [21413690]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
Arm79
Member

Откуда: МО, Раменское
Сообщений: 3473
Petro123
Arm79
его наличие,
где именно он должен лежать?

Что значит - лежать? )))

Обращаешься к серверу авторизации, он тебе выдает токен с некоторым сроком жизни
Этот токен используешь при обращении к любому сервису (который знает, что токен вообще должен быть)

Сервис прямо из токена проверяет его валидность (напоминаю, он self-contained как обозначено на скрине выше). То есть не тратится время на сетевое взаимодействие

В общем то, не обязательно JWT, просто у них есть пара плюсов, таких как возможность хранения пользовательской информации в токене (например, набор claim) и поддержка инфраструктурой (нет необходимости самому проверять валидность токена, обращения с невалидными токенами просто не дойдут до методов с бизнес-логикой

А лежит он у клиента. В принципе, какое то хранение на сервере можно организовать для реализации черных списков и отозванных токенов, но это некритичные частности
16 май 18, 14:55    [21413712]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 33931
Arm79,
Вы все описали sso. А микросервисы тут причём?
16 май 18, 14:59    [21413743]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 6914
Petro123
Arm79
его наличие,
где именно он должен лежать?


IMHO Он должен быть в REST запросе, который приходит на микросервис

Как я понимаю, после SSO токен в том или ином виде хранится в куках (или другом механизме связанном с сессий) клиента. Но опять таки, это лучше читать в доках конкретного SSO.

p.s. специально не углябляюсь в детали реализации, т.к. это зависит от используемого софта + я с этм детально не работал. В настройке SSO от Oracle (SSO, Weblogic, Oracle ADF, Oracle BI) участвовал.
К примеру подозреваю, что ни о каких JWT-токенах SSO от Oracle не знает )))
16 май 18, 15:04    [21413776]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
Arm79
Member

Откуда: МО, Раменское
Сообщений: 3473
Petro123
Arm79,
Вы все описали sso. А микросервисы тут причём?


Какой то непонятный вопрос. Что значит - причем? А что, не причем?

Мне казалось очевидным, что в распределенной среде обращения к разным кускам логики должны быть авторизированы. И правильно использовать сначала в одном месте аутентификацию, получить авторизационный токен, и далее ко всем сервисам обращаться с этим токеном. Так достигается не только авторизация, но и снижаются накладные расходы на сетевые взаимодействия.

У вас иное мнение?
16 май 18, 15:05    [21413782]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 6914
Arm79
....к разным кускам логики должны быть авторизированы.
...
У вас иное мнение?

В исходном вопросе автора, смешаны "люди и кони"
1. Обращение ОТ ПОЛЬЗОВАТЕЛЕЙ к сервисам - да, должны, беспорно
2. Общение МЕЖДУ СИСТЕМНЫМИ сервисами - если общение в защищенной среде (внутренняя IP сеть сервеной), то не факт. Большенство обращений все равно должны быть в режиме Superuser (видеть все данные).

IMHO & AFAIK
16 май 18, 15:09    [21413811]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
redwhite90
Member

Откуда:
Сообщений: 1870
Arm79
Petro123
Arm79,
Вы все описали sso. А микросервисы тут причём?


Какой то непонятный вопрос. Что значит - причем? А что, не причем?



Это просто тролль

автор
Как я понимаю, после SSO токен в том или ином виде хранится в куках (или другом механизме связанном с сессий) клиента. Но опять таки, это лучше читать в доках конкретного SSO.



Вообще токены стараются не засветить. Они обычно на сервере лежат и в браузер не попадают. SSO токен это oauth2 токен?
16 май 18, 15:10    [21413822]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
redwhite90
Member

Откуда:
Сообщений: 1870
Андрей Панфилов
Petro123
где именно он должен лежать?
В запросе "клиентском": token is created during authentication (is provided in case of successful authentication) and is verified by the server before any processing. It is used by an application to allow a client to present a token representing his "identity card" (container with all information about him) to server and allow the server to verify the validity and integrity of the token in a secure way, all of this in a stateless and portable approach (portable in the way that client and server technologies can be different including also the transport channel even if HTTP is the most often used). Т.е. если мы от одного сервиса шлем запрос в другой, то этот токен нужно копировать в новый запрос.

PS. В вебсфере через LTPA все уже очень давно и прозрачно работает.


А как бы это сделать в spring cloud?


https://github.com/gredwhite/spring-cloud
16 май 18, 15:13    [21413846]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
Arm79
Member

Откуда: МО, Раменское
Сообщений: 3473
Leonid Kudryavtsev
Arm79
....к разным кускам логики должны быть авторизированы.
...
У вас иное мнение?

В исходном вопросе автора, смешаны "люди и кони"
1. Обращение ОТ ПОЛЬЗОВАТЕЛЕЙ к сервисам - да, должны, беспорно
2. Общение МЕЖДУ СИСТЕМНЫМИ сервисами - если общение в защищенной среде (внутренняя IP сеть сервеной), то не факт. Большенство обращений все равно должны быть в режиме Superuser (видеть все данные).

IMHO & AFAIK

У нас так и есть. Есть "интерфейсный" сервис - дирижер, который авторизирует клиентские запросы. А взаимодействия "внутри" среды по умолчанию доверенные. Правда у нас не микросервисы, а обычные нормальные сервисы ))))) Такое поведение - не догма, просто у нас доступ к ресурсам равнозначный для всех пользователей.
16 май 18, 15:14    [21413855]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
Leonid Kudryavtsev
Member

Откуда:
Сообщений: 6914
redwhite90
Вообще токены стараются не засветить. Они обычно на сервере лежат и в браузер не попадают. SSO токен это oauth2 токен?

Не готов говорить без ссылок на конкретную доку/технологию/софт/архитектуру/требования

странно, как его можно не светить.

Я вошел в одно приложение, аудентифицировался, мне выдали токен
Теперь я хочу войти в другое приложение, вообще НЕ связанное с первым. Аудентифицироваться не хочу, т.к. у нас SSO.

Явно, что для данного сценария, клиенту нужно знать свой токен. И никакие прокси тут не спасут, т.к. SSO оно не только для Web, но и для обычных приложений, м даже MS DOS приложений )))
16 май 18, 15:18    [21413870]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
redwhite90
Member

Откуда:
Сообщений: 1870
Leonid Kudryavtsev
redwhite90
Вообще токены стараются не засветить. Они обычно на сервере лежат и в браузер не попадают. SSO токен это oauth2 токен?

Не готов говорить без ссылок на конкретную доку/технологию/софт/архитектуру/требования

странно, как его можно не светить.

Я вошел в одно приложение, аудентифицировался, мне выдали токен
Теперь я хочу войти в другое приложение, вообще НЕ связанное с первым. Аудентифицироваться не хочу, т.к. у нас SSO.

Явно, что для данного сценария, клиенту нужно знать свой токен. И никакие прокси тут не спасут, т.к. SSO оно не только для Web, но и для обычных приложений, м даже MS DOS приложений )))


Токен выдали приложение, а не браузеру.

https://tools.ietf.org/html/rfc6749#section-4.1
16 май 18, 15:24    [21413910]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
redwhite90
Member

Откуда:
Сообщений: 1870
в ссылке выше Client- это клиентское приложение
16 май 18, 15:25    [21413916]     Ответить | Цитировать Сообщить модератору
 Re: Аунтефикация в микросевисных приложениях  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 33931
redwhite90
Это просто тролль
тролль и журналист не пишущий кода это древнейшие профессии))
16 май 18, 15:28    [21413933]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Java Ответить