1. Куча / Говнокод #26590

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 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);
            }
        }
    }

    Кто что думает про https://ballerina.io?

    Запостил: Desktop, 19 Апреля 2020

    Комментарии (45) RSS

    • #seo #discuss
      Ответить
    • [quote]
      allerina brings the entire program execution process to the hands of the developer
      [/quote]

      хотелось бы без булщита в двух словах: зачем она нужна?

      Сервисы писать примерно в таком же стиле можно и на котлине, и даже на джве (чуть вербознее) и на тайпскрипте.

      Или фищка в том, что она структурная?

      >["GET"]
      почеиу литерал, а не енум?
      Ответить
      • Ну типа в стандартной блеватеке поддержка всяческих ништяков вроде Websockets и gRPC.
        Ответить
        • так и в typescript тоже много че есть

          новый язык -- большая цена, платить ее нужно только за очень крутые фишки кмк
          Ответить
          • > так и в typescript тоже много че есть
            - из коробки?

            Если для меня что ts, что какая-то балерина это новый язык, то зачем мне какое-то скриптоговно, транспилируемое в жопаскрипт?
            Ответить
            • да, в JS же это из коробки.

              TypeScript имеет значительно бОльшую юзербейс, и так как он статически типизирован -- он не скриптоговно


              ну не нраца тс -- возьми котлин
              Ответить
              • > да, в JS же это из коробки.
                - во-первых, тогда уже не в JS, а в Ноде, что уже как бы не стандартная библиотека. Во-вторых, даже в Ноде gRPC вроде ставится отдельным пакетом. Где же из коробки?

                > возьми котлин
                - чем Котлин, язык для погромирования на Андроиде, лучше языка, который спецом сделан для бэкенда, в данном контексте?
                Ответить
                • >- во-первых, тогда уже не в JS, а в Ноде,
                  И в браузере тоже.

                  >котлин, язык для погромирования на Андроиде,
                  С чего это для андроида?
                  На котлине пол Intellij Idea написана, и Android Studio, есть куча всего для сервер сайд
                  https://kotlinlang.org/docs/reference/server-overview.html
                  Вот эта хуйня на котлине написана https://www.jetbrains.com/ru-ru/space/


                  Итого: в Балерине есть gRPC из коробки. Хорошо.
                  А еще есть какие-то важные фичи?
                  Ответить
                  • Я думал, придёт кто-то, кто щупал это нинужно лично и мне расскажет :-)

                    Фишка со скоупами авторизации/аутентификации есть в любом нормальном сервере?
                    Ответить
                    • Я не щупал:) Вообще ты не подумай, что я обсыраю что-то. Я правда хотел понять, а чем там фишка.

                      >In the config auth provider, scopes are mapped to users
                      Выходит что scope это как группа?

                      В Spring Security такое есть, например
                      Ответить
                      • Видимо, да. Разделение по правам.

                        А в Джанге есть такое? Ты же вроде её знаешь.
                        Ответить
                        • В джанге из коробки есть понятие пользователей и групп, и админка к ним. К группам можно привязывать permssions, и для вьюшки требовать какой-то permission.
                          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, потому что там можно нормальные формы делать
                          Ответить
                          • А я правильно понимаю, что в той же Джанге из коробки нет OAuth2?
                            Ответить
                            • Нет, надо ставить. Но в джанге обычно довольно легко всё ставится.

                              Чтобы быть провайдером, нужно
                              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/
                              Ответить
                              • https://ballerina.io/learn/by-example/secured-service-with-oauth2.html

                                Запустил сервис, пытаюсь курлом обратиться, пишет sslv3 alert handshake failure.

                                Захожу в браузере безо всякой аутентификации, выдаёт SSL_ERROR_NO_CYPHER_OVERLAP ))))
                                Ответить
                                • значит, не смогли договориться о выборе шиферсюта
                                  Браузер одни хочет, а сервер другие

                                  Попробуй
                                  $ openssl s_client -connect ХОСТ:ПОРТ

                                  должно дать больше информации
                                  Ответить
                                  • ---
                                    no peer certificate available
                                    ---
                                    No client certificate CA names sent


                                    Походу, тестового серта нормального нет.

                                    А это ж вообще ок для своего АПИ ещё и OAuth провайдера прикручивать рядом?
                                    Ответить
                                    • Ну можно выдать самоподписанный, наверное.
                                      Браузер ругнется, но откроет.

                                      Для сравнения, вот как питушня выглядит для яндекса
                                      SSL-Session:
                                          Protocol  : TLSv1.3
                                          Cipher    : TLS_AES_256_GCM_SHA384

                                      Тут мы видим зацепку по TLSv1.3 со сьютом TLS_AES_256_GCM_SHA384


                                      Ок или нет зависит от твоих требований, наверное.
                                      Ты хочешь давать людям аутентифицироваться где-то их аккаунтом, созданным у тебя?
                                      Ответить
                                      • > Ты хочешь давать людям аутентифицироваться где-то их аккаунтом, созданным у тебя?
                                        - нет, просто проводить аутентификацию по access token. Это ок или гамнина?
                                        Ответить
                                        • Мне это кажется странным

                                          При этом

                                          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
                                          ?
                                          Ответить
                                          • Да, like a charm
                                            Ответить
                                            • Я бы тогда оставил oauth на потом. Кажется что важнее научиться делать что-то крутое)
                                              Ответить
                                              • Ну, basic я могу сделать с любым серваком на 1-2-3.

                                                Но видишь, что в балерину немало так запихнули всяких ништяков. Если бы я делал какой-то более-менее серьёзный бэк, можно было даже посмотреть в её сторону.
                                                Ответить
                                                • Вижу, да.
                                                  Но я не знаю хорошо-ли это иметь в языке, и не лучше-ли это иметь сторонними либами.

                                                  А то вот в PHP тоже напихали "всё, что нужно для веба" с известными последствиями.

                                                  С другой стороны, иногда лучше иметь что-то готовое в языке, чем восемь несовместимых либ версии 0.7a
                                                  Ответить
                                                  • Именно поэтому я за «PHP».
                                                    Ответить
                                                  • А как, кстати, это по-нормальному делается с basic, если есть отдельно сайт и API?

                                                    Будет отдельное API для реги/логинов и отдельное API для бизнес-логики? И они будут коммуницировать через прости господи куки?
                                                    Ответить
            • чем он лучше свифта? у вас там нет вебсокетов?
              Ответить
              • Мы щас про бэкенд говорим, ты в курсе? Свифт на бэкенде это такая же маргинальщина, как и эта балерина.

                Наверное, есть какие-то 3rd party либы, я не в курсе.
                Ответить
        • зато в стандартном «PHP» есть поддержка шаблонизации! не надо ставить никакие библиотеки!
          Ответить
    • > Ballerina is an open source programming language and platform for cloud-era application programmers to easily write software that just works.

      заржал уже на «cloud-era»
      Ответить

    Добавить комментарий