Hey Norbert, Also see here: http://smalltalkhub.com/#!/~JohanBrichau/Json-WebToken
;) Are you using cryptography package? Cheers, Johan > On 22 Jul 2016, at 10:17, Norbert Hartl <norb...@hartl.name> wrote: > > Hi, > > thanks to the inquiry of Sven I published an implementation of JSONWebToken > to smalltalkhub. It is available at > > http://smalltalkhub.com/#!/~NorbertHartl/JSONWebToken > > For those who don't know JSONWebToken or short JWT pronounced "jot" is a > token format suitable for authentication and authorization. The token consist > of a header, a payload and a signature. The header defines crypto algorithms, > compression and other things needed to read a token on reception. The payload > is called a claim set which is basically a dictionary with well-known and > custom keys. If we think about OAuth or OpenId the values contained map > directly to JWT claims. For OpenID connect which is an identification > mechanism on top of OAuth the usage of JWT is one of the building blocks. > > What are the advantages in using JWT? > > - it defines a header for encoding the content so it is quite flexible in the > ways compression and encryption of the key is done > - defines a payload which maps arbitrary keys and there is a set of > well-known keys that implementations of OAuth, OpenID can understand > - defines a signature that makes it easy to trust the information contained > or to give the token to someone who is not trusted > - token format is a single line string so it can be used e.g. in HTTP > authentication headers > > A problem JWT can solve: > > In our company we have a lot of little REST servers serving some duties. To > minimize the chaos I want to have a central authentication and authorization > point. If we assume having 20 images running and we look at typical way how > authorization works: > > there is image A (Authentication), image S (Service) und client C. Client C > wants to use the service S > > 1. client C authenticates and retrieves authorization information from A (or > from S which redirects him to A) > 2. client C hands out the authorization information to S > 3. S needs to check at A if the information is valid (client C could have > modified it or generated it) > 4. S grants C access > > Taking the assumption of having 20 service images, every image would need to > get back to A in order to check authorization information. The more services > images you have the more load it will put on A. In a JWT use case scenario > the same would look like > > 1. client C authenticates and receives a JWT containing authorization > information. The token is signed by A > 2. client C hands out JWT to service S > 3. S checks the signature of A and knows that the authorization information > contained is valid. > 4. S grants C access > > FYI, > > Norbert >