/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠRem i ĠGu ille met te Ġ- Ġn 4 dev . ca Ċ Ġ* Ċ Ġ* ĠLicensed Ġto Ġthe ĠApache ĠSoftware ĠFoundation Ġ( ASF ) Ġunder Ġone Ċ Ġ* Ġor Ġmore Ġcontributor Ġlicense Ġagreements . Ġ ĠSee Ġthe ĠNOTICE Ġfile Ċ Ġ* Ġdistributed Ġwith Ġthis Ġwork Ġfor Ġadditional Ġinformation Ċ Ġ* Ġregarding Ġcopyright Ġownership . Ġ ĠThe ĠASF Ġlicenses Ġthis Ġfile Ċ Ġ* Ġto Ġyou Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ċ Ġ* Ġ" License "); Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ċ Ġ* Ġwith Ġthe ĠLicense . Ġ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ċ Ġ* Ġsoftware Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ċ Ġ* Ġ" AS ĠIS " ĠBASIS , ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY Ċ Ġ* ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ġ ĠSee Ġthe ĠLicense Ġfor Ġthe Ċ Ġ* Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ġlimitations Ċ Ġ* Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġca . n 4 dev . ae g ae on next . core . security Ċ Ċ import Ġorg . springframework . security . authentication . Authentication Manager Ċ import Ġorg . springframework . security . core . Authentication Ċ import Ġorg . springframework . security . core . Authentication Exception Ċ import Ġorg . springframework . security . core . context . SecurityContext Holder Ċ import Ġorg . springframework . security . web . Authentication EntryPoint Ċ import Ġorg . springframework . web . filter . Generic Filter Bean Ċ import Ġjavax . servlet . FilterChain Ċ import Ġjavax . servlet . Servlet Request Ċ import Ġjavax . servlet . Servlet Response Ċ import Ġjavax . servlet . http . HttpServletRequest Ċ import Ġjavax . servlet . http . HttpServletResponse Ċ Ċ class ĠAccess Token Authentication Filter ( private Ġval Ġauthentication Manager : ĠAuthentication Manager , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġauthentication EntryPoint : ĠAuthentication EntryPoint ) Ġ: ĠGeneric Filter Bean () Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠAUTH _ HEADER _ SCHEMA Ġ= Ġ" Bearer " ĊĠĠĠ Ġprivate Ġval ĠAUTH _ HEADER _ SCHEMA _ LENGTH Ġ= ĠAUTH _ HEADER _ SCHEMA . length ĊĠĠĠ Ġprivate Ġval ĠAUTH _ HEADER _ NAME Ġ= Ġ" Authorization " ĊĠĠĠ Ġprivate Ġval ĠAUTH _ PARAM _ NAME Ġ= Ġ" access _ token " ĊĊĊĠĠĠ Ġ/* Ġ( non - Javadoc ) ĊĠĠĠĠ Ġ* Ġ@ see Ġjavax . servlet . Filter # do Filter ( javax . servlet . Servlet Request , Ġjavax . servlet . Servlet Response , Ġjavax . servlet . FilterChain ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġdo Filter ( p Servlet Request : ĠServlet Request , Ġp Servlet Response : ĠServlet Response , Ġp FilterChain : ĠFilter Chain ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġrequest Ġ= Ġp Servlet Request Ġas ĠHttpServletRequest ĊĠĠĠĠĠĠĠ Ġval Ġresponse Ġ= Ġp Servlet Response Ġas ĠHttpServletResponse ĊĊĠĠĠĠĠĠĠ Ġval Ġheader Ġ= Ġrequest . getHeader ( AUTH _ HEADER _ NAME ) ĊĠĠĠĠĠĠĠ Ġval Ġparam Ġ= Ġrequest . getParameter ( AUTH _ PARAM _ NAME ) ĊĠĠĠĠĠĠĠ Ġvar ĠaccessToken : ĠString ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġif Ġ( header Ġ!= Ġnull Ġ&& Ġheader . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaccessToken Ġ= Ġextract AccessToken ( header ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( param Ġ!= Ġnull Ġ&& Ġparam . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠaccessToken Ġ= Ġparam ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( accessToken Ġ!= Ġnull Ġ&& ĠaccessToken . isNotEmpty ()) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAttempt Ġauthentication ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġauth Ġ= Ġattempt Authentication ( accessToken ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSecurity Context Holder . getContext (). authentication Ġ= Ġauth ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ae : ĠAuthentication Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . authentication EntryPoint . comm ence ( request , Ġresponse , Ġae ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . authentication EntryPoint . comm ence ( request , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresponse , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠAccess Token Authentication Exception (" AccessToken Authentication Filter Ġexception ", Ġe )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġp FilterChain . do Filter ( p Servlet Request , Ġp Servlet Response ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġprivate Ġfun Ġattempt Authentication ( p AccessToken : ĠString ): ĠAuthentication Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . authentication Manager . authenticate ( AccessToken Authentication ( p AccessToken )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġextract AccessToken ( p Authorization Header : ĠString ): ĠString ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ( p Authorization Header . startsWith ( AUTH _ HEADER _ SCHEMA )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġp Authorization Header . substring ( AUTH _ HEADER _ SCHEMA _ LENGTH ). trim () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} Ċ Ċ }