Ċ /* Ċ Ġ* Ġ ĠCopyright Ġ 2 0 2 1 ĠC urity ĠAB Ċ Ġ* Ċ Ġ* Ġ ĠLicensed Ġ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 Ġcom . curity . io Ċ Ċ import Ġorg . springframework . context . annotation . Bean Ċ import Ġorg . springframework . context . annotation . Configuration Ċ import Ġorg . springframework . http . converter . Form Http Message Converter Ċ import Ġorg . springframework . security . config . annotation . web . builders . Http Security Ċ import Ġorg . springframework . security . config . annotation . web . configuration . Web Security Configurer Adapter Ċ import Ġorg . springframework . security . oauth 2 . client . endpoint . Default Authorization Code Token Response Client Ċ import Ġorg . springframework . security . oauth 2 . client . endpoint . OAuth 2 AccessToken Response Client Ċ import Ġorg . springframework . security . oauth 2 . client . endpoint . OAuth 2 Authorization Code Grant Request Ċ import Ġorg . springframework . security . oauth 2 . client . http . OAuth 2 ErrorResponse ErrorHandler Ċ import Ġorg . springframework . security . oauth 2 . core . http . converter . OAuth 2 AccessToken Response Http Message Converter Ċ import Ġorg . springframework . web . client . Rest Template Ċ import Ġjava . util . Arrays Ċ Ċ @ Configuration Ċ class ĠOAuth 2 Security Config Ġ: ĠWeb Security Configurer Adapter () Ġ{ ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠConfigure Ġoverall Ġbehavior ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġconfigure ( http : ĠHttp Security ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġhttp . authorize Requests () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ant Matchers ("/ "). permit All () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ant Matchers ("/ error "). permit All () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. any Request (). authenticated () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. and () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. logout () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. logout Success Handler ( Custom Logout Handler ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. and () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. oauth 2 Login () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. token Endpoint () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. accessToken Response Client ( accessToken Response Client ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠĠ Ġ* ĠUsed Ġto Ġdecrypt Ġaccess Ġtokens ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Bean ĊĠĠĠ Ġfun ĠaccessToken Response Client (): ĠOAuth 2 AccessToken Response Client < OAuth 2 Authorization Code Grant Request ?> ? Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval ĠaccessToken Response Client Ġ= ĠDefault Authorization Code Token Response Client () ĊĠĠĠĠĠĠĠ Ġval Ġtoken Response Http Message Converter Ġ= ĠOAuth 2 AccessToken Response Http Message Converter () ĊĠĠĠĠĠĠĠ Ġtoken Response Http Message Converter . set Token Response Converter ( Custom Token Response Converter ()) ĊĠĠĠĠĠĠĠ Ġval Ġrest Template Ġ= ĠRest Template ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠArrays . asList ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠForm Http Message Converter (), Ġtoken Response Http Message Converter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġrest Template . error Handler Ġ= ĠOAuth 2 ErrorResponse ErrorHandler () ĊĠĠĠĠĠĠĠ ĠaccessToken Response Client . set Rest Operations ( rest Template ) ĊĠĠĠĠĠĠĠ Ġreturn ĠaccessToken Response Client ĊĠĠĠ Ġ} Ċ } Ċ