- 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
import ballerina/auth;
import ballerina/config;
import ballerina/http;
import ballerina/log;
auth:InboundBasicAuthProvider basicAuthProvider = new;
http:BasicAuthHandler basicAuthHandler = new (basicAuthProvider);
listener http:Listener ep = new (9090, config = {
auth: {
authHandlers: [basicAuthHandler]
},
secureSocket: {
keyStore: {
path: config:getAsString("b7a.home") +
"/bre/security/ballerinaKeystore.p12",
password: "ballerina"
}
}
});
@http:ServiceConfig {
basePath: "/hello",
auth: {
scopes: ["scope1"]
}
}
service echo on ep {
@http:ResourceConfig {
methods: ["GET"],
path: "/sayHello",
auth: {
scopes: ["scope2"]
}
}
resource function hello(http:Caller caller, http:Request req) {
error? result = caller->respond("Hello, World!!!");
if (result is error) {
log:printError("Error in responding to caller", result);
}
}
}
Desktop # 0
guest # 0
allerina brings the entire program execution process to the hands of the developer
[/quote]
хотелось бы без булщита в двух словах: зачем она нужна?
Сервисы писать примерно в таком же стиле можно и на котлине, и даже на джве (чуть вербознее) и на тайпскрипте.
Или фищка в том, что она структурная?
>["GET"]
почеиу литерал, а не енум?
Desktop # 0 ⇈
guest # 0 ⇈
новый язык -- большая цена, платить ее нужно только за очень крутые фишки кмк
Desktop # 0 ⇈
- из коробки?
Если для меня что ts, что какая-то балерина это новый язык, то зачем мне какое-то скриптоговно, транспилируемое в жопаскрипт?
guest # 0 ⇈
TypeScript имеет значительно бОльшую юзербейс, и так как он статически типизирован -- он не скриптоговно
ну не нраца тс -- возьми котлин
Desktop # 0 ⇈
- во-первых, тогда уже не в JS, а в Ноде, что уже как бы не стандартная библиотека. Во-вторых, даже в Ноде gRPC вроде ставится отдельным пакетом. Где же из коробки?
> возьми котлин
- чем Котлин, язык для погромирования на Андроиде, лучше языка, который спецом сделан для бэкенда, в данном контексте?
guest # 0 ⇈
И в браузере тоже.
>котлин, язык для погромирования на Андроиде,
С чего это для андроида?
На котлине пол Intellij Idea написана, и Android Studio, есть куча всего для сервер сайд
https://kotlinlang.org/docs/reference/server-overview.html
Вот эта хуйня на котлине написана https://www.jetbrains.com/ru-ru/space/
Итого: в Балерине есть gRPC из коробки. Хорошо.
А еще есть какие-то важные фичи?
Desktop # 0 ⇈
Фишка со скоупами авторизации/аутентификации есть в любом нормальном сервере?
guest # 0 ⇈
>In the config auth provider, scopes are mapped to users
Выходит что scope это как группа?
В Spring Security такое есть, например
Desktop # 0 ⇈
А в Джанге есть такое? Ты же вроде её знаешь.
guest # 0 ⇈
https://docs.djangoproject.com/en/3.0/topics/auth/default/
Но в одну строчку пишется и проверка по группе тоже.
Но Django это Python, а Balerina, как я понял, все таки статически типизирована и под jvm, это может быть важно.
Вообще такое же есть в ASP.NET
https://docs.microsoft.com/ru-ru/aspnet/web-forms/overview/older-versions-security/roles/role-based-authorization-cs
Такое же есть прямо в самих джава сервлетах, но только с дурацуой HTTP аутентификацией, без формы. Так что обычно используют spring security, потому что там можно нормальные формы делать
Desktop # 0 ⇈
guest # 0 ⇈
Чтобы быть провайдером, нужно
https://django-oauth-toolkit.readthedocs.io/en/latest/install.html
А чтобы клиентом -- я как-то прикручивал аутентификацию через Google и FB через
https://github.com/python-social-auth/social-app-django
Под капотом там либа
https://python-social-auth.readthedocs.io/en/latest/backends/index.html
В ней овердохуя всего поддерживается, даже mail.ru вон:)
Система довольно модульная, в отличии от всяких пыхподелок там нигде не захардкожено как и что делать.
В Джанге принято ставить охулион пакетов, есть даже спец сайт
https://djangopackages.org/
Desktop # 0 ⇈
Запустил сервис, пытаюсь курлом обратиться, пишет sslv3 alert handshake failure.
Захожу в браузере безо всякой аутентификации, выдаёт SSL_ERROR_NO_CYPHER_OVERLAP ))))
guest # 0 ⇈
Браузер одни хочет, а сервер другие
Попробуй
$ openssl s_client -connect ХОСТ:ПОРТ
должно дать больше информации
Desktop # 0 ⇈
Походу, тестового серта нормального нет.
А это ж вообще ок для своего АПИ ещё и OAuth провайдера прикручивать рядом?
guest # 0 ⇈
Браузер ругнется, но откроет.
Для сравнения, вот как питушня выглядит для яндекса
Тут мы видим зацепку по TLSv1.3 со сьютом TLS_AES_256_GCM_SHA384
Ок или нет зависит от твоих требований, наверное.
Ты хочешь давать людям аутентифицироваться где-то их аккаунтом, созданным у тебя?
Desktop # 0 ⇈
- нет, просто проводить аутентификацию по access token. Это ок или гамнина?
guest # 0 ⇈
При этом
Ballerina has built-in support for the following inbound authentication mechanisms whereas it is possible to add custom mechanisms:
Basic authentication
JWT authentication
OAuth2 authentication
LDAP authentication
Я бы начал с basic. Если клиент идет по Https, то все равно инкто ничего не проснифит
такая хуня работает
https://ballerina.io/learn/by-example/secured-service-with-basic-auth.html
?
Desktop # 0 ⇈
guest # 0 ⇈
Desktop # 0 ⇈
Но видишь, что в балерину немало так запихнули всяких ништяков. Если бы я делал какой-то более-менее серьёзный бэк, можно было даже посмотреть в её сторону.
guest # 0 ⇈
Но я не знаю хорошо-ли это иметь в языке, и не лучше-ли это иметь сторонними либами.
А то вот в PHP тоже напихали "всё, что нужно для веба" с известными последствиями.
С другой стороны, иногда лучше иметь что-то готовое в языке, чем восемь несовместимых либ версии 0.7a
BECEHHuu_nemyx # 0 ⇈
MAKAKA # 0 ⇈
Desktop # 0 ⇈
Будет отдельное API для реги/логинов и отдельное API для бизнес-логики? И они будут коммуницировать через прости господи куки?
guest # 0 ⇈
Desktop # 0 ⇈
Наверное, есть какие-то 3rd party либы, я не в курсе.
Fike # 0 ⇈
BECEHHuu_nemyx # 0 ⇈
admin # 0 ⇈
BECEHHuu_nemyx # 0 ⇈
guest # 0 ⇈
guest # 0 ⇈
admin # 0 ⇈
guest # 0 ⇈
admin # 0 ⇈
Rooster # 0 ⇈
guest # 0 ⇈
бля
почему нету языка буратино? игра была, а языка нет
Fike # 0
заржал уже на «cloud-era»
bormand # 0 ⇈
Хуяк-хуяк и в продакшен.
Rooster # 0 ⇈
Питушня роботает.
guest # 0 ⇈
Rooster # 0 ⇈