From ae394f5ae075988f520c3dfee764ccff87451ad6 Mon Sep 17 00:00:00 2001 From: lcarlyl Date: Thu, 21 Apr 2022 18:34:10 +0300 Subject: [PATCH] add google oauth2 --- google/README.MD | 33 ++++++++++++++++++ google/build.gradle | 22 ++++++++++++ google/docs/1.png | Bin 0 -> 48387 bytes google/docs/2.png | Bin 0 -> 43179 bytes google/docs/3.png | Bin 0 -> 21159 bytes google/docs/google.svg | 9 +++++ .../oauth2/google/ApplicationGoogle.java | 13 +++++++ .../oauth2/google/config/MvcConfig.java | 15 ++++++++ .../google/config/WebSecurityConfig.java | 24 +++++++++++++ google/src/main/resources/application.yml | 17 +++++++++ .../resources/templates/includes/foother.ftlh | 2 ++ .../resources/templates/includes/header.ftlh | 9 +++++ .../src/main/resources/templates/index.ftlh | 7 ++++ .../src/main/resources/templates/secret.ftlh | 3 ++ settings.gradle | 1 + 15 files changed, 155 insertions(+) create mode 100644 google/README.MD create mode 100644 google/build.gradle create mode 100644 google/docs/1.png create mode 100644 google/docs/2.png create mode 100644 google/docs/3.png create mode 100644 google/docs/google.svg create mode 100644 google/src/main/java/example/oauth2/google/ApplicationGoogle.java create mode 100644 google/src/main/java/example/oauth2/google/config/MvcConfig.java create mode 100644 google/src/main/java/example/oauth2/google/config/WebSecurityConfig.java create mode 100644 google/src/main/resources/application.yml create mode 100644 google/src/main/resources/templates/includes/foother.ftlh create mode 100644 google/src/main/resources/templates/includes/header.ftlh create mode 100644 google/src/main/resources/templates/index.ftlh create mode 100644 google/src/main/resources/templates/secret.ftlh diff --git a/google/README.MD b/google/README.MD new file mode 100644 index 0000000..e9cb080 --- /dev/null +++ b/google/README.MD @@ -0,0 +1,33 @@ +# Spring Boot + OAuth2 Google + +Spring Boot +Discord + +## Перед запуском +### Создание OAuth +Для запуска понадобиться обзавестить своим **Google OAuth**. + +1. Переходим в [Google APIs console credentials](https://console.cloud.google.com/apis/credentials?project=silent-fuze-322306) +2. Создаём новый OAuth Client ID + ![](docs/1.png) +3. Заполняем обязательно следующие поля + - **Application type**: `Web application` + - **Homepage URL**: `http://127.0.0.1:8080` + - **Authorization callback URL**: `http://127.0.0.1:8080/login/oauth2/code/google` + ![](docs/2.png) +5. Получаем **Client secret/Client ID** + ![](docs/3.png) + +### Настройка Spring +Открываем файл `src/main/resources/application.yml` и указываем там **Client ID** и **Client secrets**: + +```yaml +spring: + security: + oauth2: + client: + registration: + google: + client-id: 704750524716-tnqc2islqao8tobjbrgvtte0fq8o39uv.apps.googleusercontent.com + client-secret: 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 +``` diff --git a/google/build.gradle b/google/build.gradle new file mode 100644 index 0000000..b7fec0f --- /dev/null +++ b/google/build.gradle @@ -0,0 +1,22 @@ +plugins { + id 'org.springframework.boot' version '2.6.6' + id 'io.spring.dependency-management' version '1.0.11.RELEASE' + id 'java' +} + +group = 'example.oauth2' +version = '1.0-SNAPSHOT' +sourceCompatibility = JavaVersion.VERSION_11 + +repositories { + mavenCentral() +} + +dependencies { + implementation('org.springframework.boot:spring-boot-starter-web') + implementation('org.springframework.boot:spring-boot-starter-freemarker') + + implementation('org.springframework.boot:spring-boot-starter-security') + implementation('org.springframework.security:spring-security-oauth2-client') + implementation('org.springframework.security:spring-security-oauth2-jose:5.6.3') +} diff --git a/google/docs/1.png b/google/docs/1.png new file mode 100644 index 0000000000000000000000000000000000000000..b23b7faf92fde5c073bb7a76b0321f3880377980 GIT binary patch literal 48387 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

(0QP?nw2G!)!AAg$jS=)NUO=JCZ&L>4dOLv)7 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 literal 0 HcmV?d00001 diff --git a/google/docs/2.png b/google/docs/2.png new file mode 100644 index 0000000000000000000000000000000000000000..824f0743e8f67b9a64a40b5d821246180984b091 GIT binary patch literal 43179 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 O&q&|&WY+QX;r{|3c*!>a literal 0 HcmV?d00001 diff --git a/google/docs/3.png b/google/docs/3.png new file mode 100644 index 0000000000000000000000000000000000000000..c7cf2fe326d087ac77fe27f4258b35a442af4cc6 GIT binary patch literal 21159 zcmcG0WmFzbmn{+?I0Ojp5Q0N+cXxMpcL?smHMl2OaCdiicXxM(+vNRb=KC}Eu32j? zKN_B*yQ=!ssZ)FJI`xFeN{hh5V8MWZfWV813d)0kfPDY~0Uh}W29%uIToZtR$XkmE z@+p4TK52n>RGLYD^PF2&Q?sf}d8YjFqivMnA#pO-M>Y1WBOwy!_y^KZp@NCoB5HiWF){J!n&;BnjL z`pUN3Wc6L!yF=ZUu{HFR;Q^$R{MSWXU-uDs9 zZBCt081nn~?%$|iANIYhtvyBF&PXZuB!hRD^+pHdqp0hx1a(+`4piZ5EU>W>P65NP zg4>rWPD`Hrvci2@*5}RT**&M3c`x8xG2M8sk;REgZZjUW%Xx8S(ZU*I(T4MYzn0u$uGDjUP}h1f8#C5+uL%rlea^%4Rb;vb zb42RHJq6qOSf(Q8!_It}AWZAqv;?i^MGv~MEpT5V&6`f2cbWTvmoc`oR-jwmz z_i}bAsXi@w)f#gpE2|UqOqV1+pj7kF@uB;B@=A=inBn293MY zK&>s{%AmpTx0q|vf8PutQ!dpsI|cl6oPz+GfY4TF-Qb^3x@flD>pZXEbqQb~ytIKN z?a1JdYoTbA!|6aJZcrqkBp+hXJ~@zqfcUI}7J+oXmok-NaDM$)ljSgi<`x#2-#4NE zb&nVbwC~k8=HDBsNkC5pOpw5VzSWe&tV0_Df6Ua&5KMW0--iP#djJ2?S6d5mpr7iZ zU}jIsQ+){2=r|kF}*F;Sy+dtpDqAAI4uQAsxP#ogd{iO-@BooO+}$19za}a<}Gd zQ&MVdm@RyHA^WdmAlBsrNqhnbe(H};RM%XJ5SI>)*pE(#GCoxn+0+~CaFpO0v-03N z^~jOk*P~JImO4h8B_bpFccJ+k-jJ0|`TJJ?JRpW`&kd!793tHvh0WWVzr66o$;TtG zXupoI6CR+Z>}{9`P0-20Qf={{NfHLrAFnWCXA+!Uf2e5SPZ@BG|HcP7nC43Yx{p>4 zV<-%lauj-%hQi>svmO65S}UO;a&#fJW01ou2o-;Zn2bNIf?!7^{zGv#wTUBehC?;N zjD!F(nQTgF@B`*o2gukDSt>{<{v!CE)61@Wj+W#x^0KUy`!-PiF@uB-WkLq$5|mqs!5!y#D0zwx;!`sXi8q@GT2!9k)yRN(O9lQ?KW z?!auN2R=JQNeo>Q?d6>CShO{mv)0^}l6Skb#%v`$YVAEIRerC- zE4AGgHTl6mnpbwTL=?km@B1nU&wi@{XN;d1zm#Z;t3A6OI*LbG)7E7vAU%ong zg3sRjjoWUjogq1Si~-{Fp&TYh2Ts%F+ppQ{&Cr*s$EDH5$cU-5s)bZ|TXsGsQGU2i zsl|Rq8^ax%yV1PJJaz467`Qbj^;xNeM?0edhgH#IjN(_CJ7q*lZc~Wvm|{iFp16?EMt;cNb!s?(a;z>XToP; zu36N!p&4(zQ|U@4PEe`rk%~g&WdFm+oNyOvi6iQs{L>tRB`!lsY$d?cO|QQF^2^4ffn=b*Vy! z+qFrPt@dftXEjon|C7W6bsm9O0uKo_vqr)zzl-VoWc7TkC5DSOX7j~-EC~n!v?y4k zGMonk_}s;lNT9MoKbsA`h9sdd@}WDL-i4&!0mf&RU$V_U9Rb(-&_`ymido~jt0_tt z>fi6=1e{2FKli4{#KNOY(#!(Z6k87kl|q`Nggj-#H0kKEA8C&;EJaEy#5zs#WI+o| zyZT(!gQ|~e=MgTUA7S8kFyG@t8?BDf63z52DH@MUk4q|+%3D+&C$$V`son}a=&JOM zz0O1`ZtjNxde~1?f5HE3h!=>H(O&enDm7gy2vja87om=xBZrFcgRT#BEaE+`mxr z;Bp7^%X4{P2wq*EaId-Nud#9Pw?4J*u6otRux_m;qe}Lb*F&piR*ge{A*qO4(}#&Q zd=Qx2O!cCMz2UxJ^=;?ss%50ECBg1ZSAjIiNchJ(9nG#+yQAqAr_BVhu3%~o_8Fg( z>fq^pTTa8);MxqE61xv^i{EW;ph~OzwaJZnuga3@Jt$pmYrC|w7e0nTCi3<9~ZT*aiugQ zcDT+eIF$SkK2T+-KA!d2eD7`8;jviveB%F2pKz&hgh^6xsS#^(SoA|8F@vR4oy+lf zbrt{Q%A4z@;%X@(jp144wCW?SludomvgDNd?lx90B}@hb2mx0;gTDv~u)2JCF3Fvs zl(?=-_)@{Tt}Q1UneE!cdiS8Pr=R`wY?jGAiFvQ->q1VH;<;e7@Y7W$sSfs{g?o6< zVr9?ZN>~{J4=0igQkq{W__pWe{8e@ztc)J?xH40T`1&UbTaqJr#3c~G=L)al0SN1U?7an;&_a~WV zdN1jn%J{Tk&=)Dc7B3f(DOuYvcjXNRW-yTJmRSln1gkmo`5S+>2&|3U-j-BNCZwIS zD|SAdX;7=ILl3XtYKW_>_{;(7mWKN_OUAw%6ZHbBPqL8BeuTizEIkwgS5Q1B$-Ra) z(%NYey-hi9XZaunA?;v{7GAQLDQ@75hKURw=n6NoRuKCfQ=w1$LkEuaA#!#rRUAs_ zO1w5_FH2juL!m=^A>1Ch>evr*glZPXsGKhq07{p_%BSYJ2&=2>j<;S$?!&wx?;S}G z{+SGEszy(fl9_o{WP7}fF740BP=XIESb7|Xq1g|0)>h~z?q^it(%L4cXT6#p^ht69 z4BApG=@lW>LRC=GYo-WY9JeYFEuBjigN{^C5=7GF&{c)K?Cd9MOgk)%iBfPRH}L}D z8{iYoEt+|$1RMzJ%)=!Y+rOWA6DxCaFmH@u7z2K8{V|(@GPD~2mqOB3GuiMB@{i-& z(PraQnW&Kzh*X8sI9N$=?A3b6<;XoyoUv8S^JB)QR!hx_HXr8QlP7{~t5?2m+R*DB0d#w~n z%I)_;=Z(}(>1u(lQ#!Y2C$pN4^ugN^Mcnf=>?z99{d$Sx6}cp|?54BYef6)qUK4hd z>iYD8LyZHj)^W31RggltDhQ#zOvq%aj>@bH%0~2IJprM!_7Tbbc-7avR zL1|9|gOFqmC5(SuEcp3Yxk`0NOge4S2ud_eu8Gg~EMP3oY(#r=joK7j43F`?Of1u;3lQj>ojYB*v6*H9^Gz5hg-%w zeUrWD9#FB!@Gj~Z(ya7W_KvjX(x)#zL4w^g^-(~6^!7UNoAeNY#|ey%uj*B*f+kC< z7Coc0?ugt{Wafg|vKdd$eX!TZn?%K{O;Jz%H;Wk-O$5!JKN8;Eq0Bh8l1#@qe#GG= zGtF`l{p3PjG_mL;;1;7TU1N2ErXE$vIF_>N_XO=qy}Y!@et#-qBjpM&-1CUcxo#{Qy?1$TU2ml1vS4Rp0ALSer%zMv zQMoK;Dl0gf*StE$32|wBT01#Kv_p}T9trLlD1%V0tQG?Iu~p2zEtS}L#t@+$R}Kv% zogXA@#0F;()LAni7|SpcMY=q($bV*LdAt75jXG*zgxTGh@v_~yMplvIO^Hv$M!$N2 zKYW2Pg9*&dtNl_@>ngff%MTe<%w*q*_d96(4qLA!^VVx0iPMKKEDV!&K!2&xT9vj^ zrDu_{`hz8W$$4iWi*MM}NE{d|XtR@Uexb206juzZQ1p}^-_Fz0UE-8rm4`P}fk9M* z?KpgQJIgc7`qB}!-En`n6iKl}QjfmAa<+hKDJH9bh|P#+P*CE9dzKRj8ZmQi)&R4V zY5LSKkGN9>QvfZS1kPKbpUXuoO2q zX6;a*k3ON2d-vX+<6$2m;g*~gr+FBiTN5?l48vBODMk&2&4Hgt6v5m|9;LFUJvPt? zlwmtyJx`6~k`~O)P#OjE{%it}>K0;o`8lZ2YVZ<0R>!08M83*ZJ3B zMTEkItG-JmEGua%x+1x2cF=GgmU_FdcBp~u32kR#2sV6KWb%*Bv#pq$o+O!NuFJEc z%sJ^-Cnnn`?3~ML6)4qWh^Alowea*y;2h*~MR2Py_ikr*9Vw(Kp=G|d6nio(jf#^{ zeqq5qFx0@p6rNV|JBnzUK(-E30z76@GqS1oFS1W{ALU~n+~Aeg=dxQ-FU+j&^00$_ z&vh~oC10lDaYx}%DxRG0|8a)u;wO_mW^jWOf`qs!Le0($hVu-tP-8?&N@{&5^aQP| z+e>=S<#GmLh(`6RUJl{!E;5qp#tq0lS~b;-0TUzCQb@{bPDhfAPcV0pAIV(rXrfaG zt!cLDP5O})<`+BgN9|5l=lfmiqPa@3g(R{J-YUhkON5v8meGlDLmM58Rg+!*6iaRB zl@yeSSz1}kEUAkw#ncE%PYdw(@E(!%t_aq8nR5AP5@{#eQJkWYCzl%0*5)4lxc&`( zm7W@t!xCX+a)P#KW^G|AWUs$2c@yCrExjBQ)U6+#_3^}=a)nfM&#!Bc%(&l(*kOBt zdY~8sBpQqak}neir2i`t_;^b+Y=v(hI|v9Sq&`R^^5{*UX(qidnJWlLGEe~g{O9Gr z!DNC_Nd6x(MIb;xY&!tp8jha9s*@}l|DQ#|aA~x}JE+vLW&GPVbP%mj9{`={DH@aB zR{J8~Q>V;eh35{pMYffR;of(;aZ~gSnsjstF)VYEJB4zM*wn*z^fg|6Xija*I~Nr| zihRc1?XE?xj27+F<_}i&7`2Ew>}TO4*eWe$6Azz)pUVfNF%y_0=Bk!jgDsZ1^ zwVO>Rh#XAVO>O4oPCO}x?Pj^t&eSpRm**8`$B;o!;%_s;>O6Cm-w@zYUWL>FQ|Z0a zog6hdX{y$aCSihuKj{RxtvBEWyK{*-Se&vcW!h#onV9pf@<+&bl)1nIU;uQyU-Ws> zQ+iDxr`=uRjy4bV-FnWRFg?Ed@@fHDTQ;4dV-oQc4=Cgypx=lg?bCZbN88^pH`bx# z!SxAv~ckwRvw+Xew|3C*?31 z#c?nxOxgiFDH>DqEtTT0fSN0j$o+iYwL7Xv4+{%04u+&x79~+I(T{)G1~L7MP2pd5 z0cG&Grufc1coBQA+X}$mHB7wl18)V0cL(Oen0m{Dd8Zm~bnh+xm3MXD8~LlScDz^m zw?hAaDs1#i35h8>T{Tc|LLYgmZMMHoGaF&ti)^hl(y20&ig2v8XP-Kp?WRcSMJV4p zEh0j(kUSzCIn_|%QC-kgXYl{qaCG#p3VP(5j!vX7QA}}}hr{K!E~Ru022u|Dkz<~x zaOP{2-%#}lC}D4eZVT7cd2CVv%-alMSp zNT6rVS~+K|s9&6DExQsz(irQxe{(;@#2BG2bjv=_)NtssP!ejGu-G%pc)Onby}y&F zqb>Uwlr$oZh~hsSYYy%>STz4lj0sdj9r|EGKibEzON@Qy5Iw!hX7s!B=sd1B`{JbY z>l7mMnX3H#@gX%m8|%|{0$bPYiuZ~|P&KPF0VLmW=dI@GjAXd6j2cQR6$gs%F@D*d z*Q@I-Qw+UCM!H?Y=l;2?hoGynpsFFZpVrA*M0?n3I!}GBP2mgo10ybPTXU6PZLf#k ziVR1@m@}4`&hX#zQM%~4Po&pNgwePXYN>l1YRKSR}S z9vqVOMw>08u!HWP2|mc5VN$YRD2+Uzeg zPaP|RA%c+|E;j&86Z3LnV^ zXID<6enhNkYh4v@y-+@0t^J62%EfqoIyDKM9X@DtTMb^ba-U*Z5T*S)LHIQN1X89X zdb=M#nekPd9vsy2#C^6Mb1c6T%v@kgHEpaYYdBe+Fk&(8+Z0b*5I*hh`=evwF2i&4 zqRApYRa@yR*YM4V>D6_$#`=2K^G+K({%67s&**5YU9#jwMMy*Cu$9QJ7Is77^^CCz zVfbdsPwX-DZp7Vb3U=Gx#Wzlm;)6756N}l$`pHE8;`m~vE3=+Q{5@f)gqFkV4I6L8 zc4&^Lvc?^V{0~rxQp4~F+BF~QtA`NSp_}OpbQzImlQ2I-CDpWIEe>bxWV^q<^dl;J zUz#nMkhw60XS)7AMWGlTuvt@T+r2iiqTZWR!f)}Cn+mcbWB_l%NOSjijoHlqI#Mfx z$oQ(eTcOh?(Ry(`!VtB3G5Bz0<;_-pdVkY)uWOTv>c15AdXy(4%~X*{ZUuziPha;8M14s$s{0@%WMRR8V&;OOr+xL&+9Vq4d}gvJd}|M`MU&}# zwEo=CFF&g-pS*gbc_%9pi+MMOWEAt35 z;FV++`gROHK)A^b3gJ^wnDV?^VR77-#Y-HAd?Crkq|us|8vW*8;ryAED>hxjlCqdA zMIY&Cw-p~@FC`M!+O|wG&HY$-^=bMp+gqh}2;S~7swna8l&k4N<_<1rAhfRi;LB;8 z&H6}98QTCe%lQBSQ~n?Qp{8qru}OReKDvBm7Vh5s1SVjl@-V)Wo0b?BrIaC)x9>1` zokbbb`btxQdaIiBqDzeS&_enWC(yA-!D;ijzPw#^;KM&P;fH5Fcs)eQNGqI-)ugem z9KxM&5JHwXg+(rx?@y1qh2AfSdOB17V+at{$iTl)bYjI z^I>B4=;MHa%@yWEvyIw7d0T$C=@;)iV^87LJakHJx)$Zzv=TLJeIyJ0v&0(n)^?_f z8W`hsF7L~HG|Tz&E#zl%F#<@!n}}Z_z6{KF$`RXZh#910&kF-AG9%A36Z8yG;mMx% zE6@%4Q_%ETwOmccJr`nccXB4le@?d)tXc!Vyfz&4jAe1xi6}pGMG_L?d$rJB+k17@_)_jNfMLGc0LJz?o2ap0tdTT3D6YX&7`}*Y5gDSPwIEB`4ZF>$;U#vMp6fQ$fxaK7c)e)sx^9 zSwMe)ieIcD_~MJ9dQ`NPiTS6Zq3>bWfsFe(tZHWRu~*?N>W`^MS&4%FdE!*W9=Exj zWTw}+qFdtDU3zkdfC(Jb845TPgxS;36YY$*`|g00n`qd(Ys?bV5>GrN`&zz4JCOaT zGG^L6ZPKFN*Zfv{y|}5xVCw07gmd@J=dLd?h7fYV;Pb7YnYsD5-4B*?)Tjg~M?#A$ zf_o{e!7EbRk{O=gHj1^ynWDk$w+zVAf0~?7s|YdD*SAv86<6L$S;TBc`R{olA`Gmj~Y(dS|%SFS|`*; z;z@d|hTWxFB9E^5dB0Omr2GL=dV zxWua)d5OrdvJP&a#oN%AgYP^K=cV2}>Xol3mn(azJZjo2<+qMYK^iieZ(%=1@_8H* z&OG&PHwO?sp=)Z=8Vq(PCRIi`@H|`uD%@Qg9_HFuFMm3jn1$NCUSoa+4}JBoG`Krv z-P07kUmtFn!9RYPriC0`oW2l=eCuee{ zmg)6^QJ=E7T9KNbwWn}qnOI0yINDu%)wV2oJ6|;l94mPvX1Z%)3be?$KOy_}T!eT# z*R4BW1howsgi)Uq*rI#dbjH1MCSs}2D@*6yT&)X$;p8%`4B<$L9M0xC#np+;;X-eZ ztuU8>EY`uaei?pRLV09P=!Y{A5E_%D$DVc~@ zl3V!OPuim=ZsSGsb3a~|UABZ%m5b{;!T}Mbis@)dM#@Pt@>@VKpXf}r@b%ixCXEhj z?d$R_it+Q*8bo({qR)viDsD*};k)T0TrxPgjdx>?@a;64&PMSYas+ADX}^h=`>6At{*<>snf)F?5drWp#m6!a@$sCLih`6 zb^ab;pY`+8+{;#ih}pMhPxzs(0(7JdnaM6GbO2<(hNIt~ zgzX153OwHdH}KKa+n_jI|zVRx9`B`;J>6@dTA9YA=0 zPjVPHFn-^DaQypbmdStSVm9hhfa=))K|goz7? zGCzBJLD_`oqAgSJwmL)mU3jl%SLWHgta@&Q^0CXCc`z$Ng!y&9!SzK&1+~<5zx3`N zt*_*)<)!+WweaU|SSIV2J@|t*?~RQ$wle-}ek>iO2tA3alji{|9(A6w=m@AZl|>FS zYp=)By}gDB9yVF>DHrXU`n#kjwAHC5uhx#R9mNxy{O0S4^Sxr)S5s zC)sFijo0_%zzU~PvgBn(#M!pDiG?ex2*ftly_Axsv`x?Q9d{?CJ3KNaH;dgWhu&7N zBz@esE1R;doMSXl5J#E69L&GIc#YX)`lxRi-(+p=d^R(xdWLpcmVQU(nVi$B=i#M| zb@ypqPGc!#5FV|rb*Xnv7PrZBEW;QpIFrX|cQ~j-I;G3Gc@OehpY-B{B#?BZ7Q6^1 z(|bdTrG3HE+so4(WsKRm;jGAJnbY}Zi?T(&X+XZ%>BzaBxor406a=L4-HXtI`8cWY zhY;@jK5$<@i`dY z505`ao;>H^wgW#rs3|rfI&o*KJ3VEl4>j1otk^Ao8xcXr=Wt)W*rk0LqHJ1?qJ&&k zQR1>RyJYg$xXZMs!B6|Hcg!I1nfZRolB2@5tJ(Xz5sUY}(+R%$ELou0+g zgUp)7^V5usH-hvP9vqFDWvt)l4%Wn8y)<_`gfzN(30~-Q0vT!;3&0l69Ov> z!oRyRFnRwkWF84|3vXQe$)pw*Bx_0ce~Aq7wbz7av{cw7Xk z83KXg;73{s5DiF)^$BwDbiIHQOg|h;tax5S>G!S5>wk7L|L#)$uWeOclm4tOEnu}Yl{jC1HM3}lVZ}(*IHp4-A!e_#?{tYF6e&% zQbzCu(Sv=Xw;b)Ks^yfGg{S-y5`3a)9VZ< zE~dKdck>hY0Vl^p-hRH(75D|R=hI>q=D>7;f|&1Dh|h3?x!!NDQ~5Gc{c1h0FHdYb zyY0T<6lwx+(=;hZ`wieAyiwT}-9BVcH8nLkA2_N1l$DV|aaqh#VOjh%Ih!lX{D|(~ z+{{UFGVqg3$!~jvOeUk)i^5M|R$X0u0uh(J8|5Pf^q#zymXz>dqCY7EgRH)+oE$P7 zFqmAyrO4ofeV5xWGu1wj2iHGoNyg_niO{t>y9w%x4Vhq4F=Qi2*qT{*cru^snG&T# zK;Jm+HUnrG0YAX`_7(CBm%Y;brYathirz)^d%TXT?V>KNWOZHL6wPJ1GKk_7}568>Dd}UW`@43yga{{oL>+EE*9ta@;*W&Wk3*%E~g5Ri2uUTfxvD}O-IlhWH9hQ<(p3plYRvhOzN z4JVY~;{%Oo-2$9p4Aa)}$N^FuZhA%VgVnf95k_@&_4UD2&~XqVzB2=`v+utLm|6?0 zK@HFVnck`URn?GDE6ABx z;0J2S%8&imO<{vIbJ|6xQY>`-Ux*?`Kfh~#=x7R{jKf(WqS;j^VDzR|R#w*lBEYP1 zS!?xVVq)rx!k^QxcXV`=)x8ldkNG&Ux{9~#bbG884`!vX$>DrFo=M3(nC%?nd9qlO z%3?DMPI=ua+v)}rj;tLo6;#DsBF5l$y$_GgoHV<=zf@QD%DDpZ$yt&-tQ9Yvnxc;> zJnq|$5ynr$jn2Tj73WklDL<>FS~Wx+47c?-h886G{l$Vy>~^V5 z2ZB?(E`Ug}S*%enolu{}i8eezBbFOsYQ5jQ*vW_qTYhd9s`SYDq^04!dG%4o*zJv` zKUe+v6Re|6VmPL}1Orp7{f!S)lrRK?1Ag+!@~oY1l)d3R_zYU z0Cs*z&Ch`J{Pe-<#4bD?D^>cffN^pY>`a=^;D^r7xY!$KlG6j%KSSN{TxBjlB5RzX zPBvV*Fa|o}@TnNVF__6_U;d7R=Mf@>Qz@F6>Uy#vy3lXQNmp4a;mn#UJgeF~eXfjUWl z9D2Y*O`oE0Q(9@Z#Oz`Jv=2;8nxjP{7g#VOobCN-j52e_iQ!c=BsoZJEHy!r(=rQ z>)~s<50^WKalf<+2W3V&afk6a)rdZMb~UnK#=6u(AL!F(Sxb$KEEO`GtTZL&Wis;1 zktqoYK{RazkG#pt$P1tm;)232J;+Xo_4jFnfI7Xz5R1rz%=~(~I~z+E_WY<26r0<9 zGsWShHwbu@gamvxA!Hm_MEb*W-fQ|fm&-Ow0TTiqr|44HXX@Xb4n_-SvLa+*+VL+Dr3s^wV~6&K^b1P1ZEjkE9-0yl^X zL{Y=*#5ntZoimfO&ji8Am#z7O z>l{$Npa5pmPh-xMdiiipHqy)C(TvC;t$Hh|a047m0gkyCvKmu-Ol}lTriXgl>(gRF zPy}NdH7t)P0_if;Lr69)H?v%K%K}=_Zgge6AIpv$?s5$ZGSRAAEaqr7aBV2!#l=m_ zIE*&Ye|-5c?S6PP!cvQ+-(EIhEYi-Eimi8dx}v~1Et>h9ymm{h* ztxbp>fCE*=Cr5lv>UhaI{iKAU^qm63{qqkP0b-q1nnVG!8VO_(xNw6)I!%&zosrD_ zfEK$d(&H0$VzTnd6QW3e!K*A#cYfJX`fRyfccp-v*C-0mye?@6nb4v0-bh%2tR93h~GrVaZ~;K zH&H88N75$<=p#|a56}oM>_URSZB*~R2*i#uV>ZgeInojsPATZ*K-0R@&kX!ID9A7D z=&7|@x_%P77x-wd*6TAT5IA>Z2H8%ddPd1UE$7%L-f`_4E2@a$*;m(c#34_!(z$`hJN%_l~QTEaq`m*`LFt%GqW6LJNCHS#$0 zbdd!_`!WxMFdSf{nQnADCEo?KbmVdir?g2%Z3{Zh%@xUhY3ZS6D3Ykk%%%aNdNyxAQx{S7)wD=B?4ncI_Hs*jv}G1z;8 zrkEIl!@(p(^cwzX)lhVD;fp^dWEeVa9&}{`gHkLxK8Ky>NM!SQ1k36lFZr-CjXG(a zx)VwpOd_cKGKHTq^k0(3c-}Z&l~#A7@}L{|u`W1J@pffJVa|k{g!2y16D3H;nG$pv0s7L;*GZ4H??J2Pf zSD@+XBXQ=1u0IG6^J#w_-;VkM!?Jy;kao?}66yYK)OS4Wb@AE1ip^5T|+oQt!g8=tMV6dGOgC2Omj3zw4H9hKBwmdG}P4600i zk57gj3vsBLa^)|{hcQ6a=(sA;-TDw!K=c)ozZC23W$mrSYYiFg2LejIrj}NTbclY) zd1QKPY^f$i4GCEf)6T9D3zj1iQTMNX=Roc6cuKaLj6*qj%s4u-aEcN4bQM}Wc^-QH zCyMru*W4o{hEiXfJQ~T+caWp-7A^SAfSgmHrz%htZ!W%&zXZ z5YbrrA2H!oQn3L2aNg`t;y2#`5FD1{R9kOLNcco%|I>$>76C8(2opbWNH|&Uut(EO zZckGxnUJ4D3LE6a@dcOPBZ`nz<+E>VjnSYwVL>kMjABrnvX>{e@)( zp2DpHd*e|~^R!ywdR)QzoR*7LHwWq0iw=J%1!qP67qD+@2HBA{jd^`cxma?=qD1-l z#wr-EFMwbh*-!ZvM+~nL5n?6_XKLC>n$vlNB2r3@i$FtyT>xv>HHn-P%xGi4akEPG zkOUFaj8RU1C`Md^y(4rW`#7Dgn5T3JyS)s04W7din2~qG2|rX#Q=XDvhY0_%_$V}o z|rtK{!7;i`(sV)l5cF3K3L zH$`6kqdQpgF;L0mz9k{#`X`gYIP%Br;{gVM?Eor5BnG|T8SfB|A}2+T8GO*FveS|s zZP22xdRO(2B@S5J$0h5g2pa-~QN>2^|DIs|H!RFp5RL+0RUZ&gL2^?6A#jB=W3Aqu z9)FLvG4fj{q?MRS#RJ67Jt&g%BJRN$&~8D@0+y-RG^SE0fNbT>c-%4tK6)O2>QxJr z#^X>ms5$gOM3d7a*?aLSBn?6(441im^uF)He?3o3;IS{~zV-`w&4 zy8Mr_$oWG$0F`)eIQidB#syPpHD3RF4tq4x-#inQ|7R9^iwIn;&04G1i`)CjO5RBb zeOX1txWvS{iHQ!Le5urgpFgLTmyZ!=%re|h8~ptIL`h=P)3vmCd0Sc_8O1<^YU-zRCoVZ3>N2 zd7Rmdml3PQmaN`kPg?vcLBrb2(o(a*p43W3NeNmCjy+5XE>9*?I(Mbo3}uJ^kRNMy za#BA)3=_zQ$$|xHLb6YjZjE9F0BxMa%0B`QVk59j3V*hb93=iJv-j07nNAN3er!PJ z2pR$No8U_hNLLUddI|=rL;y=8S*A33xvnhD%hMg1$XHb<@Y|tv7!ZIID*+DrJI?h9 zcn^g<$%Pho7OT10S$RPiPUmCQj0;(j%0mQa42S(!HaBw}IYIXZ_bq;E3t{t^dR z!246l;3-JKn)*ocxT;DSIM~Mk91I%8KWnNQD^LpVtBC#7Ke|s76M7K_Qha>8dB6Ah zI$vd6TwFBjh4v+&8Wqq`oLZE%IA4vhzqyK(39-~y0S>mA^(jd?Y zZoczs>fb^K2oBOs{kR${)iY;gJPg72vZ2+{iypH0cWWLp>B#m*PVzSCZ~ctnwzY4QHOy1Zex-tPNviV-6} z`o9DteKda{Akb*mN7pq(qlOFi+rB&wug_N)0CGsD4lo3Q!S9JwNbeO7jHGbTyytI; zeMXzEex&dAnOl&MkeFct{{(s4pUQ0YJLWqeCE(B#>=1B>)U8V8bZ6z{1jPRS0Eldi z-_LcOMtr7#r#k;==my5&gf4WK$Ksaq}7 zi2z~%YjmpA*7LiLrI5tx0M?5Ht_K_|!nsJIH|Up_l?A30st8mYR3^T0b+CE_H0v#Vu7C#!PfJ`6?wQ*1&~nY z7oAFKVxj&n>>@e8AKc}|63ea{3B~}TO+O=$MJLMgKZ%C*e>B}sYGRQ7(VGGRGqwx$ zD1yKjd+}!zi{uj@tMDx`shoOzB>3GD4Koa+J&=t?8Tg+PqlTk*u zKi%XUl|^(XCnt}q1gP4i`Xn>tkGCg9JhjH{4N0>giuN!CUWb9dLW{MUoB=K`d{I1N zp-54K_%TWrhw4zxDiiK7}CRhafi3p z7sY;LVqs0Y9yB+GA563}>iGVuunF3sVPQ9YJqP)2yU&24cCKMPNUtt&PPimL0RRKxoT^%J8(i_=d zYioPe9W4*@c$g z0~+n>c`Dsz6Tdyu^J6G12^F!IiCm{1tpHP~Y1yf)84zT1-lvJ8dO}zE?hf7aU|yJT z5{4|{)#YV>a&L0__{6jhHwKC7l-X2XNL)8Bt_206Q)dufsFQ9s4BQ>%>){XIjS>Hr zL>(a^JyF8XRI0kyNWpwIK3uJf<@&wQgsoL4sPCzk=uXDG0!}ZQT&|bfS7SW1+ts{0 zNBgMqw5d}vQGn=Yu~ch?qwVPuPOzn6(}D)~HdE#mzqjI;@e};FR$L`_Ue%-;{eF3i zwP?S;lyqo7#PK%ze7(`oXDk)Sm-Ws-*uAk#9>DQ~J-R+wq@Ei?4&DgnJY^+|PrHv5 zMW2$Bk%(NVCno6?uaD9}6>;>9bx1M1CR= zxjW-#KgnUdkm16lEL4D?Nr*$Nhdpt zCeg%;up(yn1wnhh*reDq%3cF4g*KT7fn-YSSQnJV3zRW+L}lIDGI!$JZA7aa3TklQ zF(cBwWZ?o5RaCEFl3VR#kk1@aw-aw%<)x&gJaVTIQ9@9>S^R!6ih0h+AfM+P?g4v9 zz(g%;eWY0G z!hs*TxH)g8bK=zwpj$sjK2gkPghIrl%JC*d+$Y6^H83nZrh?>ulzp{FSePr($R`o` zz8digZ=ns2l~mRA%a|oi%fr#cq+Y9~QW6LNRG&zg?T-rRIyE#{7zb=C`Hw^)g$qpG zU!Na07WnpusD2yueRqHT_LjuP&qBX~g{i}ZDdXmX z{yYlP*^>X#4EV1>_r*AG48Zc3NN&%kiAcO5q)2COrr^hmW=WdJ7J0j^Ys-zud^t8L zYq?FS{OO_)+3Q9mCrky78eT@yM<@wbTu#iK29}+92*?cDs(1Pnl1cxkookP0dhg>K z4#h%l4JB&1XUM(9NaV6`<~GM%CMu#_LWyK&KL6~s-(KJCx65bW-~01^zd!E>KN8Rwb1$>T7ad0XT8;S1 zE)u0`Ty8tHhs)BRP3d9!>>^WftE`{y13inxT}jz5eyJoP??$;bk)RHk`>A93Q=T(c zNalz59n$fFdz86K>jz+_;rFC@x}!z52Ey99x;9iOEt-17;pY}dFhaJ~6E@xO6tm$9 zZzkQ+X+uMp(WDqg(W#EO#o6=lvb-iY%rcRro%;$OX|0!udH}Y;#Epiy`Ly5$C2;|M zWqo@FWP>#;)xNGtI zO|Cv06XrGywM13~OK}U7{H%4gBrix{$dmt7=V>kRXiWzUkD5bu)Ei&e{-S%B0zfN7 znMSjw)D#sxpu!6y#fJ_~w^v&NaVB3i8y}h*z?u)3k~@5$bl{h%HTgS(rK!x3;_K7y zN+~SanE7CCdzdm<8)=_Xu4aE+S!c#DY9m~{z|VI?vHz!8LM>=Hyvf#}r2Fya6MF_j z{T9=m7j`T?EfrfRat$gOy&D3)iIoc<$H!ead1d4dc{c|_bKmnY-JJJ)^gQ5S!Wf6z z3)t4$m6)aFi;z`E4qA9pr9-O)W|C53y5Lt|-bwwSYrsqm6tI<>b!YaPQIcbU&}d-# zNQRspQy>_YdGfj^BBZhRg*Kt1!P2_w^1=%(i`RQy2feG`HuFe*#R*s})BVP9irya= z`SbnVx=s`vU(=RnFm5TRV*P?INLW5$YIJ?Vn|O)b%p*?52PVzt7$0R5e@C5?01*7* z(^-I)Z9m1S2@4=28|$HM4*VfH9?ATVivX^)H>`c~7p|1tNdyf+ zw`*od6KP&oLQ{9K*;lk813+^l7$8)Aef>_W ztmS%q&yQ(oI(^Td-~FMgy1IX0pbY;7=`S6@*1VcsTwF5ZUU=3#oaT3EQMZT2Uawks z^zO#t^0KpJrqFJ^)K9~wLuhv_s8s6No7g=Ni0zlN8UQI?@$z~%cHhtZ#%>EcAQO^9 z(`*p!I4l;Bo$xUSCnp6IvOlV+veGgvIb$StyQrSpDDY%t7CJnxCUlt5WcvJ=BNYu8 ziTe-Q+6t;ll6lOF($7t{gsQAKg8FXZS%n}3qWH)S){|1-3?p*o1S06eJ2BmG!_cvR>2txi|$tT|2eDiF4x*(~7H|>tae`9rz#+ zF+7s@iBQx$_srKFr?Vx;x`c_idp>rnSn`Qs#oIc9yY+;}kA2qMm+-d1_*^wUD=b%Pdb-HY2Vj7W#E>8ijg4KJyZ_pZD>W@Nx9A8=!$ZjG+X;W3ubj+1e{Z@`X&uVlBQZ7^8gUU13lX?EH0%CKM*FHdZM!^y#4md%NK8!3 zlz#te1(sZoU_h@c23CTMf}{XBUK6G-X%sY8iMkuQKD;Jo!>4#V z9oh92vP(mDGI9l9%GY3QL=}z-(U48J-LK94w&~p0UOxssCK%ysfw#%pP+G&y93c{f zKjcBr2)#a*aL!GWCa0}gBMFS-Mc|);Y~Rq_x*q<6>^uJl6J;?eQrbz$Qd@b(0Ovr^ z!zoXq!$IoS=owmk6B1n)raSzedi!pe=_ZR^nlT+j?`Fs zk2ya)N)WxH>H40qO~yPrT2`?s;1y$f&2TU5gQNMo=U z%W%0%e<>Hs#m*Oru8E`YFbE`7RbDLx(iJ(tDW6vo{aLaWUY-jDbYKu#da>}EZF05` z`>HvViD>cZ(A||LGQY$vuG-2WhLhhmU;9j1KfU?!VCl=0zS)mqqMIupwmu{TGtXq5 z|9o$dx;o1lro~&Q4@%A-Ic9`AuPM4qh;tc6X@t|$%sH>^C-+w_+usb}79~HXm0D5% zOqyd?En|*T%-?VRdwdEYzJWmX{j`awuZ)sA+y6+xONWSXad3_=fq)j}`7@+0dOz>; zY-9o(?oi@D&>QDNwMwy9LfYY%!JhJ-4NkHR=o?-Hw3fDZt}!@tWu`8k5aAQM>aTi<~8X7A`Y08CkImp4iowyUoG`Ji|7{?V#i5ef=6H3e@>9uv?e^IP2fWxYD0>J4|mTZLF0J7HR5 H;t}&Z*DmxS literal 0 HcmV?d00001 diff --git a/google/docs/google.svg b/google/docs/google.svg new file mode 100644 index 0000000..c652a5a --- /dev/null +++ b/google/docs/google.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/google/src/main/java/example/oauth2/google/ApplicationGoogle.java b/google/src/main/java/example/oauth2/google/ApplicationGoogle.java new file mode 100644 index 0000000..cf63bb7 --- /dev/null +++ b/google/src/main/java/example/oauth2/google/ApplicationGoogle.java @@ -0,0 +1,13 @@ +package example.oauth2.google; + +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class ApplicationGoogle { + + public static void main(String[] args) { + SpringApplication.run(ApplicationGoogle.class, args); + } + +} diff --git a/google/src/main/java/example/oauth2/google/config/MvcConfig.java b/google/src/main/java/example/oauth2/google/config/MvcConfig.java new file mode 100644 index 0000000..424b397 --- /dev/null +++ b/google/src/main/java/example/oauth2/google/config/MvcConfig.java @@ -0,0 +1,15 @@ +package example.oauth2.google.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; + +@Configuration +public class MvcConfig implements WebMvcConfigurer { + + @Override + public void addViewControllers(ViewControllerRegistry registry) { + registry.addViewController("/").setViewName("index"); + registry.addViewController("/secret").setViewName("secret"); + } +} diff --git a/google/src/main/java/example/oauth2/google/config/WebSecurityConfig.java b/google/src/main/java/example/oauth2/google/config/WebSecurityConfig.java new file mode 100644 index 0000000..3ffa17c --- /dev/null +++ b/google/src/main/java/example/oauth2/google/config/WebSecurityConfig.java @@ -0,0 +1,24 @@ +package example.oauth2.google.config; + +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; + +@EnableWebSecurity +@Configuration +public class WebSecurityConfig extends WebSecurityConfigurerAdapter { + + @Override + protected void configure(HttpSecurity http) throws Exception { + //@formatter:off + http + .authorizeRequests() + .antMatchers("/").permitAll() //Доступ разрешен всем пользователей + .anyRequest().authenticated() //Все остальные страницы требуют аутентификации + .and() + .oauth2Login() + ; + //@formatter:on + } +} diff --git a/google/src/main/resources/application.yml b/google/src/main/resources/application.yml new file mode 100644 index 0000000..3b182a8 --- /dev/null +++ b/google/src/main/resources/application.yml @@ -0,0 +1,17 @@ +server: + address: 127.0.0.1 + port: 8080 + +debug: false + +spring: + freemarker: + template-loader-path: classpath:/templates + suffix: .ftlh + security: + oauth2: + client: + registration: + google: + client-id: 704750524716-tnqc2islqao8tobjbrgvtte0fq8o39uv.apps.googleusercontent.com + client-secret: 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 diff --git a/google/src/main/resources/templates/includes/foother.ftlh b/google/src/main/resources/templates/includes/foother.ftlh new file mode 100644 index 0000000..308b1d0 --- /dev/null +++ b/google/src/main/resources/templates/includes/foother.ftlh @@ -0,0 +1,2 @@ + + diff --git a/google/src/main/resources/templates/includes/header.ftlh b/google/src/main/resources/templates/includes/header.ftlh new file mode 100644 index 0000000..a389738 --- /dev/null +++ b/google/src/main/resources/templates/includes/header.ftlh @@ -0,0 +1,9 @@ + + + + Google OAuth2 Example + + + +

Google OAuth2 Example

+
diff --git a/google/src/main/resources/templates/index.ftlh b/google/src/main/resources/templates/index.ftlh new file mode 100644 index 0000000..32580cb --- /dev/null +++ b/google/src/main/resources/templates/index.ftlh @@ -0,0 +1,7 @@ +<#include "includes/header.ftlh"> +

+ Home public page
+ ---> Secret Page <---
+ [ Login Google ] +

+<#include "includes/foother.ftlh"> diff --git a/google/src/main/resources/templates/secret.ftlh b/google/src/main/resources/templates/secret.ftlh new file mode 100644 index 0000000..c54425a --- /dev/null +++ b/google/src/main/resources/templates/secret.ftlh @@ -0,0 +1,3 @@ +<#include "includes/header.ftlh"> +

[TOP SECRET PAGE]

+<#include "includes/foother.ftlh"> diff --git a/settings.gradle b/settings.gradle index bc1372e..6609799 100644 --- a/settings.gradle +++ b/settings.gradle @@ -3,3 +3,4 @@ rootProject.name = 'spring-oauth2-examples' include('discord') include('github') include('twitch') +include('google')