package Ġcom . example Ċ Ċ import Ġcom . auth 0 . j wk .* Ċ import Ġio . ktor . application .* Ċ import Ġio . ktor . auth .* Ċ import Ġio . ktor . auth . jwt .* Ċ import Ġio . ktor . http . content .* Ċ import Ġio . ktor . response .* Ċ import Ġio . ktor . routing .* Ċ import Ġjava . io . File Ċ import Ġjava . util . concurrent .* Ċ Ċ fun ĠApplication . main () Ġ{ ĊĠĠĠ Ġval Ġj wk Issuer Ġ= Ġenvironment . config . property (" jwt . domain "). getString () ĊĠĠĠ Ġval Ġj wk Audience Ġ= Ġenvironment . config . property (" jwt . audience "). getString () ĊĠĠĠ Ġval Ġj wk Realm Ġ= Ġenvironment . config . property (" jwt . realm "). getString () ĊĠĠĠ Ġval Ġj wk Provider Ġ= ĠJ wk Provider Builder ( j wk Issuer ) ĊĠĠĠĠĠĠĠ Ġ. cached ( 1 0 , Ġ 2 4 , ĠTimeUnit . HOUR S ) ĊĠĠĠĠĠĠĠ Ġ. rate Limit ed ( 1 0 , Ġ 1 , ĠTimeUnit . MIN UTES ) ĊĠĠĠĠĠĠĠ Ġ. build () ĊĊĠĠĠ Ġinstall ( Authentication ) Ġ{ ĊĠĠĠĠĠĠĠ Ġjwt (" auth - j wk ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrealm Ġ= Ġj wk Realm ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverifier ( j wk Provider , Ġj wk Issuer ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalidate Ġ{ Ġcredential Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( credential . payload . audience . contains ( j wk Audience )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠJWT Principal ( credential . payload ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġrouting Ġ{ ĊĠĠĠĠĠĠĠ Ġauthenticate (" auth - j wk ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget ("/") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprincipal Ġ= Ġcall . authentication . principal < JWT Principal >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsubject String Ġ= Ġprincipal !!. payload . subject . remove Prefix (" auth 0 | ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcall . respond Text (" Hello , Ġ$ subject String !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġstatic (". well - known ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstatic Root Folder Ġ= ĠFile (" certs ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfile (" jw ks . json ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } ĊĊ