@gogolang

Страница 1297 из 1630
Аркадий
16.08.2018
19:59:26
Господа, кто может поделиться знаниями насчет микросервисной архитектуры и как в рамках нее организовать авторизацию и аутентификацию пользователя?!

Аркадий
16.08.2018
20:00:46
Kirill
16.08.2018
20:01:09
каких проблем у тебя нет на центосном (каком, кстати) ядре?
С очень частым открытием/закрытием сокетов. При чём на убунте у меня такое бывало, но я не докапывался почему именно, попробовал цент и всё взлетело

Google
Kirill
16.08.2018
20:02:46
как понять Blackbox?
Сервис с простым апи, который имеет доступ к пользовательским данным. Остальные сервисы доступа не имеют

Вся авторизация и проверка сессий на стороне этого сервиса

Аркадий
16.08.2018
20:04:21
Вся авторизация и проверка сессий на стороне этого сервиса
тоесть этот сервис же должен как-то сообщить клиенту - что он теперь может пользоваться всеми остальными сервисами?

Kirill
16.08.2018
20:04:26
А как сервис работает - другие сервисы не знают и знать не должны

Аркадий
16.08.2018
20:05:20
Kirill
16.08.2018
20:06:50
тоесть этот сервис же должен как-то сообщить клиенту - что он теперь может пользоваться всеми остальными сервисами?
Клиент первым запросом делает public auth на блэкбоксе, получает sso сессию и токен, а дальше ходит с сессией и токеном на апи гейтвей или, если его нет, то на сервисы напрямую. Сервисы валидируют комбинацию session id и токена на блэкбоксе перед auth-only req

Peter
16.08.2018
20:07:15
аутефикацию можно вынести на api gateway если она по JWT токену, так-то в токен можно права доступа добавить

Kirill
16.08.2018
20:07:18
аутефикацию можно вынести на api gateway если она по JWT токену, так-то в токен можно права доступа добавить
Тогда челу придется переполучать токен при обновлении прав, это плохо для UX

Аркадий
16.08.2018
20:09:23
Клиент первым запросом делает public auth на блэкбоксе, получает sso сессию и токен, а дальше ходит с сессией и токеном на апи гейтвей или, если его нет, то на сервисы напрямую. Сервисы валидируют комбинацию session id и токена на блэкбоксе перед auth-only req
»Сервисы валидируют комбинацию session id и токена на блэкбоксе перед auth-only req имеется в виду, что сервис на каждый пользовательский запрос идет на auth сервис и там проверяет права, так?

Аркадий
16.08.2018
20:11:31
Ага. А если доступа нет - можно считать попытки взлома и банить юзера, если надо
супер, спасибо тебе, ато у меня были мысли насчет этого, но не знал, как организовать.

Kirill
16.08.2018
20:11:41
Да не за что

Google
Peter
16.08.2018
20:12:04
Тогда челу придется переполучать токен при обновлении прав, это плохо для UX
А в чем проблема? Api gateway возвращает код что нужно обновить токен и уже с новым токеном выполняется запрос

Аркадий
16.08.2018
20:12:12
Ага. А если доступа нет - можно считать попытки взлома и банить юзера, если надо
еще вот такой смежный вопрос — обычно это все через k8s делается, или просто docker достаточно?

Kirill
16.08.2018
20:13:10
еще вот такой смежный вопрос — обычно это все через k8s делается, или просто docker достаточно?
Зависит от того, что нужно. Если хватает допера - сиди на допере, не усложняй жизнь k8s

Peter
16.08.2018
20:15:02
Kirill
16.08.2018
20:15:57
Он нужен только на гейтвее
не в этом суть любой мастер ключ — это то, что нужно хитро защищать. зачем, если можно сделать проще, и при этом не менее надёжно?

Peter
16.08.2018
20:17:47
jwt эта та же информаци из сессии только она хранится на стороне клиента, на один сервис меньше получается

Kirill
16.08.2018
20:18:23
если у тебя не было api gateway, то вообще по барабану, всё равно +1 сервис

Peter
16.08.2018
20:24:05
У нас на проекте нет гейтвея и мы страдаем. Сейчас пришли к тому чтобы вынести отдельно сервис который формирует объект с правами и находится во внутренней сети, в каждом сервисе которому требуются проверка прав доступа придется это реализовывать

Roman
16.08.2018
20:48:57
Народ. А как в go грохнуть запушенный процесс? cmd := exec.Command("/usr/local/bin/gedit", "/home/pi/test.txt") err := cmd.Run() if err != nil { panic(err) } err = cmd.Process.Kill() if err != nil { panic(err) } Пробовал так, но процесс запустился но не убился. Никаких ошибок нет. Видимо какой-то другой механизм

Roman
16.08.2018
21:21:48
> Никаких ошибок нет так ты их не проверяешь
Я их прям в дебаггере смотрю) Но проверил на всякий случай, это ничего не меняет. Походу оно деатачит процесс просто и он живет своей жизнью после

Lesha
17.08.2018
01:44:55
но можно повторит, да
Нужно быстро поратировать сокеты?

Alexey
17.08.2018
02:40:15
Он так и делает
Я выше исправил коммент, добавил код

Ток проверки ошибок не забыть :)

Aleksandr
17.08.2018
02:41:00
Народ. А как в go грохнуть запушенный процесс? cmd := exec.Command("/usr/local/bin/gedit", "/home/pi/test.txt") err := cmd.Run() if err != nil { panic(err) } err = cmd.Process.Kill() if err != nil { panic(err) } Пробовал так, но процесс запустился но не убился. Никаких ошибок нет. Видимо какой-то другой механизм

Google
Alexey
17.08.2018
02:42:55
Там gedit спрашивает о сохранении файла, видимо, перед закрытием

kill -9 надо

Как он там называется...

https://ru.m.wikipedia.org/wiki/Сигнал_(Unix) там табличка классификаций

Аркадий
17.08.2018
05:36:23
не в этом суть любой мастер ключ — это то, что нужно хитро защищать. зачем, если можно сделать проще, и при этом не менее надёжно?
Я вот о чем подумал, а как происходит взаимодействие между двумя сервисами, когда один идёт за проверкой прав пользователя на сервис авторизации? Он же спалит данные пользователя

Аркадий
17.08.2018
05:39:46
кто он спалит и почему?
Например. Я иду на сервис авторизации, получаю токен и сессию. Потом с этим иду на второй сервис, который не имеет доступа к данным пользователя и вынужден идти проверять данные, которые я прислал, на сервис авторизации. Так? Тогда вот этот самый последний поход сервиса 2, к сервису авторизации как осуществляется?

Dmitriy
17.08.2018
05:51:20
Например. Я иду на сервис авторизации, получаю токен и сессию. Потом с этим иду на второй сервис, который не имеет доступа к данным пользователя и вынужден идти проверять данные, которые я прислал, на сервис авторизации. Так? Тогда вот этот самый последний поход сервиса 2, к сервису авторизации как осуществляется?
У тебя идет передача запроса на endpoint, а дальше сервисы взаимодействуют друг с другом. Т.е. для примера ты прислал запрос на получение постов пользователя на endpoint в составе social сервиса, в составе запроса есть токен авторизации. Т.е. до того как social сервис тебе отдаст данные, он должен отправить запрос на user сервис с полученным токеном и получить от него ответ о валидности

Dmitriy
17.08.2018
05:54:39
Хорошо, это понятно. Я, видимо, неправильно вопрос написал. По какому протоколу общаются между собой сервисы?
А тут как тебе удобно. У меня в реализациях по amqp обычно, через кролика или кафку. Можно через http и тут тоже не будет криминала, т.к. запросы host 2 host, между двумя твоими серверами

Sergey
17.08.2018
05:56:11
Btw, вы не путаете авторизацию с аутентификацией?

Просто ходить на внешний ресурс за авторизацией это странно

Sergey
17.08.2018
05:59:03
Почему?
Ну только если это не ваша распределённая сеть, ну а внутри неё можно использовать что угодно, данные сливаются только самим себе

Dmitriy
17.08.2018
06:00:07
Host 2 host тогда должны быть во внутренней сети, да?
Тоже не обязательно конечно. Там уже если это разные сети, то можно на панельном уровне добавить безопасности. Хош впн, хош айписек

Google
Sergey
17.08.2018
06:00:30
Ну только если это не ваша распределённая сеть, ну а внутри неё можно использовать что угодно, данные сливаются только самим себе
А для работы с каким нибудь гуглом, вам должно хватить аутентификации, там тоже ничего не сливается Соответсвенно https

Dmitriy
17.08.2018
06:01:02
Btw, вы не путаете авторизацию с аутентификацией?
Это был сферический пример в вакууме, т.ч. терминалогия не сильно принципиальна)

Sergey
17.08.2018
06:02:20
Аркадий
17.08.2018
06:02:37
Тоже не обязательно конечно. Там уже если это разные сети, то можно на панельном уровне добавить безопасности. Хош впн, хош айписек
В моей голове я представлял, что сервис авторизации - это отдельный виртуальный сервер и он во внешней сети. Я не знал, как защитить служебные апи методы, которыми пользуются другие сервисы

Dmitriy
17.08.2018
06:04:20
У тебя на открытые методы api должна же передаваться и получаться только открытая инфа

Евгений
17.08.2018
06:07:46
Тут можно посмотреть как устроен OAuth2. Как ничего не сливая, аутентифицировать и авторизовать пользователя.

Аркадий
17.08.2018
06:08:20
да, судя по всему мне нужно получше понять, как работает jwt

Admin
ERROR: S client not available

Dmitriy
17.08.2018
06:09:37
да, судя по всему мне нужно получше понять, как работает jwt
Там ничего сложного, если что велком в личку)

Daniel
17.08.2018
06:38:23
100 раз в секунду, примерно

Оно плавает слегка

Pawel
17.08.2018
06:39:33
Забыл как в спецификаторах формата для семейства функции fmt указать чтобы числа от 1 до 9 печатались с лидирующим нулём. Подскажите плиз

Daniel
17.08.2018
06:40:02
С одним?

Pawel
17.08.2018
06:40:06
да

Daniel
17.08.2018
06:40:12
Нзна

%5.5d - это про другое

Dmitry
17.08.2018
06:42:09
fmt.Sprintf("%02d", value)

Google
Pawel
17.08.2018
06:42:33
точняк, сапсибо

Andrey
17.08.2018
07:49:33
Извините заранее если вопрос уже обсуждался. Допустим я сделал несколько функций и пускаю их только рефлексом. Го разве не выкинет эти функции так как они нигде не используются?

Alexander
17.08.2018
15:45:06
Ребята, я тут AMQP сервер запилил, и очень был бы рад замечаниям, предложениям, конечно же лайкам и особенно критике, можно в личку. Это мой первый большой проект на Go, забрасывать не хочу и буду продолжать над ним работать https://github.com/valinurovam/garagemq

hamper ?
17.08.2018
15:55:28
А кто-нибудь делал метрики для prometheus в приложении? Все пишут полный список метрик со всеми параметрами а потом их используют? Или есть какие-то более удобные решения?

hamper ?
17.08.2018
16:02:27
Да, вроде тут поинтереснее чем то, что я находил...

Kirill
17.08.2018
16:02:48
:)

Alexander
17.08.2018
16:18:10
Это аналог rabbitmq?
Да, постарался поддержать некоторые его отклонения от официального протокола и конфирмы

Aleksandr
17.08.2018
16:49:47
цель какая была? написать на го? профиты какие?

Alexander
17.08.2018
16:51:15
Доки, экземплы, бенчи
По докам не совсем представляю что писать, запустил сервер и используешь как rabbit с любым AMQP-клиентом, то же самое с примерами... Бенчи да, но могу приложить только бенчи которые тулзой от реббита

Alexander
17.08.2018
16:53:23
По докам не совсем представляю что писать, запустил сервер и используешь как rabbit с любым AMQP-клиентом, то же самое с примерами... Бенчи да, но могу приложить только бенчи которые тулзой от реббита
Лол. Доки - посмотрите примеры от того же кролика или там ActiveMQ. Если хотите чтобы продуктом кто-то пользовался, возьмите за образец успешные OSS проекты

Alexander
17.08.2018
16:53:30
цель какая была? написать на го? профиты какие?
Первоначальная цель - обучение го на хорошей задаче, сейчас же хочу довести все это до production ready Профиты пока только в полученных знаниях Но бенчи показывают что сервер на го быстрее, чем rabbit. Но тут же не только в быстроте дело, но и в надёжности

Alexander
17.08.2018
16:54:35
Простите, но не верю. Это про скорость

Или вы ampq не реализовали, либо кролик работает в режиме когда он сообщения персистит иди там гарантирует доставку, а ваше решение - как повезёт

Alexander
17.08.2018
16:56:01
Ну, тестил на локальной машине. Да и мои тесты да, так себе, очень синтетические

Условия одинаковые, режим сообщений в памяти) AMQP реализован. На счёт как повезёт - поэтому и вбрасываю в сообщество, может кто-то потестит, что-то подскажет. Доку наполню инфой как запускать и т д, хотя там достаточно make run

Илья
17.08.2018
17:25:32
и подумайте про конфигурацию

хотя бы в каком-то виде

Страница 1297 из 1630