update to 15.0.0

This commit is contained in:
Bevan Hunt 2021-04-16 13:41:17 -07:00
parent 45ff26c460
commit c868cab517
5 changed files with 19 additions and 10 deletions

View File

@ -4,6 +4,14 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [15.0.0] - 2021-04-16
### Added
- username to verify endpoint and JWT
### Updated
- Updated README
## [14.1.2] - 2021-04-15 ## [14.1.2] - 2021-04-15
### Updated ### Updated

2
Cargo.lock generated
View File

@ -543,7 +543,7 @@ dependencies = [
[[package]] [[package]]
name = "broker" name = "broker"
version = "14.1.2" version = "15.0.0"
dependencies = [ dependencies = [
"anyhow", "anyhow",
"async-std", "async-std",

View File

@ -1,6 +1,6 @@
[package] [package]
name = "broker" name = "broker"
version = "14.1.2" version = "15.0.0"
authors = ["Bevan Hunt <bevan@bevanhunt.com>"] authors = ["Bevan Hunt <bevan@bevanhunt.com>"]
edition = "2018" edition = "2018"
license = "MIT" license = "MIT"

View File

@ -147,12 +147,13 @@ GET /verify
will return: `200` or `500` or `401` will return: `200` or `500` or `401`
200 - will return a biscuit public key, biscuit token, and JWT expiry for your microservice (use from_bytes to hydrate the key and token) 200 - will return a biscuit public key, biscuit token, username, and JWT expiry for your microservice (use from_bytes to hydrate the key and token)
```json ```json
{ {
"key": [136,133,229,196,134,20,240,80,159,158,154,20,57,35,198,7,156,160,193,224,174,209,51,150,27,86,75,122,172,24,114,66], "key": [136,133,229,196,134,20,240,80,159,158,154,20,57,35,198,7,156,160,193,224,174,209,51,150,27,86,75,122,172,24,114,66],
"token": [122,133,229,196,134,20,240,80,159,158,154,20,57,35,198,7,156,160,193,224,174,209,51,150,27,86,75,122,172,24,114,121], "token": [122,133,229,196,134,20,240,80,159,158,154,20,57,35,198,7,156,160,193,224,174,209,51,150,27,86,75,122,172,24,114,121],
"expiry: 1618352841 "expiry": 1618352841,
"username": "bob",
} }
``` ```

View File

@ -311,7 +311,7 @@ fn puts_event(event: Event) -> Result<()> {
Ok(()) Ok(())
} }
fn jwt_aud(scopes: Vec<String>, exp: i64) -> Result<Option<String>> { fn jwt_aud(scopes: Vec<String>, exp: i64, username: String) -> Result<Option<String>> {
let biscuit_root = KeyPair::new(); let biscuit_root = KeyPair::new();
let biscuit_public_key = biscuit_root.public(); let biscuit_public_key = biscuit_root.public();
let public_key_bytes = biscuit_public_key.to_bytes(); let public_key_bytes = biscuit_public_key.to_bytes();
@ -331,7 +331,7 @@ fn jwt_aud(scopes: Vec<String>, exp: i64) -> Result<Option<String>> {
} }
let biscuit = builder.build()?; let biscuit = builder.build()?;
Ok(Some(json!({"key": public_key_bytes, "token": biscuit.to_vec()?, "expiry": exp}).to_string())) Ok(Some(json!({"key": public_key_bytes, "token": biscuit.to_vec()?, "expiry": exp, "username": username}).to_string()))
} }
fn user_create(user_form: UserForm) -> Result<Option<String>> { fn user_create(user_form: UserForm) -> Result<Option<String>> {
@ -457,7 +457,7 @@ async fn create_jwt(login: LoginForm) -> Result<Option<String>> {
let aud: String; let aud: String;
match user.scopes.clone() { match user.scopes.clone() {
Some(scopes) => { Some(scopes) => {
match jwt_aud(scopes, exp)? { match jwt_aud(scopes, exp, user.clone().username)? {
Some(a) => { Some(a) => {
aud = a; aud = a;
}, },
@ -483,7 +483,7 @@ async fn create_jwt(login: LoginForm) -> Result<Option<String>> {
let aud: String; let aud: String;
match user.scopes.clone() { match user.scopes.clone() {
Some(scopes) => { Some(scopes) => {
match jwt_aud(scopes, exp)? { match jwt_aud(scopes, exp, user.clone().username)? {
Some(a) => { Some(a) => {
aud = a; aud = a;
}, },
@ -505,7 +505,7 @@ async fn create_jwt(login: LoginForm) -> Result<Option<String>> {
let aud: String; let aud: String;
match user.scopes.clone() { match user.scopes.clone() {
Some(scopes) => { Some(scopes) => {
match jwt_aud(scopes, exp)? { match jwt_aud(scopes, exp, user.clone().username)? {
Some(a) => { Some(a) => {
aud = a; aud = a;
}, },
@ -599,7 +599,7 @@ async fn jwt_verify(token: String) -> Result<Option<TokenData<Claims>>> {
let aud: String; let aud: String;
match user.scopes.clone() { match user.scopes.clone() {
Some(scopes) => { Some(scopes) => {
match jwt_aud(scopes, exp)? { match jwt_aud(scopes, exp, user.clone().username)? {
Some(a) => { Some(a) => {
aud = a; aud = a;
}, },