Code Monkey home page Code Monkey logo

barong's Introduction

Barong

Build Status

Barong is a authentication service for microservice architectures using JWT standard. It's developped and maintained by Openware team.

Overview

It includes the following features:

  • Registration of users
  • Role based access control (RBAC)
  • Embedded KyC process
  • Integrated KycAID plugin
  • Mailing system: event based, support multi-language, secured by cryptographic signatures
  • Service accounts
  • Focused on user privacy: sensitive informations are encrypted in database using vault, masks are applied on fields in user API endpoints

Development

Prerequisites:

  • Ruby version: 2.6.6
  • Bundler preinstalled
  • MySQL preinstalled
  1. Install RubyGems dependencies
bundle install
  1. Copy initialisation files
bin/init_config
  1. Create database and run migrations
bundle exec rake db:create db:migrate
  1. Start local server
bundle exec rails server

Barong Levels

In the process of verification Barong assign different levels to accounts

  • Level 0 is default account level
  • Level 1 will apply after email verification
  • Level 2 will apply after phone verification
  • Level 3 will apply after identity & document verification

Useful links to documentation

Barong configuration

Troubleshooting

REST Admin API documentation

REST Management API documentation

REST User API documentation

API Keys creation and usage

Captcha policy overview and configuration

Setting up 2FA

Barong password hashing

Barong data encryption

License

Barong is released under the terms of the Apache License 2.0.

barong's People

Contributors

akulakovaa avatar alinetskyi avatar calj avatar chumaknadya avatar crm-skyach avatar dependabot[bot] avatar dnfd avatar dpatsora avatar ec avatar gfedorenko avatar jengjeng avatar josadcha avatar kengio avatar kite-bot avatar kohelbekker avatar liutenko avatar m-an avatar mkalenska avatar mnaichuk avatar mod avatar pkucherenk0 avatar shal avatar snyk-bot avatar vpetrusenko avatar vshatravenko avatar ymasiuk avatar ysv avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

barong's Issues

Adding 2FA auth. with Google Auth.

Once a user verified his phone with a 2FA,
he can activate 2FA with Google Auth.

We need to generate a seed for TOTP with a QR code
The user needs to scan or enter the seed
We need to ask him to clearly write down the seed on a piece of paper.

Then user can enter a 2FA code and it should activate the 2FA.

2FA signing service specs

OTP Sign in management api

Abiltity to receive and sign a JSON object if the otp code is valid

AppLogic

{
  uid: 'ID4242',
  otp: 432567,
  payload: "BASE64_ENCODED_JSON_OBJECT"
}

Validation steps:
1- Check UID exist
2- Check if otp is valid
3- Check base64 is valid
4- Check if payload is valid json after decoding

DO:

  • Sign the payload and return an RFC 7516 full json object using multi-sig-jwt gem

Validates otp for user(uid) and sign the payload with a JWT and
returns it a structure like:

     {
      "payload":
       "eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGF
        tcGxlLmNvbS9pc19yb290Ijp0cnVlfQ",
      "signatures":[
       {"protected":"eyJhbGciOiJSUzI1NiJ9",
        "header":
         {"kid":"2010-12-29"},
        "signature":
         "cC4hiUPoj9Eetdgtv3hF80EGrhuB__dzERat0XF9g2VtQgr9PJbu3XOiZj5RZ
          mh7AAuHIm4Bh-0Qc_lF5YKt_O8W2Fp5jujGbds9uJdbF9CUAr7t1dnZcAcQjb
          KBYNX4BAynRFdiuB--f_nZLgrnbyTyWzO75vRK5h6xBArLIARNPvkSjtQBMHl
          b1L07Qe7K0GarZRmB_eSN9383LcOLn6_dO--xi12jzDwusC-eOkHWEsqtFZES
          c6BfI7noOPqvhJ1phCnvWh6IeYI2w9QOYEUipUTI8np6LbgGY9Fs98rqVt5AX
          LIhWkWywlVmtVrBp0igcN_IoypGlUPQGe77Rw"},
       {"protected":"eyJhbGciOiJFUzI1NiJ9",
        "header":
         {"kid":"e9bc097a-ce51-4036-9562-d2ade882db0d"},
        "signature":
         "DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8IS
          lSApmWQxfKTUJqPP3-Kg6NU1Q"}]
     }

Create a light layout maybe using bootstrap

Layout should be very lite,
centered fixed, but mobile compatible.

We probably don't need a navbar header and footer

we need simple text links around the main content box

Make admin panel fixes

Admin panel fixes:

  1. Fixes regarding with tables styles;
  2. Fixes regarding with redirecting in the application page;
  3. Fixes regarding with notifications styles;

image 2018-02-20 09-49-01
barong admin 2018-02-20 10-42-15
image 2018-02-19 17-52-30
image 2018-02-21 14-28-23

Adding KYC

On the client side member needs to have ability to input information and upload a photo of document

It looks like this in peatio right now so we should have something similar
screenshot from 2018-01-18 15-34-02

And on the admin panel we need to add ability to verify a member

Create Account Migration

Fields:

  • Email
  • Password (encrypted)
  • role (small text string: admin, accountant, operator, guest, member)
  • level (unsigned int: 0,1,2,3,4)
  • state (active)

User has ability to get back to already passed step verification

Step to reproduce:

  1. Pass the verification to the step - "uploading documents";
  2. Get back to the step "verify your mobile phone" by clicking on browser button "Back"
    Actual result:
    User has been stuck on step "verify your mobile phone".
    Expected result:
    User can not get back to already passed step of verification.

Add .level field

Need to add field level for Account to display level of verification

Adding Phone verification system

Phone verification has 2 purposes :
1- Verify profile level=2 (email is level=1)
2- 2FA with an SMS check

Account has_many Phones

Each users can add and verify several mobile phone numbers
each one of them will need an sms confirmation from twillio to be enabled

Any phone can be used for 2FA challange.

We need to parse phone to list Country in Phones tables.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.