package Ġcom . net no vel reader . utils Ċ Ċ import Ġcom . auth 0 . jwt . JWT Ċ import Ġcom . auth 0 . jwt . algorithms . Algorithm Ċ import Ġcom . auth 0 . jwt . exceptions . JWT Decode Exception Ċ import Ġorg . apache . shiro . auth c . Authentication Token Ċ Ċ object ĠJwt Util Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠEX PI RE _ TIME Ġ= Ġ( 5 Ġ* Ġ 6 0 Ġ* Ġ 1 0 0 0 ). to Long () ĊĊĠĠĠ Ġfun Ġverify ( token : ĠString , Ġusername : ĠString , Ġissuer : ĠString , Ġaudience : ĠString , Ġsecret : ĠString ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġverifier Ġ= ĠJWT . require ( Algorithm . HMAC 2 5 6 ( secret )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Audience ( audience ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Issuer ( issuer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. with Claim (" username ", Ġusername ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. build () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjwt Ġ= Ġverifier . verify ( token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( exception : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Username ( token : ĠString ): ĠString ? Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjwt Ġ= ĠJWT . decode ( token ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġjwt . get Claim (" username "). asString () ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠJWT Decode Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġsign ( username : ĠString , Ġissuer : ĠString , Ġaudience : ĠString , Ġsecret : ĠString ) Ġ= ĠJWT . create () ĊĠĠĠĠĠĠĠ Ġ. with Issuer ( issuer ) ĊĠĠĠĠĠĠĠ Ġ. with Audience ( audience ) ĊĠĠĠĠĠĠĠ Ġ. with Claim (" username ", Ġusername ) ĊĠĠĠĠĠĠĠ Ġ. sign ( Algorithm . HMAC 2 5 6 ( secret )) ĊĊĠĠĠ Ġdata Ġclass ĠJwt Token ( var Ġtoken : ĠString ) Ġ: ĠAuthentication Token Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Credentials () Ġ= Ġtoken ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Principal () Ġ= Ġtoken ĊĠĠĠ Ġ} Ċ }