Slide 1

Slide 1 text

My first Rust crate: jwtinfo Luciano Mammino - @loige 06-04-2021 loige.link/rust-jwt

Slide 2

Slide 2 text

Let me introduce myself...

Slide 3

Slide 3 text

Let me introduce myself... I'm Luciano ( πŸ•πŸ) πŸ‘‹

Slide 4

Slide 4 text

Let me introduce myself... I'm Luciano ( πŸ•πŸ) πŸ‘‹ Senior Architect @ fourTheorem (Dublin )

Slide 5

Slide 5 text

Let me introduce myself... I'm Luciano ( πŸ•πŸ) πŸ‘‹ Senior Architect @ fourTheorem (Dublin ) nodejsdp.link Co-Author of Node.js Design Patterns πŸ‘‰

Slide 6

Slide 6 text

Let me introduce myself... I'm Luciano ( πŸ•πŸ) πŸ‘‹ Senior Architect @ fourTheorem (Dublin ) nodejsdp.link Co-Author of Node.js Design Patterns πŸ‘‰ Connect with me: (blog) (twitter) (github) loige.co @loige lmammino

Slide 7

Slide 7 text

We are business focused technologists that deliver. | | Accelerated Serverless AI as a Service Platform Modernisation @loige Do you want to ? work with us

Slide 8

Slide 8 text

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX VCJ9.eyJoZWxsbyI6IlJ1c3QgRHVib GluIn0.EhyqhHxv1EPe2JAMzCIHZ0 blyZRN3nsoVHuhwF8DdM0 @loige Meet a Json Web Token (JWT) loige.co/whats-in-a-jwt

Slide 9

Slide 9 text

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX VCJ9.eyJoZWxsbyI6IlJ1c3QgRHVib GluIn0.EhyqhHxv1EPe2JAMzCIHZ0 blyZRN3nsoVHuhwF8DdM0 @loige

Slide 10

Slide 10 text

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX VCJ9.eyJoZWxsbyI6IlJ1c3QgRHVib GluIn0.EhyqhHxv1EPe2JAMzCIHZ0 blyZRN3nsoVHuhwF8DdM0 @loige

Slide 11

Slide 11 text

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX VCJ9.eyJoZWxsbyI6IlJ1c3QgRHVib GluIn0.EhyqhHxv1EPe2JAMzCIHZ0 blyZRN3nsoVHuhwF8DdM0 @loige Header: { "alg": "HS256", "typ": "JWT" } + JSON Base64Url

Slide 12

Slide 12 text

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX VCJ9.eyJoZWxsbyI6IlJ1c3QgRHVib GluIn0.EhyqhHxv1EPe2JAMzCIHZ0 blyZRN3nsoVHuhwF8DdM0 @loige Payload: { "hello": "Rust Dublin" } + JSON Base64Url

Slide 13

Slide 13 text

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpX VCJ9.eyJoZWxsbyI6IlJ1c3QgRHVib GluIn0.EhyqhHxv1EPe2JAMzCIHZ0 blyZRN3nsoVHuhwF8DdM0 @loige Signature: just some bytesβ„’

Slide 14

Slide 14 text

This lovely stuff is used to "transfer claims" which means "for security" ... which means "I want to look into these every time I see one!" @loige

Slide 15

Slide 15 text

Meet jwtinfo cargo install jwtinfo @loige

Slide 16

Slide 16 text

DEMO /me prays the demo gods πŸ™ @loige eyJraWQiOiIxZTlnZGs3IiwiYWxnIjoiUlMyNTYifQ.ewogImlzcyI6ICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY29tIiwKICJzd WIiOiAiMjQ4Mjg5NzYxMDAxIiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9uY2UiOiAibi0wUzZfV3pBMk1qIiwKICJleHAiO iAxMzExMjgxOTcwLAogImlhdCI6IDEzMTEyODA5NzAsCiAibmFtZSI6ICJKYW5lIERvZSIsCiAiZ2l2ZW5fbmFtZSI6ICJKYW5lI iwKICJmYW1pbHlfbmFtZSI6ICJEb2UiLAogImdlbmRlciI6ICJmZW1hbGUiLAogImJpcnRoZGF0ZSI6ICIwMDAwLTEwLTMxIiwKI CJlbWFpbCI6ICJqYW5lZG9lQGV4YW1wbGUuY29tIiwKICJwaWN0dXJlIjogImh0dHA6Ly9leGFtcGxlLmNvbS9qYW5lZG9lL21lL mpwZyIKfQ.rHQjEmBqn9Jre0OLykYNnspA10Qql2rvx4FsD00jwlB0Sym4NzpgvPKsDjn_wMkHxcp6CilPcoKrWHcipR2iAjzLvD NAReF97zoJqq880ZD1bwY82JDauCXELVR9O6_B0w3K-E7yM2macAAgNCUwtik6SjoSUZRcf- O5lygIyLENx882p6MtmwaL1hd6qn5RZOQ0TLrOYu0532g9Exxcm- ChymrB4xLykpDj3lUivJt63eEGGN6DH5K6o33TcxkIjNrCD4XB1CKKumZvCedgHHF3IAK4dVEDSUoGlH9z4pP_eWYNXvqQOjGs- rDaQzUHl6cQQWNiDpWOl_lxXjQEvQ

Slide 17

Slide 17 text

Source code github.com/lmammino/jwtinfo @loige Give it a ⭐ , will ya?

Slide 18

Slide 18 text

I got a review from 🀩 Tim McNamara loige.link/jwtinfo-review @loige So many things to fix here...

Slide 19

Slide 19 text

... and I learned a lot of cool stuff. For instance, if you want to accept "anything string-like" @loige ... yeah, I just wanted to put some actual Rust code in this talk!

Slide 20

Slide 20 text

... or convert a string to anything else! @loige ... yeah, some more Rust code in this talk!

Slide 21

Slide 21 text

THANK YOU! πŸ˜‹ @loige Special thanks to for starting the Rust learning journey and building jwtinfo with me! @StefanoAbalsamo loige.link/rust-jwt Cover Picture by on Silas KΓΆhler Unsplash