Giter VIP home page Giter VIP logo

stone-banking-jwt's Introduction

NuGet Downloads NuGet Version

StoneBanking.Jwt

Creates Jwt Authentication Token and Consent URL by RSA key pair.

Install via NuGet

PM> Install-Package StoneBanking.Jwt

Stone Banking Application

See more here: https://docs.openbank.stone.com.br/docs/guias/integracao/consentimento/

Creating you RSA 4096 key pair

openssl genrsa -out myprivatekey.pem 4096
openssl rsa -in myprivatekey.pem -pubout > mypublickey.pub

How to use

Configuring with your application credentials

Add in appsettings.json

{
  "StoneBankingJwt": {
    "PrivateKey": "myprivatekey.pem",
    "PublicKey": "mypublickey.pub",  
    "ClientId": "f7158598-fcbe-4810-98f5-08d512f42977",
    "Environment": "Sandbox",
    "AuthenticationExpiresInSeconds": 900,
    "ConsentExpiresInSeconds": 300,
    "ConsentDefaultRedirectUrl": "https://mysite.com/stonebanking/success"
  }
}

Notes:

  • PrivateKey: you can change this var with key content. e.g. "-----BEGIN RSA PRIVATE KEY-----\nMIIJKAIBAAKCAgEA..."
  • PublicKey: you can change this var with key content. e.g. "-----BEGIN PUBLIC KEY-----\nMIICIjANBgkqhkiG9w0BA..."
  • Environment: Possible values Sandbox Production

Add in Startup.cs

services.AddSingleton(configuration); // register IConfigurationRoot before
services.AddStoneBankingJwt();

or

services.AddStoneBankingJwt(configuration);

or ignoring appsettings.json

var settings = new StoneBankingSettings
{
    ClientId = "xxxx",
    PrivateKey = "key.pem",
    PublicKey = "key.pub",
    ConsentDefaultRedirectUrl = "https://mysite.com/redirect"
};
services.AddStoneBankingJwt(settings);

without IoC:

var settings = new StoneBankingSettings
{
    ClientId = "xxxx",
    PrivateKey = "key.pem",
    PublicKey = "key.pub",
    ConsentDefaultRedirectUrl = "https://mysite.com/redirect"
};
IStoneBankingJwt stoneBanking = new StoneBankingJwt(settings);

Creating Authentication Token

string authenticationToken = stoneBanking.CreateAuthenticationToken();

Creating Access Token with Authentication Token

string authenticationToken = stoneBanking.CreateAuthenticationToken();
string accessToken = stoneBanking.CreateAccessToken(authenticationToken);

Creating Access Token with Auto Managed Authentication Token Creation [BEST USAGE]

// this will create a token and reuse it during token expiration time
// 60 seconds before expiration, next call will generate a new access token

string accessToken = stoneBanking.CreateAccessToken();

Creating Consent Url

string consentUrl = stoneBanking.CreateConsentUrl();

Creating Consent Url With Metadata

var metadata = new Dictionary<string, string>
{
    { "user_id", "user123" },
    { "other_data", "123" }
};

string consentUrl = stoneBanking.CreateConsentUrl(metadata);

Decoding Jwt Token (created with your RSA key pair)

Dictionary<string, object> decodedToken = stoneBankingJwt.DecodeToken(token);

How can I contribute?

Please, refer to CONTRIBUTING

Found something strange or need a new feature?

Open a new Issue following our issue template ISSUE TEMPLATE

Changelog

See in nuget version history

Did you like it? Please, make a donate :)

if you liked this project, please make a contribution and help to keep this and other initiatives, send me some Satochis.

BTC Wallet: 1G535x1rYdMo9CNdTGK3eG6XJddBHdaqfX

1G535x1rYdMo9CNdTGK3eG6XJddBHdaqfX

stone-banking-jwt's People

Contributors

leogojorge avatar thiagobarradas avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

leogojorge

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.