Autorisation distribuée avec des macarons

Identité, authentification, et autorisation

Identité

Qui suis-je ? (Qui je prétends être ?)



Authentification

Suis-je réellement celui que je prétends être ?

Autorisation

Qu'ai-je le droit de faire ?

Moyens d'autorisation

OAuth

Fun fact

L'auteur principal de OAuth 2.0, Eran Hammer, s'est retiré du projet et a demandé à ce que son nom soit supprimé de la spec.

Ceci n'est pas un tas de macarons

Ceci n'est pas un tas de macarons

Anatomie

Privé

Public

Exemple

> let m = create "random secret key"
                 "we used our secret"
                 "http://filecloud.com"
> inspect m
location "http://filecloud.com"
identifier "we used our secret"

signature "ACD99D7B0A278FB85657E9E4972F4BF69C78A1FBFE748FBBABCBA46EC0BED397"

Macaron nu

Restriction d'un macaron

  • Caveats

Caveats

Restriction d'un macaron par ajout de propriétés/contraintes.

Deux types

  • First party
  • Third party

Exemple

> secret m
"ACD99D7B0A278FB85657E9E4972F4BF69C78A1FBFE748FBBABCBA46EC0BED397"

> let m'= addFirstPartyCaveat "account = alice" m
> inspect m'
location "http://filecloud.com"
identifier "we used our secret"
cid "account = alice"
signature "48D0DA8B1191F503434EF9D01ECE5140F31C5AA3FD525E69DBCFC8CB34D59FD4"

> let m'' = addFirstPartyCaveat "account = bob" m
> inspect m''
location "http://filecloud.com"
identifier "we used our secret"
cid "account = bob"
signature "A729B1C69979EB4D40B04674C3E698D32FEB1DD0C88C0BC311EDC0B5258D3E49"

Signatures

HMAC chainés

  • L'ordre est important
  • On ne peut pas retirer un caveat (non-inversibilité de HMAC)
  • On peut en ajouter sans nécessité de connaitre le secret

First party vs Third party

First party

Third party

Privé

Partagé entre nous et le service tiers

Public

Vérification d'un macaron M

Implémentations

Bonus: Lecture

/