ඔයා අපේ Java Spring Boot Academy youtube channel එකේ වීඩියො ටික මුල ඉදන් බලල spring ඉගෙන ගත්තා නම් මේ වෙනකොටත් ඔයා දන්නවා spring boot application එකක් හදනකොටම අපිට embedded server එකක් ලැබෙනවා කියලා Apache tomcat එකෙන්.
ඉතින් අපි දැන් එතන ඉදන් මේ spring security application එකක Jwt mechanism එක වැඩ කරන විදිහ ගැන බලමු. අපි දැන් start HTTP එකේ ඉදන් අපේ server එකට request එකක් send කරනවා කියල හිතන්න. ඒ send කලාට පස්සෙ ඒ request එක මුලින්ම එන්නෙ ඔයාට මේ Diagram එකේ අංක 01 දාලා තියෙන JWT AUTHENTICATION FILTER එකට. ඉතින් මේ filter එකෙන් කරන්නෙ අපේ Application එකට එන request ටික filter කරන එක.
ඒ කියන්නේ අපේ application එකට එන හැම request එකක්ම මේ filter එක මගින් filter වෙනවා. ඒ process එකට කියන්නේ (once per request filter) කියල.
ඉතින් මෙන්න මේ Filter එකෙන් තව වැඩක් සිදු වෙනවා. ඒ තමයි මේ filter එක ඇතුලෙදි, JWT TOKEN එක check කරන එක. ඔයාට පේනවා ඇති අංක (01) තිබෙන කොටුවෙ තවත් process එකක් දාලා තියෙනවා කියලා check JWT token කියලා. ඉතින් මේ අවස්ථාවේදී ,
Jwt token එක missing වෙලා නම් client ට send කරනවා response එක ව්දියට http 403 status එකක් token එක missing කියලා. Jwt Token එක හරියට ඇවිත්නම් ඊළඟට වෙන්නෙ, Validation Process එක start වෙන එක. Validation process එකේදී මුලින්ම වෙන්නේ, (02) user details service එක භාවිතයෙන් DB එකට ගිහින් User Information එක fetch කරගන්න try කරන එක. ඉතින් මෙන්න මේ කියන user base වෙන්නෙ අපි set කරන claim එක හෙවත් token subject එක මත. (මෙතනදි වෙන්නෙ මේ log වෙලා ඉන්න user valid person කෙනෙක්ද කියලා check කරගන්න එක)
ඔන්න මම ආයෙමත් කෙටියෙන් මේ ටික ඔයාලට කියල දෙන්නම්. හොඳින් කියවලා ඔලුවට දාගන්න. මේ දාලා තියෙන DIAGROM එකත් එක්ක මේ mechanism එක ඔයලට තේරුම් ගන්න ලේසියි. ඒ idea එකත් එක්ක අපිට spring boot project එකක jwt process එක code කරගන්න ලේසියි.
Client එක පැත්තෙන් අපේ JWT දාලා තියෙන application එකට request එකක් යැව්වම, ඒ එන requests JWT authentication filter එක මගින් filter කරනවා. ඒ filter කරලා jwt token එක check කරලා token එක නැත්නම් token එක missing කියලා response එක දෙනවා. එහෙම නැතිනම් ඒ කියන්නෙ token එක හරියට තියෙනවනම් ඇවිත් තියෙන request එක extract කරලා subject එක අරගෙන ඒ subject එක use කරලා (02) user details service එක මගින් DB එකෙ මේ subject එකට අදාල userව fetch කරගන්නවා. එතකොට user කෙනෙක් ඉන්නවා නම් existing user ව ගන්නවා, එහෙම නැතිනම් non existing user details ටික අරගෙන නැවත එනවා (01) Jwt Authentication filter එකට. ඊට පස්සෙ ඒ subject එකට අනුව user කෙනෙක් නැත්නම් client ට response කරනවා එහෙම user කෙනෙක් නැහැ කියලා. ( user does not exist ). එහෙම නැතිනම් ඒ කියන්නේ DB එකේ data එක තියෙනවනම් ඊලඟට Jwt Authentication Filter එක start කරනවා ඊලඟ step එක වෙන (03) validation process එක.
ඉතින් ඔයාලගෙන් ඉල්ලීමක් කරන්න තියෙනවා. ඔයාල අපේ Java spring boot academy channel එක බලන්න ඒ වගේම subscribe කරලා comment එකක් දාන්න අමතක කරන්නෙපා. මම මේ වැඩේ කරන්නෙ කැම්පස් ඉන්න එහෙමත් නැතිනම් java කරලා ඉන්න ලමයින්ට internship එකකදි වැදගත් වෙන java popular ම framework ගැන නොමිලයේ දැනුම බෙදාදෙන එක. අපේ චැනල් එකේ මේ වෙනකොට A-Z spring boot project එකක් කරගන්න විදිය වගේම ඒ දේවල්වල theory part එකත් අපි ඔයාලට කියල දීලා තියෙනවා. පුලුවන් හැම වෙලාවකම ඔයාලට මම අත්යාවශය වෙන දේවල් මේ site එකේ update කරනවා. දිගටම අපි එක්ක රැඳී ඉන්න. ඒ වගේම මේ අපේ whatsapp number එක ඔයාලට මේ වැඩේ ගැන හිතෙන දේ අපිට කියල එවන්න. ( 076 591 77 47 ). අමතක කරන්නෙපා අපේ youtube videos Like කරන්න comment කරන්න අමතක කරන්නත් එපා. ඒ වගේම ඔයාලගෙ යාලුවන්ට ඉගෙන ගන්නත් මේ සයිට් එක share කරන්න. Thank You.
Diagram එකේ අංක (03) කොටුව බලන්න එතන තමයි මෙ process එක වෙන්නෙ. මෙහිදී Jwt validation එක මගින් Jwt service එක call කරලා check කරනවා jwt token එකේ status එක. එතනදී token එක invalid නම් එහෙමත් නැතිනම් token එක expired වෙලා නම් client ට response කරනවා Jwt token එක Invalid කියලා ( invalid JWT token ) . එහෙමත් නැතිනම් ඒ කියන්නෙ token එක valid නම් කිසිම issue එකක් නැතිනම් jwt service එක මගින් SecurityContextHolder update කරනවා මේ request එක authenticated request එකක් කියලා.
ඉතින් මෙන්න මේ SecurityContextHolder එක authenticated උන ගමන් Automatically Dispatcher Servlet එක update කරලා අපේ request එකට අදාල Controller එකට call කරනවා. ඊට පස්සෙ controller එක හරහා අදාල services call කරල request එකට අදාල response එක යවනවා Success (200 status) කියලා.
ඉතින් මෙන්න මේක තමයි JWT එකේ simple mechanism එක. ඉතින් මේ වැඩේ මේ mechanism එකට spring boot project එකකින් කරගන්න විදිය ගැන video එකක් ලඟදිම ඔයාලට දෙන්නම්.