Creates Jwt Authentication Token and Consent URL by RSA key pair.
PM> Install-Package StoneBanking.Jwt
See more here: https://docs.openbank.stone.com.br/docs/guias/integracao/consentimento/
openssl genrsa -out myprivatekey.pem 4096
openssl rsa -in myprivatekey.pem -pubout > mypublickey.pub
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);
string authenticationToken = stoneBanking.CreateAuthenticationToken();
string authenticationToken = stoneBanking.CreateAuthenticationToken();
string accessToken = stoneBanking.CreateAccessToken(authenticationToken);
// 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();
string consentUrl = stoneBanking.CreateConsentUrl();
var metadata = new Dictionary<string, string>
{
{ "user_id", "user123" },
{ "other_data", "123" }
};
string consentUrl = stoneBanking.CreateConsentUrl(metadata);
Dictionary<string, object> decodedToken = stoneBankingJwt.DecodeToken(token);
Please, refer to CONTRIBUTING
Open a new Issue following our issue template ISSUE TEMPLATE
See in nuget version history
if you liked this project, please make a contribution and help to keep this and other initiatives, send me some Satochis.
BTC Wallet: 1G535x1rYdMo9CNdTGK3eG6XJddBHdaqfX