package Ġorg . j ord ens . sleep yb aby . auth Ċ Ċ import Ġorg . j ord ens . sleep yb aby . JWT Configuration Properties Ċ import Ġorg . springframework . security . config . annotation . authentication . builders . Authentication Manager Builder Ċ import Ġorg . springframework . security . config . annotation . web . builders . Http Security Ċ import Ġorg . springframework . security . config . annotation . web . configuration . Enable Web Security Ċ import Ġorg . springframework . security . config . annotation . web . configuration . Web Security Configurer Adapter Ċ import Ġorg . springframework . beans . factory . annotation . Autowired Ċ import Ġorg . springframework . security . core . Authentication Exception Ċ import Ġorg . springframework . security . web . Authentication EntryPoint Ċ import Ġorg . springframework . security . web . authentication . Username Password Authentication Filter Ċ import Ġjavax . servlet . http . HttpServletRequest Ċ import Ġjavax . servlet . http . HttpServletResponse Ċ Ċ @ Enable Web Security ( debug Ġ= Ġfalse ) Ċ class ĠSecurity Config Ġ@ Autowired Ġconstructor ( val Ġjwt Configuration Properties : ĠJWT Configuration Properties ) Ġ: ĠWeb Security Configurer Adapter () Ġ{ ĊĠ Ġoverride Ġfun Ġconfigure ( http : ĠHttp Security ) Ġ{ ĊĠĠĠ Ġval Ġentry Point Ġ= ĠAuthentication EntryPoint () Ġ{ Ġrequest : ĠHttpServletRequest , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse : ĠHttpServletResponse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġauth Exception : ĠAuthentication Exception Ġ-> ĊĠĠĠĠĠ Ġif Ġ( request . getHeader (" content - type ") Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġusually Ġmeans Ġthis Ġrequest Ġcame Ġin Ġdirectly Ġfrom Ġthe Ġbrowser Ġ( won 't Ġhave ĠJWT Ġheaders Ġso Ġprompt Ġfor Ġbasic ) ĊĠĠĠĠĠĠĠ Ġresponse . setHeader (" WW W - Authenticate ", Ġ" Basic Ġrealm =\" sleep yb aby \" ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġresponse . send Error ( HttpServletResponse . SC _ UN AUTHORIZ ED , Ġ" Unauthorized ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġtoken Authentication Service Ġ= ĠToken Authentication Service ( ĊĠĠĠĠĠ Ġjwt Configuration Properties . secret , Ġjwt Configuration Properties . expiration ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġhttp ĊĠĠĠĠĠ Ġ. authorize Requests () ĊĠĠĠĠĠ Ġ. ant Matchers (" /**/*. js ", Ġ" /**/*. css "). permit All () ĊĠĠĠĠĠ Ġ. ant Matchers ("/ api / login "). permit All () ĊĠĠĠĠĠ Ġ. ant Matchers ("/ api / ping "). permit All () ĊĠĠĠĠĠ Ġ. any Request (). authenticated () ĊĠĠĠĠĠ Ġ. and () ĊĠĠĠĠĠ Ġ. http Basic (). authentication EntryPoint ( entry Point ) ĊĠĠĠĠĠ Ġ. and () ĊĠĠĠĠĠ Ġ. csrf (). disable () ĊĠĠĠĠĠ Ġ. add Filter Before ( ĊĠĠĠĠĠĠĠ ĠJWT Login Filter ("/ api / login / jwt ", Ġauthentication Manager (), Ġtoken Authentication Service ), ĊĠĠĠĠĠĠĠ ĠUsername Password Authentication Filter :: class . java ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ. add Filter Before ( ĊĠĠĠĠĠĠĠ ĠJWT Authentication Filter ( token Authentication Service ), ĊĠĠĠĠĠĠĠ ĠUsername Password Authentication Filter :: class . java ĊĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ. exception Handling (). authentication EntryPoint ( entry Point ) ĊĠ Ġ} ĊĊĠ Ġ@ Autowired ĊĠ Ġfun Ġconfigure Global ( auth : ĠAuthentication Manager Builder ) Ġ{ ĊĠĠĠ Ġauth ĊĠĠĠĠĠ Ġ. in Memory Authentication () ĊĠĠĠĠĠ Ġ. with User (" user "). password (" password "). roles (" USER ") ĊĠ Ġ} Ċ } ĊĊ