Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
【無料サンプル】もっと実践!サーバーサイドKotlin / server_side_kotlin_2_sample
FORTE
March 12, 2020
Technology
1
160
【無料サンプル】もっと実践!サーバーサイドKotlin / server_side_kotlin_2_sample
FORTE
March 12, 2020
Tweet
Share
More Decks by FORTE
See All by FORTE
いろいろ実践!サーバーサイドKotlin Vol.2【サンプル】 / server_side_kotlin_3_2_sample
fortegp05
0
79
いろいろ実践!サーバーサイドKotlin【サンプル】 / server_side_kotlin_3_sample
fortegp05
0
230
まいにち続ける技術【サンプル】 / tech_to_continue_on_daily
fortegp05
0
450
技術同人誌によって得られたもの / infra-workshop-20200301_What_was_obtained_in_the_book
fortegp05
0
86
【い03C】入門!実践!サーバーサイドKotlin【サンプル】 / server_side_kotlin_sample
fortegp05
0
1.4k
アウトプットの価値 / 20190621_01_value_of_output
fortegp05
0
56
IT業界あるあるBAR / 20190412_01_aruaru_bar
fortegp05
1
81
【無料サンプル】はじめる技術 つづける技術 / tech-to-begin-tech-to-continue-sample
fortegp05
0
570
【とらのあな主催】オタクがKotlinを追うライトニングトークイベント / 20190319_toranoana_kotlin_lt
fortegp05
0
250
Other Decks in Technology
See All in Technology
NGINXENG JP#2 - 4-NGINX-エンジニアリング勉強会
hiropo20
0
120
ML PM, DS PMってどんな仕事をしているの?
line_developers
PRO
1
240
初めてのデータ移行プロジェクトから得た学び
tjmtmmnk
0
330
Kaggleシミュレーションコンペの動向
nagiss
0
270
Deep Neural Networkの共同学習
hf149
0
280
PHPのimmutable arrayとは
hnw
1
160
Oracle Cloud Infrastructure:2023年1月度サービス・アップデート
oracle4engineer
PRO
0
150
AI Services 概要 / AI Services overview
oracle4engineer
PRO
0
170
CES_2023_FleetWise_demo.pdf
sparkgene
0
110
インフラ技術基礎勉強会 開催概要
toru_kubota
0
170
地方自治体業務あるある ーアナログ最適化編-
y150saya
1
270
目指せCoverage100%! AutoScale環境におけるSavings Plans購入戦略 / JAWS-UG_SRE_Coverage
taishin
0
510
Featured
See All Featured
Building Applications with DynamoDB
mza
85
5k
5 minutes of I Can Smell Your CMS
philhawksworth
198
18k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
109
16k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
44
14k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
2
400
Visualization
eitanlees
128
12k
How to train your dragon (web standard)
notwaldorf
66
4.3k
Fontdeck: Realign not Redesign
paulrobertlloyd
74
4.3k
Designing Experiences People Love
moore
130
22k
4 Signs Your Business is Dying
shpigford
171
20k
Producing Creativity
orderedlist
PRO
335
38k
Done Done
chrislema
178
14k
Transcript
None
ה㹋騧!؟٦غ٦؟؎س Kotlin FORTE խ衼 2020-03-01 晛 aozora Project 涪遤 1
כׄח ׆ס勓䩘מ⺅זיַגד׀לֵֹֿכַׇֹױն詇脢ס FORTE نؚٜطךն⯼詇ךֵր⪜ꪎ!㵅鴫!ئ٭ف٭ئؕغ Kotlinցמ䑛׀籽׀յ ♀㎇ئ٭ف٭ئؕغ Kotlin 勓剹׀ױגն勓剹⯼詇כ⻎ׂ Windowsյ Mac
╋㸐䗎ךնIDE מחַיע杅מ䔔꼸砈䨾עםַעםסךյ⯼詇 鞅؆ךַףゼ꾴םַעךն勓詇ס⫐㵼ך⮔־םַ掾ֵֿף⯼詇 锶־յץ詇脢*1 ױךׇ┞㖥ׂדַնيتعؙنؚ٭عך㎇瞩יַגד ׀ױն 劤衼ךⰻ㺁 ♀㎇עזכ㵅鴫!כַֹ׆כךյؤ٤بٖ٭ُ٭⻔ׄס Web ئ٭لتךע䖩 כ阋זיַל❈ٗ٭ا٭溫ꜗյ霼隍כؓوٛآ٭ب٘٤⪪ꪛ ס 2 掾מꫀי㵅鴫יײג篙卸闋鞃ױגն ٗ٭ا٭溫ꜗכ霼隍עאס䙎鮐┪յٗ٭ا٭ס⠥☭䝠㖥꽑־⺪茣䙎㜽ꌃ מ⪪ꪛגׂםַ䝠㖥꽑־⺪茣䙎ֿ둚ׂםױնאסג״ج؞ٖٛطؔ 茴䒘䙎מ┞㺽宜❈ֹ䖩锡ֵֿꌃ⮔כםױն♀㎇ע勓沁ꆻ氠ך׀ٝيٜ כ蔦⟤䭥זיַֻׄךעֵױ؆ֿյ㵅鍮❛כⳛ✑ؤ٭غ⪪ꪛ יַױնׂׂע瑭ֿ⠥☭ئ٭لتכי⪪ꪛյꆻ氠ג焒锶䭥זי勓沁 ꆻ氠ך׀ٝيٜסؤ٭غյ闋鞃יַ׀גַכ䘼זיַױնךֿյ♀㎇ עֵׂױך㕈狸ٝيٜס闋鞃כםױն ؓوٛآ٭ب٘٤⪪ꪛכַֹסע┞薭מظوٞؕכ⽿ףיַ✑噺מ םױն♀㎇עظوٞؕ⩰כי heroku 氠ַױגնherokuىٞؠע ئ٤وٜ㸯锺埛םؓوٛ⪪ꪛ⮔מע긊䊬מ➬⯈םئ٭لتךն♀㎇ע heroku 氠ַ׆כך Spring Boot ؓوٛآ٭ب٘٤ⳛ✑ױךס蝆Ⲩ ֿׯםׂםזגכַַֻׂ祔ⷃמך׀ױגն♀㎇עظوٞؕס䩘꽄 WindowsյMac ס╋偙ך闋鞃յؓوٛآ٭ب٘٤ٛٛ٭تכַֹז כٓزي٭ب٘٤ֿ┪ֿ鉿掿闋鞃יַ׀ױն *1 Twwiter https://twitter.com/FORTEgp05 2
וז➂ぢַֽ 勓詇ע⯼詇ր⪜ꪎ!㵅鴫!ئ٭ف٭ئؕغ Kotlinց鞅؆ךַ⯼䳀כיַױ ն⪽✄溷מע Kotlin + Spring Boot + JPA
+ Thymeleaf + ظ٭ذي٭ت h2 Database םלךظ٭ذ✑䧯յ嗱筺յ剳偆յ⯸ꯙַ CRUD ⭦槏 ֿ⮔־յזג׆כֵֿյꪛ溪欎㘶םלךמֵյֵַע蔦⮔ךֻ 瓦䍲ס偙㸐骭鞅脢כיַױն אסג״յ ئ٭ف٭ئؕغ Kotlin כע?Spring Boot כע?ֻזאא Kotlin זיםמ?鞅ײ偙־םַ˘כַֹ☭עץ⯼詇ךֵր⪜ꪎ!㵅鴫!ئ٭ف٭ ئؕغ Kotlinցֽ鞅ײמם׆כֽ⳹״ױն姌ס QR ؤ٭غյٛ٤ؠ־ 鮫⪜⺪茣ך!PR Ӛ㔳 1 衼ך顋㡰ل٦آ https://fortegp05.booth.pm/items/1560389 ֿך劤ד䖤ֿה ׆ס勓ע Java םלך Web ꪛ溪ס篑닫ֵֿ☭⻔ׄמئ٭ف٭ئؕغ Kotlin ךٗ٭ا٭霼隍כ霼⺪յظوٞؕ㵅鴫יײ勓ךն׆ס勓鞅ײ箽כ 姌סֹם枱䡢מםױն • Spring Security מ霼隍ס❈ַ偙ֿ⮔־ – ٗ٭ا٭溫ꜗ – ٗ٭ا٭霼隍 3
– ظنؚٜعٗ٭ا٭ס✑䧯 – 霼隍ꫀ➳סطتعס剹׀偙 • heroku סظوٞؕ – heroku סٗ٭ا٭溫ꜗ
– ظ٭ذي٭ت䱸籽䝠㖥סُتؠס♐偙 ֵםגס Kotlin ך Web ؓوٛآ٭ب٘٤✑גַյ⠥☭ئ٭لت✑זי ײגַכַֹ䘼ַמ瞩ֻג׆؆םמַֹ׆כעֵױ؆ն ֿך劤דכ鍑铡׃זְֿה 勓詇ךע Spring Security heroku ס闋鞃יַױֿյֵׂױך❈ַ偙 סײךֵ霄箖ם♐篁ײ╚麃סخ٭تؤ٭غמחַיע闋鞃יַױ؆ն Spring Security מחַיע㴞櫼םج؞ٖٛطؔ⟛隍סךעֵױ ؆նֵׂױךئ٤وٜخ٭تךֵյ勓沁欎㘶ךסⳛ✑㵅緷םמ־ס茴䒘䙎隉 偂قتיַסךעֵױ؆ն ױג闋鞃מע JPA Thymeleaf ❈氠יַױֿյ勓詇ךע闋鞃ױ؆ն ׂ־םַ!כַֹ偙עץ⯼詇ׇ镣מם׆כֽ⳹״ױն ֿך劤ך⢪ְ倯 ׆ס勓ע瞉脢ֿئ٭ف٭ئؕغ Kotlin מٗ٭ا٭溫ꜗյ霼隍ظوٞؕ 㳔ש╚ך沼ゼמ䘼זג׆כ鞪ג׆כ䪫銉剹ס䓺ךؓؗعوشعג סךնאסג״յٗ٭ا٭霼隍溫ꜗמחַי焒גׄף睗 1 皹րSpring Security מ霼隍כٗ٭ا٭溫ꜗցסً٭ة־ׇ镣ׂדַնױגכֵֻ ظوٞؕיײגַ!כַֹ׆כךֵף睗 2 皹րظوٞؕց־ׇ镣ׂד ַնה؆劄⮴־⪢ꌃ鞅؆ךַגדַי㝕┨㝜ךն 勓剹ע׆ס勓סכֽמףⳛׂסֿך׀յכַֹכ׆潨䭰י剹 ־יַױն׆ס勓鞅״ף槏㺌♐篁ײֿי槏闋ך׀ֹמע剹־ יַױ؆ն׆ס勓⪜כיאסמ㞺מֵ׆כמ蕟⽱䭥זיַג דׄג䌗ַךն 杅מٗ٭ا٭霼隍յ霼⺪מחַיע׆⯈氠׆כךױױםؓوٛ آ٭ب٘٤ꪛ溪ֿ⺪茣מםכ䘼ַױնץյ׆⯈氠י蔦⮔氠סص٭ٜ ✑זגיײיׂדַն ױג׆ס勓סؤّٚעⳈ䒣阾ꜗכי瑭ֿ䠊גَؕ٤عـُזגَؕ٤ع םל闋鞃יַױնגכֻף׆ױ״מلٜغכⲯ椙ַַֿ٭כ־յ⯼ 詇־לַׂ䧯ꩽך׀יַ־?ײגַם需יַױնKotlin כ潲䱸ꫀ ➳םַ需יַ־ױ؆ֿյ־זג锶יײיׂדַն 鞅ײ箽זג䠊䞯ꪨꇙַס䭰䷂յꃯⲎ锡劳םלע姌סـشبٖذء氠ַי Twitter ך⽌ַיַגדׄכ㯹ַךնץյ䠊䞯ֽ䔵היֽױն #ה㹋騧؟٦غ٦؟؎سKotlin 4
⯜顑✲갪 勓剹מ阾鼥⫐㵼ע瞉脢ס䨾㺲篁縨ס⪪䑑锶闋ךעֵױ؆նױגյ 勓剹ע⺪茣םꮹ婞牞劻ֹמⲚ״יַױֿյ瞉脢ֿאס⫐㵼⟛隍 סךעֵױ؆նאסג״յ勓剹ס阾鼥⫐㵼מ㕈טַג鞅脢ס鉿掿յצ鞅 脢ֿ錺זג䴮㵬מחַי瞉脢עם؆鬬⚈鬘ֹסךעֵױ؆ն 5
湡如 כׄח 2 勓詇ס⫐㵼 . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . 2 ל؆ם☭⻔ׄ־ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 ׆ס勓ך䕑׆כ . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 ׆ס勓ךע闋鞃םַ׆כ . . . . . . . . . . . . . . . . . . . . . . . . 4 ׆ס勓ס❈ַ偙 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 ⩸鬬◜꽃 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 痥 1 畍 Spring Security ח״钠鏾הِ٦ؠ٦涫ꐮ 8 1.1 Spring Security כע . . . . . . . . . . . . . . . . . . . . . . . 8 1.2 ꪛ溪欎㘶מחַי . . . . . . . . . . . . . . . . . . . . . . . . . 8 1.2.1 ف٭ة٘٤┞镣㕂瞉免 . . . . . . . . . . . . . . . . 9 1.3 Spring Security ךֽ䩘鼓霼隍 . . . . . . . . . . . . . . . . . . 9 1.4 㵅氠溷ם霼隍כי硄槏脢氺긖㵅鍮 . . . . . . . . . . . . 11 1.4.1 霼隍䝠㖥כי⚈䟨סٗ٭ا٭⻏כقت٠٭غ陭㴻 11 1.4.2 ظ٭ذي٭ت氠ַיٗ٭ا٭䝠㖥硄槏 . . . . . . 15 1.5 锡霼隍ً٭ةכי硄槏脢氺긖㵅鍮 . . . . . . . . . . . . 23 1.5.1 霼隍㸐骭ً٭ةס陭㴻 . . . . . . . . . . . . . . . . . . 23 1.5.2 硄槏脢氺긖מ阾◜┞镣銨獏 . . . . . . . . . . . . . 25 1.5.3 硄槏脢氺긖ך阾◜סⷃ俙⯸ꯙ . . . . . . . . . . . . . . . 33 1.5.4 硄槏脢氺긖ך阾◜ס鏿俙⯸ꯙ . . . . . . . . . . . . . . . 36 1.6 ٗ٭ا٭溫ꜗ㵅鍮 . . . . . . . . . . . . . . . . . . . . . 41 1.6.1 ٗ٭ا٭溫ꜗ氺긖סꈴ瓌㵅鍮 . . . . . . . . . . 41 1.6.2 ٗ٭ا٭溫ꜗ⭦槏ס㵅鍮 . . . . . . . . . . . . . . . . . 49 1.6.3 ٗ٭ا٭ٞءؕ٤סⳛ✑牞霼 . . . . . . . . . . . . . . . 57 1.7 溫ꜗגٗ٭ا٭䝠㖥ך阾◜䫋畇⯜䕣 . . . . . . . . . . . 65 痥 2 畍 رفٗ؎ 75 2.1 heroku מظوٞؕ . . . . . . . . . . . . . . . . . . . . . . 75 2.2 ظوٞؕסٛتؠכ㸐瞬 . . . . . . . . . . . . . . . . . . . . . 75 2.2.1 ٛتؠ . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 6
2.2.2 㸐瞬 . . . . . . . .
. . . . . . . . . . . . . . . . . . . . 76 2.3 ظوٞؕס徙⤫ . . . . . . . . . . . . . . . . . . . . . . . . . . 76 2.3.1 霼隍䝠㖥ס欎㘶㜟俙ⵊ . . . . . . . . . . . . . . . . . . 76 2.3.2 heroku סٗ٭ا٭溫ꜗ . . . . . . . . . . . . . . . . . 77 2.3.3 heroku cli Windwos מؕ٤تع٭ٜ . . . . . . . 79 2.3.4 heroku cli Mac מؕ٤تع٭ٜ . . . . . . . . . . 80 2.3.5 heroku cli ךٞءؕ٤ . . . . . . . . . . . . . . . . 81 2.3.6 git סؕ٤تع٭ٜ . . . . . . . . . . . . . . . . . . . . 81 2.3.7 Github ס徙⤫ . . . . . . . . . . . . . . . . . . . . . . 82 2.3.8 psql ؕ٤تع٭ٜ . . . . . . . . . . . . . . . . . 82 2.3.9 psql Windows מؕ٤تع٭ٜ . . . . . . . . . . 82 2.3.10 psql Mac מؕ٤تع٭ٜ . . . . . . . . . . . . . 88 2.4 heroku מظوٞؕ . . . . . . . . . . . . . . . . . . . . . . 88 2.4.1 heroku ؓوٛ✑䧯 . . . . . . . . . . . . . . . . . 89 2.4.2 heroku מظ٭ذي٭تכי PostgreSQL جشع 89 2.4.3 heroku מؓوٛوشبٖ . . . . . . . . . . . . . 89 2.4.4 硄槏脢ٗ٭ا٭溫ꜗ . . . . . . . . . . . . . . . . 91 2.4.5 ⳛ✑牞霼 . . . . . . . . . . . . . . . . . . . . . . . . . 94 2.4.6 긊⪪ꪛמ . . . . . . . . . . . . . . . . . . . . . . . 94 ֮הָֹ 96 ؤ٭غ剹ׂסֿ㝕㜟 . . . . . . . . . . . . . . . . . . . . . . . . . . . 96 ئ٭ف٭ئؕغ Kotlin 䌮״יַׂ . . . . . . . . . . . . . . . . . . . 97 劄䔿מםױגֿ˘ . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 ꨵ㶨晛חאְג 98 衼罏稱➜ 99 倀皹 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 銨筤ؕٚتع䬎䓜 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99 7
痥 1 畍 Spring Security ח״钠鏾ה ِ٦ؠ٦涫ꐮ 1.1 Spring Security
הכ Spring Security ע霼隍ֽצؓؠجت⯜䕣نٝ٭ّ٠٭ؠךն⻏⯼סכֽ Spring نٝ٭ّ٠٭ؠס┞ꌃךֵյSpring עה؆յJava ؓوٛآ٭ ب٘٤מ霼隍כ霼⺪ס╋偙䳀❵׆כֿך׀ױնאי䒣ⲇךֵյ둚䍲 מتذُؕث⺪茣כםזיַױն ׆׆ךַֹ霼隍כעؓؠجتי׀גٗ٭ا٭餟⯁勓䓜מ勓☭ךֵ׆כ 牞霼׆כךն⪽✄溷מעقت٠٭غמ牞霼מםױնאסג״յ قت٠٭غע䓜☭־焒םַסךֵכַֹ⯼䳀כםיַױնםֽյٗ٭ ا٭ס ID ע霼隍ךעםׂٗ٭ا٭餟⯁ג״ססמםױն 姌מ霼⺪כעյאסٗ٭ا٭ס㺲䙎מ䗎יؓؠجتך׀碃㎪牞霼׆ כךնגכֻף硄槏脢氺긖מע硄槏脢־ؓؠجتך׀םַյٗ٭ا٭氺긖מ עאסٗ٭ا٭־ؓؠجتך׀םַםלֿ霼⺪כםױն勓詇ךע Role כ ַֹ㺲䙎ךאסٗ٭ا٭ؓؠجتך׀碃㎪⯜䕣יַױն ⪪䑑ً٭ة蝠靣ע姌מםױն https://spring.io/projects/spring-security 1.2 涪橆㞮חאְג 勓詇ע⯼詇ր⪜ꪎ!㵅鴫!ئ٭ف٭ئؕغ Kotlinցמ䑛׀籽ַיַױסךյא סوٞةؘؠع䑛׀类ַך闋鞃יַ׀ױն勓詇־鮫⪜ג㖪⻉ע 姌ס URL ⯼詇ס劄䔿ס枱䡢סوٞةؘؠعرؗ٤ٞ٭غיׂדַն https://github.com/fortegp05/server_side_kotlin_bbs_sample/ releases/tag/ssk1 ה؆⯼詇ׇ鮫⪜꼾ַי 1 ־㢼״יַגדַי㝕┨㝜ךPR https://fortegp05.booth.pm/items/1560389 8
1.3 Spring Security דֶ䩛鯪钠鏾 םֽյ勓剹ךׇ箩♃יַخ٭تؤ٭غס㴞䧯ע姌ס Github َٛةعٛ מؓشوٞ٭غ座ײךն https://github.com/fortegp05/server_side_kotlin_bbs_sample ױגյ⻎⫐㵼
Java ך銨槁גخ٭تؤ٭غׇ氠䟨יֵױն־ז ג✶יׇ⯈氠ׂדַն https://github.com/fortegp05/java_bbs_sample 1.2.1 غ٦آّٝ♧鋮㛁瘗儗 Windows • WindowsWindows 10 Version 1903OS Build 18362. 592 • IntelliJ IDEACommunity 2019.2.1 192.6262.58 • VS CodeVersion 1.38.0 MacOS • macOSmacOS Catalina 10.15.1 • IntelliJ IDEACommunity 2019.1.3 191.7479.19 • VS CodeVersion 1.41.1 Ⱏ鸐ךך • Spring Boot 2.1.8 • Java12.0.2 1.3 Spring Security דֶ䩛鯪钠鏾 אךע Spring Security 氠ַי祔ⷃמٗ٭ا٭霼隍יײױն䬚㲳䫕 ׄל祔ⷃמך׀ױסךյ┞糿מזיײױֹնױע spring-boot- starter-security build.gradle.kts מꃯⲎױն implementation("org.springframework.boot:spring-boot-starter-security") BootRun יրhttp://localhost:8080ցמؓؠجتיײױնכյ姌 סֹם霼隍氺긖ֿ⮂ױն 9
1.3 Spring Security דֶ䩛鯪钠鏾 Ӛ㔳 1.1 钠鏾歗 ׆סٗ٭ا٭ס Username ע
userյقت٠٭غע姌ס䓺䑑ך鱍ⳛ免סٞءמ⮂ ױն Using generated security password: f6e32e29-ab80-4f5a-a22c-ce0b48b0eadb Ӛ㔳 1.2 钠鏾䞔㜠 ׆ס䝠㖥ךٞءؕ٤כ䲔獏卆氺긖ֿ銨獏ױն 10
1.4 㹋欽涸ז钠鏾ה׃ג盖椚罏歗㹋鄲ׅ 1.4 㹋欽涸ז钠鏾ה׃ג盖椚罏歗㹋鄲ׅ ׆ך Spring Security מ霼隍篑닫ך׀ױגն־յ׆סױױךע ئ٭ف٭鱍ⳛגצמ嬐㎇قت٠٭غֿ㜟זיױַױյַהַהٞ ء־قت٠٭غ䭠זי׆םׄףםױ؆նٗ٭ا٭⻏
user ㎷㴻ך յقت٠٭غעꩽׁי镊ֻםַךֹնזכ蔦⮔ך䪒ַַقت ٠٭غמגַכ䘼זיױַױն חױױזגׂ㵅氠溷ךעםַׄךնא׆ך Spring Security ס陭㴻㜟 剳י㵅氠溷ם♐篁ײמיײױֹն霼隍סْؕ٭ةכיע硄槏脢־ؓ ؠجتך׀םַ硄槏脢氺긖✑䧯յאסً٭ةמ㸐霼隍כ霼⺪陭㴻י ײױն Ӛ㔳 1.3 盖椚罏歗ך؎ً٦آ 1.4.1 钠鏾䞔㜠ה׃ג⟣䠐ךِ٦ؠ٦せהػأٙ٦س鏣㹀ׅ ױע霼隍䝠㖥כי⚈䟨סٗ٭ا٭⻏כقت٠٭غס陭㴻鉿זיַ׀ױն ױעր/src/main/kotlin/com/example/app/bbs/ցס┫מրconfigցכַֹ قشآ٭ة✑䧯յ偆锺نٜؒؕրBbsAdminWebSecurityConfig.ktց✑䧯 ױն╚麃ע姌סכֽךնםֽյimport 倀ע筤긖סꌬ⻉ךꄫ╚ך侉鉿י ַױն㵅鍮免ע侉鉿םַֹיׂדַն Ӟٔأز 1.1 盖椚罏歗钠鏾䞔㜠鏣㹀 11
1.4 㹋欽涸ז钠鏾ה׃ג盖椚罏歗㹋鄲ׅ 1: package com.example.app.bbs.config 2: 3: import org.springframework.beans.factory.annotation.Autowired 4:
import org.springframework.context.annotation.Bean 5: import org.springframework.context.annotation.Configuration 6: import org.springframework.security.config.annotation.authentication. 7: builders.AuthenticationManagerBuilder 8: import org.springframework.security.config.annotation.web.configuration. 9: EnableWebSecurity 10: import org.springframework.security.config.annotation.web.configuration. 11: WebSecurityConfigurerAdapter 12: import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder 13: import org.springframework.security.crypto.password.PasswordEncoder 14: 15: 16: @Configuration 17: @EnableWebSecurity 18: class BbsAdminWebSecurityConfig : WebSecurityConfigurerAdapter() { 19: 20: @Autowired 21: lateinit var passwordEncoder: PasswordEncoder 22: 23: @Bean 24: fun passwordEncoder(): PasswordEncoder { 25: return BCryptPasswordEncoder() 26: } 27: 28: @Override 29: override fun configure(auth: AuthenticationManagerBuilder) { 30: 31: auth.inMemoryAuthentication() 32: .withUser("admin") 33: // 如כ鍑铡欽ח䎂俑ד鎸鯹׃גְךד㹋ꥷחװגכتً 34: .password(passwordEncoder.encode("root")) 35: .authorities("ROLE_ADMIN") 36: } 37: } ׆׆ך偆ׂ溫㖪ג圸倀מחַי闋鞃יַ׀ױն 竰䪫הؙٓأせך֮הך䭍䓜 ♀㎇ע րBbsAdminWebSecurityConfig : WebSecurityConfigurerAdapter()ց כםזיַױֿյ׆ס类䪩⩧מחַיַ䭇䒁עؤ٤تعٚؠذ⽿צדյ כַֹ䭰㴻מםױնKotlin ךע Java כꇙזי僻獏溷מؤ٤تعٚؠذ㴻 聋י类䪩⩧סؤ٤تعٚؠذ⽿צ⮂ֹם剹׀偙םׂכյ类䪩⩧ס 㵋阋免מؤ٤تعٚؠذ┞糿מ⽿צ⮂׆כֿ⺪茣כםזיַױն override 〣 ْخشغ㵋阋ס⯼מֵրoverrideց⺝ע僻獏溷מ؛٭ف٭ٚؕغ׆כ 㵋阋ױնKotlin עظنؚٜعךْخشغס؛٭ف٭ٚؕغע珡婝יַױ նאסג״յ؛٭ف٭ٚؕغגַכ׀ע僻獏溷מא㵋阋䖩锡ֵֿ ױնאסג״ס餟⯁㲳ֿրoverrideց⺝מםױն 12
1.4 㹋欽涸ז钠鏾ה׃ג盖椚罏歗㹋鄲ׅ םֽյ⻎ֹם⦍׀סך@Override כַֹؓؿط٭ب٘٤ֵֿױ ֿյ׆הע Kotlin ס阋靣♐坎כע摾ꫀ➳םסךյ@Override דׄ♕ׄי Kotlin סؤ٤قֿٜؕכֽױ؆նױג╋偙♕ׄ䟨⽱עםַסך
override ⺝♕ׄגؓؿط٭ب٘٤ע摾ׂיַךֹն PasswordEncoder PasswordEncoder עقت٠٭غ㴗⪢מ⭦槏ג״מـشبٖⵊ♐篁 ײכםזיַױնبتطّך氠ַقت٠٭غע䖩ـشبٖⵊםל יյبتطّ┪מ䌐倀ך⟛㲽׆כע婝״ױֹն┧ֿ┞ظ٭ذي٭ت䝠 㖥نٜؒؕյٞء䝠㖥םלֿ嵣⮂ג㖪⻉յقت٠٭غ嵣⮂יױַױն אי嵣⮂יױזגٗ٭ا٭ֿ⻎قت٠٭غ❈ַ㎇יַגյ♑ס بتطّ┮婞ؓؠجتס㸐骭כםזיױַױն ـشبٖⵊגقت٠٭غעյ⩧ס倀㲻⮬מ䨴׆כ䕮⩧ֿ긊䊬מ㝕㜟ך նאסג״յ嵣⮂ג׆כֿ־ף䕮⩧ױֻמقت٠٭غ㜟ֻגյ ؓؠجتꈚ偂׆כֿך׀ױնـشبٖⵊף㴞櫼כַֹׄךעֵױ ؆ֿյ◝ꓨ┩ꓨמ㸐瞬׆כך錺㵬㸯ׂ׆כֿך׀ױն ♀㎇עـشبٖⵊס♐篁ײמ BCryptPasswordEncoder ❈氠יַױֿյ ♑מַׂח־ֵױն׆׆ךע BCryptPasswordEncoder ךꪨמ⻉ֹג״ 闋鞃ױ؆ֿյ霄ׂע⪪䑑ס JavaDoc מ♑סؠٚتֿ▗זיַױն https://docs.spring.io/spring-security/site/docs/current/api/ org/springframework/security/crypto/password/PasswordEncoder. html םֽյ闋鞃氠מخ٭تמ䌐倀ך剹ַיַױֿյ ꆻ氠免 Github םלמخ٭ ت push כ׀ע簮㸐זיעرْךն㵅갾מ Github ־霼隍䝠㖥ֿ悁崻 ◜❛םלֿ㖥⼴יַױնج؞ٖٛطؔס◜侚עـش؞٤ءםלמ㜽 ꌃ鱍㎋ססյ⫐ꌃ鱍㎋ססֿ㝂ַכ㖥⼴יַױ*1 ն׆ע⫐ꌃ ┮婞סֹם䟨㎫溷ם鉿ⳛײױֿյ䟨㎫יַםַِتםלײױն ج؞ٖٛطؔ㸐瞬ע✇םׄף眞ַ需ךײױֿյ✇־ֵזי־ךעꆬַ סמםױն册嫘־둚ַ䟨餟䭥זיֽׂכַכַֹכ׀מ浌ַ䘼ַ םׂי座׳⺪茣䙎ֿ둚ַךն *1 䝠 㖥 ج ؞ ٖ ٛ ط ؔ ؕ ٤ ب ظ ٤ ع מ ꫀ 鞪 吉 㖥 ⼴ 剹 https://www.jnsa.org/result/incident/2018.html 13
1.4 㹋欽涸ז钠鏾ה׃ג盖椚罏歗㹋鄲ׅ [րبتطّ┪מقت٠٭غע䌐倀ך⟛㲽םցײגַם׆כעל׆ך 㳔?] ׆ס倀皹剹ַיַי沼ゼמ䘼זגסךֿյ րبتطّ┪מقت٠٭غ ע䌐倀ך⟛㲽םցכַֹֹם׆כל׆ך㳔؆דסךֹ־?瑭 ע阾䤾מעםַךֿյ䚐ׂؾشع┪ךאַֹזג阾ꃍ锶גסדכ 䘼ַױն㸴םׂכ㸗ꪎ㳔吾ך׆ַֹזג⫐㵼㳔؆ד镊ֻעֵױ ؆ն┞䗎
IPA מע㴗⪢םؘؗهئؕعס✑偙כַֹً٭ةֵֿא ׆ךע㳔ֹךն *2 ךֿյ傽䊬溷מ IPA סئؕعם؆י锶םַךյ⚶獗ך锶ג镊ֻ עםַסך׆׆ך㳔שכַֹסעם־ם־곓ַךנն ♀ס䨾ע勓詇סֹם鞋־סؓؗعوشعמרյ蔦⮔ךؓؗعوشع ֹכי鞪יײֵגֿ㳔⺪茣䙎כיע둚אֹךն䍴 י䔵זיַיע✇䕑םַյכַֹ׆כםס־ױ؆ն inMemoryAuthentication ׆סْخشغע霼隍ْٓٛך鉿ֹ׆כ獏ױնْٓٛךסךյئ٭ ف٭⢶婝ף巆ֻיױַױն姌מ鱍ⳛגכ׀מ霼隍䝠㖥⟛䭥ג ״מյwithUser ْخشغ password ْخشغך霼隍䝠㖥陭㴻יַױն 闋鞃ֿꩽׂםױגֿյ䌐倀ך鼥יױזיַقت٠٭غـشبٖⵊ סמ翝׀䳕ֻ✑噺ױնⷃ筙ם需յ䌐倀סقت٠٭غךֵրrootց ـشبٖⵊגס㵅鍮ףַַדׄםסךյ┞䍲㵅갾מـشبٖⵊג סٞءמ⮂ⲇיא⺅⮂י㵅鍮ױն 姌 րBbsAdminWebSecurityConfig.configureց מ阾鼥י BootRun יׂ דַն val password: String = passwordEncoder.encode("root") System.out.println(password) כٞءמـشبٖⵊגقت٠٭غֿٞءמ銨獏סךյؤم٭ יقت٠٭غכי䭰㴻ױֹն׆סכ׀յ䗆מ System.out.println ע ⯸ꯙיֽ׀ױն Ӟٔأز 1.2 عحءُ⻉׃ػأٙ٦س䭷㹀ׅ *2 IPA ס㴗⪢םؘؗهئؕعס✑偙 https://www.ipa.go.jp/security/vuln/websecurity.html 14
1.4 㹋欽涸ז钠鏾ה׃ג盖椚罏歗㹋鄲ׅ 1: // 㢌刿䖓 2: auth.inMemoryAuthentication() 3: .withUser("admin") 4:
.password( 5: "\$2a\$10\$CPNJ.PlWH8k1aMhC6ytjIuwxYuLWKMXTP3H6h.LRnpumtccpvXEGy" 6: ) 7: .authorities("ROLE_ADMIN") 8: 9: // 如כ䘌׆חꤐ׃גֶֻ 10: val password: String = passwordEncoder.encode("root") 11: System.out.println(password) BootRun םֽיյUsername ע adminյقت٠٭غע root ךٞءؕ٤ך ׀ף牞霼 OK ךն׆ךٗ٭ا٭⻏כقت٠٭غ⚈䟨ססמ翝׀䳕ֻ ׆כֿך׀ױגն [㴻劻溷מلٜغBootRunֹն] ┞宜מ㝕ꓪמ㵅鍮י BootRun כؙٚ٭ֿ鱍׀גכ׀ס⮗⮔ׄ ֿ긖⠱מםױնؙٚ٭ٞءꃯַ־ׄחחյ㝕ꓪס㜟剳掾┞⠥ ח锶יַׂסע긖⠱ךנնאיյ긖⠱מםכٓزيֿ┫ֿזי ꅼ״טׂםזיױַױն א׆ךյ䢍םַؤ٭غ剹ַיַׂכ׀ע㸴ח剹ַיעلٜغ כتعٝت┫ׅחח⯼מꅼ؆ךַׄכ䘼ַױնגכֻף 1 ْخش غյ1 نٜؒؕ㵅鍮גلٜغסֹמյٛثّ✑זיַׂכ ַךֹն 1.4.2 ر٦ةك٦أ欽ְגِ٦ؠ٦䞔㜠盖椚ׅ ⚈䟨סٗ٭ا٭כقت٠٭غח硄槏脢ٗ٭ا٭✑䧯ך׀ױגֿյ 硄槏脢ٗ٭ا٭鏿俙㙟גյ⻏⯼قت٠٭غ㜟ֻגׂםזגכ׀מַ הַהخ٭تؤ٭غַסע┮➬ךנն硄槏脢ٗ٭ا٭םסךא؆םמ 㜟剳ֵֿׄךעםַךֹֿյ㸝匡溷מ┞薭ٗ٭ا٭㵅鍮־ םַ׆כ脝ֻכ┞薭ٗ٭ا٭כ⻎坎מظ٭ذي٭تס䝠㖥ך霼隍ך׀גֹ ֿ➬⯈אֹךն כַֹׄךյ׀ל✑䧯ג硄槏脢ٗ٭ا٭ס霼隍䝠㖥ظ٭ذي٭تס 䝠㖥מ㜟剳יײױֹնױע Entity ✑䧯יַ׀ױն Ӟٔأز 1.3 User ך Entity ⡲䧭 15