{"id":90090,"date":"2024-12-27T14:37:01","date_gmt":"2024-12-27T11:07:01","guid":{"rendered":"https:\/\/nabfollower.com\/blog\/learning-jwt-security-using-kumuluzee-the-finances-of-a-league-of-the-environment-1ad3\/"},"modified":"2024-12-27T14:37:01","modified_gmt":"2024-12-27T11:07:01","slug":"learning-jwt-security-using-kumuluzee-the-finances-of-a-league-of-the-environment-1ad3","status":"publish","type":"post","link":"https:\/\/nabfollower.com\/blog\/learning-jwt-security-using-kumuluzee-the-finances-of-a-league-of-the-environment-1ad3\/","title":{"rendered":"\u06cc\u0627\u062f\u06af\u06cc\u0631\u06cc \u0627\u0645\u0646\u06cc\u062a JWT \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 KumuluzEE &#8211; \u0627\u0645\u0648\u0631 \u0645\u0627\u0644\u06cc \u06cc\u06a9 \u0644\u06cc\u06af \u0627\u0632 \u0645\u062d\u06cc\u0637 \u0632\u06cc\u0633\u062a"},"content":{"rendered":"<div data-article-id=\"2177735\" id=\"article-body\">\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter-rtl ez-toc-grey ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">\u0641\u0647\u0631\u0633\u062a \u0645\u0637\u0627\u0644\u0628<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/nabfollower.com\/blog\/learning-jwt-security-using-kumuluzee-the-finances-of-a-league-of-the-environment-1ad3\/#1_%D9%85%D9%82%D8%AF%D9%85%D9%87\" >1. \u0645\u0642\u062f\u0645\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/nabfollower.com\/blog\/learning-jwt-security-using-kumuluzee-the-finances-of-a-league-of-the-environment-1ad3\/#2_%D9%85%D8%AB%D8%A7%D9%84_%D9%85%D9%88%D8%B1%D8%AF%DB%8C\" >2. \u0645\u062b\u0627\u0644 \u0645\u0648\u0631\u062f\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/nabfollower.com\/blog\/learning-jwt-security-using-kumuluzee-the-finances-of-a-league-of-the-environment-1ad3\/#3_%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C\" >3. \u0645\u0639\u0645\u0627\u0631\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/nabfollower.com\/blog\/learning-jwt-security-using-kumuluzee-the-finances-of-a-league-of-the-environment-1ad3\/#4_%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8_%D9%81%D9%86_%D8%A2%D9%88%D8%B1%DB%8C_%D9%87%D8%A7\" >4. \u0627\u0646\u062a\u062e\u0627\u0628 \u0641\u0646 \u0622\u0648\u0631\u06cc \u0647\u0627<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/nabfollower.com\/blog\/learning-jwt-security-using-kumuluzee-the-finances-of-a-league-of-the-environment-1ad3\/#5_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C\" >5. \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/nabfollower.com\/blog\/learning-jwt-security-using-kumuluzee-the-finances-of-a-league-of-the-environment-1ad3\/#6_%DA%A9%D8%AF_%D8%B9%D9%85%D9%84%DB%8C\" >6. \u06a9\u062f \u0639\u0645\u0644\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/nabfollower.com\/blog\/learning-jwt-security-using-kumuluzee-the-finances-of-a-league-of-the-environment-1ad3\/#7_%DA%A9%D8%AF_%D8%B9%D9%85%D9%84%DB%8C\" >7. \u06a9\u062f \u0639\u0645\u0644\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/nabfollower.com\/blog\/learning-jwt-security-using-kumuluzee-the-finances-of-a-league-of-the-environment-1ad3\/#8_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87\" >8. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/nabfollower.com\/blog\/learning-jwt-security-using-kumuluzee-the-finances-of-a-league-of-the-environment-1ad3\/#9_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D9%85%D8%AD%DB%8C%D8%B7_%D8%AA%D8%B3%D8%AA\" >9. \u0627\u06cc\u062c\u0627\u062f \u0645\u062d\u06cc\u0637 \u062a\u0633\u062a<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/nabfollower.com\/blog\/learning-jwt-security-using-kumuluzee-the-finances-of-a-league-of-the-environment-1ad3\/#10_How_is_a_JWT_token_made\" >10. How is a JWT token made<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/nabfollower.com\/blog\/learning-jwt-security-using-kumuluzee-the-finances-of-a-league-of-the-environment-1ad3\/#11_Running_the_application\" >11. Running the application<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/nabfollower.com\/blog\/learning-jwt-security-using-kumuluzee-the-finances-of-a-league-of-the-environment-1ad3\/#12_%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\" >12. \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/nabfollower.com\/blog\/learning-jwt-security-using-kumuluzee-the-finances-of-a-league-of-the-environment-1ad3\/#13_%D9%85%D8%B1%D8%A7%D8%AC%D8%B9\" >13. \u0645\u0631\u0627\u062c\u0639<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"1_%D9%85%D9%82%D8%AF%D9%85%D9%87\"><\/span>\n<p>  1. \u0645\u0642\u062f\u0645\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0627\u0645\u0631\u0648\u0632\u0647 \u0646\u06af\u0631\u0627\u0646\u06cc\u200c\u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0639\u0645\u0644\u06a9\u0631\u062f \u062f\u0627\u0631\u06cc\u0645 \u0648 \u062f\u0631 \u0639\u06cc\u0646 \u062d\u0627\u0644 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u062f\u0627\u0646\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0633\u0631\u06cc\u0639 \u0648 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u0646\u062f. \u062e\u06cc\u0644\u06cc \u0648\u0642\u062a \u0647\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u0645 \u0648 \u062a\u0627 \u062d\u062f \u0627\u0645\u06a9\u0627\u0646 \u0645\u062d\u0631\u0645\u0627\u0646\u0647 \u0648 \u0627\u06cc\u0645\u0646 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u0645. \u06af\u0627\u0647\u06cc \u0627\u0648\u0642\u0627\u062a \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u062d\u0633\u0627\u0633 \u0628\u0627\u06cc\u062f \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0648\u0628 \u0628\u0647 \u0635\u0648\u0631\u062a \u0639\u0645\u0648\u0645\u06cc \u062d\u0631\u06a9\u062a \u06a9\u0646\u0646\u062f \u0648 \u0627\u0642\u062f\u0627\u0645\u0627\u062a\u06cc \u0631\u0627 \u062f\u0631 \u0627\u0646\u062a\u0647\u0627\u06cc \u062f\u06cc\u06af\u0631 \u0633\u06cc\u0645 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u0646\u062f. \u0628\u06cc\u0634\u062a\u0631\u060c \u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0627\u0642\u062f\u0627\u0645\u0627\u062a\u06cc \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0627\u0639\u062b \u062c\u0647\u0634 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0634\u0648\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0627\u0631\u062f\u060c \u0645\u0627 \u0641\u0642\u0637 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u0645\u062d\u0627\u0641\u0638\u062a \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u0646\u06cc\u0633\u062a\u06cc\u0645. \u0645\u0627 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u0645 \u06a9\u0647 \u0627\u0642\u062f\u0627\u0645\u0627\u062a\u06cc \u06a9\u0647 \u0628\u0627 \u0627\u0631\u0633\u0627\u0644 \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u0645\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0647\u0633\u062a\u0646\u062f. \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u062e\u0648\u062f \u0628\u0647 \u0631\u0648\u0634 \u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0645\u062d\u0627\u0641\u0638\u062a \u06a9\u0646\u06cc\u0645. \u0645\u0639\u0645\u0648\u0644\u0627\u064b \u0645\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 a \u0627\u0631\u0633\u0627\u0644 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>TLS<\/code> (Transport Layer Security) \u0627\u062a\u0635\u0627\u0644 \u0627\u06cc\u0645\u0646. \u0627\u06cc\u0646 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0645\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0633\u06cc\u0645 \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0645\u06cc \u0634\u0648\u0646\u062f. \u0645\u0627 \u0627\u0632 \u06af\u0648\u0627\u0647\u06cc \u0647\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u0631\u0648\u0627\u0628\u0637 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0628\u06cc\u0646 \u062f\u0648 \u0637\u0631\u0641 \u0648 \u0631\u0633\u06cc\u062f\u0646 \u0628\u0647 \u0627\u06cc\u0646 \u0647\u062f\u0641 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<br \/>\u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647\u060c \u0645\u0646 \u0645\u06cc \u062e\u0648\u0627\u0647\u0645 \u0628\u0647 \u0628\u062d\u062b \u062f\u0631 \u0645\u0648\u0631\u062f <code>JWT<\/code> \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0648 \u0628\u06cc\u0634\u062a\u0631 \u0628\u0628\u06cc\u0646\u06cc\u062f \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u062f\u063a\u0627\u0645 \u06a9\u0646\u06cc\u0645 <code>JWT<\/code> \u0628\u0647 \u06cc\u06a9 \u0645\u0634\u062a\u0631\u06a9 <code>Enterprise<\/code> \u06a9\u0627\u0631\u0628\u0631\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0635\u0648\u0631\u062a \u0646\u06af\u0627\u0647\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u0627\u0634\u062a <code>KumuluzEE<\/code>.<br \/>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0645\u0641\u0627\u0647\u06cc\u0645 \u0627\u0633\u0627\u0633\u06cc \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645. <code>JWT<\/code> \u06cc\u0627 JSON Web Token \u06cc\u0627 \u0628\u0647\u062a\u0631 \u0627\u0633\u062a \u0628\u06af\u0648\u06cc\u06cc\u0645 JavaScript Object Notation Web Token \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 RFC7519 \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0645\u0627\u0646\u0646\u062f \u0647\u0645\u0647 \u0628\u0648\u062f\u0647 \u0627\u0633\u062a <code>RFC<\/code> \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u0647\u0627\u06cc (Request For Comments) \u062a\u0639\u0631\u06cc\u0641 \u0634\u062f\u0647\u060c \u0646\u0648\u0634\u062a\u0647 \u0648 \u0645\u0646\u062a\u0634\u0631 \u0634\u062f\u0647 \u0627\u0633\u062a <code>IETF<\/code> (\u06af\u0631\u0648\u0647 \u0648\u06cc\u0698\u0647 \u0645\u0647\u0646\u062f\u0633\u06cc \u0627\u06cc\u0646\u062a\u0631\u0646\u062a). \u0645\u06cc \u062a\u0648\u0627\u0646 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0686\u0646\u062f \u0631\u0648\u0634 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f. \u0628\u0647 \u0637\u0648\u0631 \u06a9\u0644\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646 \u06af\u0641\u062a \u06a9\u0647 <code>JWT<\/code> \u06cc\u06a9 \u0634\u06a9\u0644 \u0641\u0634\u0631\u062f\u0647 \u0648 \u0627\u06cc\u0645\u0646 \u0628\u0631\u0627\u06cc \u0627\u0646\u062a\u0642\u0627\u0644 \u0627\u062f\u0639\u0627\u0647\u0627 \u0628\u06cc\u0646 \u062f\u0648 \u0637\u0631\u0641 \u0627\u0633\u062a. \u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0627\u0647\u200c\u0647\u0627\u06cc \u0633\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0627\u062f\u0639\u0627\u060c \u0627\u0633\u0627\u0633\u0627\u064b \u062a\u0648\u0635\u06cc\u0641 \u0622\u0646 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u062c\u0641\u062a \u0646\u0627\u0645\/\u0645\u0642\u062f\u0627\u0631 \u06a9\u0647 \u062d\u0627\u0648\u06cc \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0627\u0633\u062a. \u0645\u0627 \u0628\u0631\u0627\u06cc \u062a\u0636\u0645\u06cc\u0646 \u0686\u0646\u062f \u062c\u0646\u0628\u0647 \u0645\u0647\u0645 \u0627\u0631\u062a\u0628\u0627\u0637 \u0627\u06cc\u0646\u062a\u0631\u0646\u062a\u06cc \u062e\u0648\u062f \u0628\u0647 \u0627\u06cc\u0646 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645. \u0645\u0627 \u0628\u0627\u06cc\u062f \u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u0645 \u06a9\u0647 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u06a9\u0647 \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u06cc \u06a9\u0646\u06cc\u0645 \u062f\u0631 \u0648\u0647\u0644\u0647 \u0627\u0648\u0644 \u0645\u0639\u062a\u0628\u0631 \u0648 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0627\u0633\u062a. \u0633\u067e\u0633 \u0628\u0627\u06cc\u062f \u0622\u0646 \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u06cc\u0645. \u0627\u0633\u0627\u0633\u0627\u064b \u0647\u0645\u06cc\u0646 \u0627\u0633\u062a.<br \/>\u0628\u0647 \u0645\u0646\u0638\u0648\u0631 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u0627\u06cc\u0646 \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u060c \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0686\u0646\u062f\u06cc\u0646 \u0641\u0631\u06cc\u0645\u0648\u0631\u06a9 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0645\u0627 \u062f\u0631 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0633\u0627\u0632\u0645\u0627\u0646\u06cc \u062c\u0627\u0648\u0627 \u06a9\u0645\u06a9 \u06a9\u0646\u062f. \u0686\u06a9\u0645\u0647 \u0641\u0646\u0631\u06cc \u0628\u0647 \u0637\u0648\u0631 \u06af\u0633\u062a\u0631\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0628\u0633\u06cc\u0627\u0631\u06cc \u0627\u0632 \u0627\u0648\u0642\u0627\u062a \u0646\u06cc\u0632 \u062a\u062d\u062a \u0646\u0627\u0645 \u062f\u06cc\u06af\u0631\u06cc \u062f\u0631 \u0646\u0631\u0645 \u0627\u0641\u0632\u0627\u0631\u0647\u0627\u06cc \u062e\u0627\u0635 \u0627\u0632 \u0633\u0627\u0632\u0645\u0627\u0646 \u0647\u0627\u06cc \u062e\u0627\u0635\u06cc \u0645\u0627\u0646\u0646\u062f \u0628\u0627\u0646\u06a9 \u0647\u0627 \u0648 \u0633\u0627\u06cc\u0631 \u0633\u0627\u0632\u0645\u0627\u0646 \u0647\u0627\u06cc \u0645\u0627\u0644\u06cc \u067e\u06cc\u0686\u06cc\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 \u0645\u0627\u060c \u062a\u0635\u0645\u06cc\u0645 \u06af\u0631\u0641\u062a\u0645 \u06a9\u0627\u0631 \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0645. \u0628\u0647\u200c\u062c\u0627\u06cc \u0686\u06a9\u0645\u0647\u200c\u0647\u0627\u06cc \u0628\u0647\u0627\u0631\u060c \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0647 \u0646\u0645\u0648\u0646\u0647\u200c\u0627\u06cc \u0628\u0627 \u0622\u0646 \u0646\u06af\u0627\u0647\u06cc \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645 <code>KumuluzEE<\/code>. \u0646\u06a9\u062a\u0647 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u062f\u0642\u06cc\u0642\u0627\u064b \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0631\u0627 \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u06a9\u0646\u06cc\u062f <code>JWT<\/code> \u0627\u0633\u062a \u0648 \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0631\u0633\u062f. \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc Java Enterprise \u0627\u0633\u0627\u0633\u0627\u064b \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u062f\u0631 \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0633\u062a\u0642\u0631 \u0634\u0648\u0646\u062f \u06cc\u0627 \u0641\u0642\u0637 \u0628\u0647 \u062a\u0646\u0647\u0627\u06cc\u06cc \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u062a\u0639\u0628\u06cc\u0647 \u0634\u062f\u0647 \u0627\u062c\u0631\u0627 \u0634\u0648\u0646\u062f. \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0628\u0631\u0646\u0627\u0645\u0647 \u0647\u0627\u06cc Spring Boot \u0628\u0631 \u0631\u0648\u06cc \u0633\u0631\u0648\u0631 Tomcat \u062a\u0639\u0628\u06cc\u0647 \u0634\u062f\u0647 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u062a\u0645\u0631\u06a9\u0632 \u0645\u0627 \u0628\u0631 \u0631\u0648\u06cc \u0622\u0646 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f <code>KumuluzEE<\/code>. \u062f\u0631\u0633\u062a \u0645\u0627\u0646\u0646\u062f Spring Boot\u060c \u0647\u0645\u0686\u0646\u06cc\u0646 \u062d\u0627\u0648\u06cc \u06cc\u06a9 \u0633\u0631\u0648\u0631 \u062c\u0627\u0633\u0627\u0632\u06cc \u0634\u062f\u0647 \u0627\u0633\u062a. \u0628\u0627 \u0627\u06cc\u0646 \u062a\u0641\u0627\u0648\u062a \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u062c\u062a\u06cc \u0646\u0627\u0645\u06cc\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0627\u06cc\u0646 \u062f\u0631 \u062a\u0631\u06a9\u06cc\u0628 \u0628\u0627 Weld \u0628\u0647 \u0645\u0646\u0638\u0648\u0631 \u0627\u0631\u0627\u0626\u0647 CDI (\u062a\u0632\u0631\u06cc\u0642 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0632\u0645\u06cc\u0646\u0647) \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0647\u0645\u0647 \u062c\u0627\u0648\u0627 <code>EE<\/code> \u0648 <code>Jakarta EE<\/code> \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f\u0647\u0627\u06cc \u0641\u0646\u0627\u0648\u0631\u06cc \u0628\u0627 \u0627\u06cc\u0646 \u0627\u0645\u0631 \u0633\u0627\u0632\u06af\u0627\u0631 \u0627\u0633\u062a <code>framework<\/code>.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"2_%D9%85%D8%AB%D8%A7%D9%84_%D9%85%D9%88%D8%B1%D8%AF%DB%8C\"><\/span>\n<p>  2. \u0645\u062b\u0627\u0644 \u0645\u0648\u0631\u062f\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0647 \u0645\u0646\u0638\u0648\u0631 \u0645\u062b\u0627\u0644 \u0632\u062f\u0646 \u0686\u06af\u0648\u0646\u0647 <code>JWT<\/code> \u0628\u0647 \u0634\u06a9\u0644 \u0627\u0648\u0644\u06cc\u0647\u200c\u0627\u0634 \u06a9\u0627\u0631 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0628\u0627\u06cc\u062f \u0631\u0627\u0647\u06cc \u0628\u0631\u0627\u06cc \u0627\u0631\u0627\u0626\u0647 \u0622\u0646 \u0645\u06cc\u200c\u0627\u0646\u062f\u06cc\u0634\u06cc\u062f\u0645. \u0646\u0645\u0648\u0646\u0647 \u0647\u0627\u06cc \u06a9\u0644\u0627\u0633\u06cc\u06a9 \u06a9\u0647 \u062f\u0631 \u0622\u0646 \u0627\u0645\u0646\u06cc\u062a \u06cc\u06a9 \u0646\u06af\u0631\u0627\u0646\u06cc \u0627\u0633\u062a\u060c \u0628\u0627\u0646\u06a9 \u0647\u0627 \u0647\u0633\u062a\u0646\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0633\u0627\u062e\u062a \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0627\u0646\u06a9\u06cc \u06a9\u0627\u0645\u0644 \u0628\u0631\u0627\u06cc \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0686\u06af\u0648\u0646\u06af\u06cc <code>JWT<\/code> \u06a9\u0627\u0631\u0647\u0627 \u0627\u062a\u0644\u0627\u0641 \u0648\u0642\u062a \u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0648\u062f \u0648 \u0634\u0627\u06cc\u062f \u0645\u0641\u0627\u0647\u06cc\u0645 \u0632\u06cc\u0627\u062f\u06cc \u062f\u0631\u06af\u06cc\u0631 \u0634\u0648\u0646\u062f. \u062f\u0631 \u0639\u0648\u0636 \u0622\u0646\u0686\u0647 \u0645\u0646 \u0633\u0627\u062e\u062a\u0645 \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0628\u0627\u0646\u06a9\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a. \u0646\u06af\u0631\u0627\u0646\u06cc \u0627\u0635\u0644\u06cc \u0645\u0627 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0646\u0634\u0627\u0646 \u062f\u0647\u06cc\u0645 \u0686\u06af\u0648\u0646\u0647 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0633\u06cc\u0645 \u062c\u0631\u06cc\u0627\u0646 \u0645\u06cc \u06cc\u0627\u0628\u062f \u0648 \u0686\u06af\u0648\u0646\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0647 \u0645\u0646\u0627\u0637\u0642 \u062e\u0627\u0635\u06cc \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u067e\u06cc\u062f\u0627 \u0645\u06cc \u06a9\u0646\u0646\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646 \u0642\u0635\u062f \u0646\u062f\u0627\u0631\u0645 \u062f\u0631 \u0645\u0648\u0631\u062f TLS \u06cc\u0627 \u0646\u062d\u0648\u0647 \u0627\u0631\u0633\u0627\u0644 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0633\u06cc\u0645 \u0635\u062d\u0628\u062a \u06a9\u0646\u0645. \u0645\u0627 \u062a\u0645\u0631\u06a9\u0632 \u062e\u0648\u062f \u0631\u0627 \u062d\u0641\u0638 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f <code>JWT<\/code> \u062f\u0631 \u062e\u0627\u0644\u0635 \u062a\u0631\u06cc\u0646 \u0634\u06a9\u0644 \u0622\u0646<br \/>\u0645\u0648\u0631\u062f \u0645\u0627 \u06cc\u06a9 \u0633\u06cc\u0633\u062a\u0645 \u0628\u0627\u0646\u06a9\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062a\u0648\u0633\u0637 \u06af\u0631\u0648\u0647\u06cc \u0645\u062f\u0627\u0641\u0639 \u0637\u0628\u06cc\u0639\u062a \u0648 \u0645\u062d\u06cc\u0637 \u0632\u06cc\u0633\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0627\u06cc\u0646 \u0641\u0642\u0637 \u06cc\u06a9 \u0631\u0627\u0647 \u0633\u0631\u06af\u0631\u0645 \u06a9\u0646\u0646\u062f\u0647 \u0628\u0631\u0627\u06cc \u0646\u0634\u0627\u0646 \u062f\u0627\u062f\u0646 \u0686\u06af\u0648\u0646\u06af\u06cc \u0627\u0633\u062a <code>JWT<\/code> \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f. \u0634\u062e\u0635\u06cc\u062a \u0627\u0635\u0644\u06cc \u0627\u06cc\u0646 \u0644\u06cc\u06af \u0637\u0628\u06cc\u0639\u062a \u0644\u0648\u0633\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062f\u0631 \u062a\u0645\u0627\u0645 \u0645\u0642\u0627\u0644\u0627\u062a \u0645\u0646 \u062f\u0631 \u062d\u0627\u0644 \u062a\u0628\u062f\u06cc\u0644 \u0634\u062f\u0646 \u0628\u0647 \u06cc\u06a9 \u0634\u062e\u0635\u06cc\u062a \u0631\u0627\u06cc\u062c \u0627\u0633\u062a.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"3_%D9%85%D8%B9%D9%85%D8%A7%D8%B1%DB%8C\"><\/span>\n<p>  3. \u0645\u0639\u0645\u0627\u0631\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0642\u0628\u0644 \u0627\u0632 \u0634\u0631\u0648\u0639\u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0641\u0642\u0637 \u0628\u0631\u0646\u0627\u0645\u0647 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u062e\u0648\u062f \u0631\u0627 \u062a\u0631\u0633\u06cc\u0645 \u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u06a9\u0634\u06cc\u062f\u0646 \u0622\u0646 \u0647\u0646\u0648\u0632 \u0647\u0645 \u0686\u06cc\u0632 \u062e\u0648\u0628\u06cc \u0627\u0633\u062a:<\/p>\n<p><\/p>\n<p>\u062f\u0644\u06cc\u0644 \u0627\u06cc\u0646 \u06a9\u0647 \u0627\u06cc\u0646 \u062e\u06cc\u0644\u06cc \u0633\u0627\u062f\u0647 \u0627\u0633\u062a \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0632 \u0622\u0646\u062c\u0627 <code>JWT<\/code> \u062f\u0631 \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0631\u0631\u0633\u06cc \u0645\u06cc \u0634\u0648\u062f \u0648 \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u062a\u0623\u06cc\u06cc\u062f \u0645\u06cc \u0634\u0648\u062f\u060c \u0633\u067e\u0633 \u0645\u06cc \u062f\u0627\u0646\u06cc\u0645 \u06a9\u0647 \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0631\u0645\u0632 \u0635\u062d\u06cc\u062d \u0631\u0627 \u0628\u0631\u0627\u06cc \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u0645\u060c \u0642\u0627\u062f\u0631 \u0628\u0647 \u0627\u0646\u062c\u0627\u0645 \u0622\u0646 \u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0648\u062f. <code>JWT<\/code> \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u0628\u0627 OAuth2\u060c Okta SSO \u06cc\u0627 \u0647\u0631 \u0645\u06a9\u0627\u0646\u06cc\u0632\u0645 \u0645\u062c\u0648\u0632 \u062f\u06cc\u06af\u0631\u06cc \u0627\u062f\u063a\u0627\u0645 \u06a9\u0631\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c \u06a9\u0627\u0631\u06cc \u06a9\u0647 \u0645\u0627 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u06cc\u0645\u060c \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0648 \u0645\u062c\u0648\u0632 \u0627\u0633\u062a. \u062f\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627\u060c \u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645 <code>JWT<\/code> \u0648 \u0628\u0627 \u0622\u0646\u060c \u067e\u06cc\u0627\u0645 \u0645\u0627 \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u06cc\u06a9 \u0627\u0645\u0636\u0627 \u062a\u0623\u06cc\u06cc\u062f \u0627\u0639\u062a\u0628\u0627\u0631 \u06a9\u0646\u06cc\u062f. \u0647\u0631 \u0686\u0646\u062f \u0645\u0627 \u0648\u0627\u0631\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0646\u0645\u06cc \u0634\u0648\u06cc\u0645. \u062f\u0631 \u0639\u0648\u0636\u060c \u0645\u0627 \u0628\u0647 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u06cc\u0645 \u062a\u0627 \u067e\u0633 \u0627\u0632 \u0627\u062d\u0631\u0627\u0632 \u0647\u0648\u06cc\u062a \u0645\u0648\u0641\u0642\u060c \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0646\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u062f\u06cc\u062f\u0646 \u0622\u0646 \u0622\u0633\u0627\u0646 \u0627\u0633\u062a <code>JWT<\/code> \u062f\u0631 \u0647\u0633\u062a\u0647 \u0622\u0646 \u062f\u0631 \u0648\u0627\u0642\u0639 \u0628\u062e\u0634 \u0628\u0633\u06cc\u0627\u0631 \u06a9\u0648\u0686\u06a9\u06cc \u0627\u0632 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0645\u0644 \u0627\u0633\u062a. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0628\u0631\u062e\u06cc \u0627\u0632 \u0642\u0627\u0628\u0644\u06cc\u062a \u0647\u0627 \u0628\u0627\u06cc\u062f \u0627\u0636\u0627\u0641\u0647 \u0634\u0648\u0646\u062f. \u0627\u06cc\u0646\u0647\u0627 \u0645\u0646\u0627\u0628\u0639\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u0645\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645:<\/p>\n<ul>\n<li>\u0633\u06cc\u0633\u062a\u0645 \u062a\u0639\u0627\u062f\u0644<\/li>\n<li>\u0633\u06cc\u0633\u062a\u0645 \u0627\u0639\u062a\u0628\u0627\u0631\u06cc<\/li>\n<\/ul>\n<p>\u0641\u0642\u0637 \u0628\u06af\u0648\u06cc\u06cc\u0645 \u06a9\u0647 \u0633\u06cc\u0633\u062a\u0645 \u067e\u0627\u06cc\u0647 \u0645\u0627 \u0641\u0642\u0637 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u067e\u0648\u0644 \u0648 \u0627\u0639\u062a\u0628\u0627\u0631 \u0631\u0627 \u062b\u0628\u062a \u0645\u06cc \u06a9\u0646\u062f. \u0627\u0633\u0627\u0633\u0627\u064b \u0641\u0642\u0637 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0631\u0627 \u062c\u0645\u0639 \u0645\u06cc \u06a9\u0646\u062f. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0647\u0645\u0686\u0646\u06cc\u0646 \u0641\u0631\u0636 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0631\u062e\u06cc \u0627\u0641\u0631\u0627\u062f \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0639\u062a\u0628\u0627\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u0646\u062f \u0648 \u0628\u0631\u062e\u06cc \u062f\u06cc\u06af\u0631 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f. \u0628\u0631\u062e\u06cc \u0627\u0632 \u0627\u0641\u0631\u0627\u062f \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u067e\u0648\u0644 \u0630\u062e\u06cc\u0631\u0647 \u06a9\u0646\u0646\u062f \u0648 \u0627\u0641\u0631\u0627\u062f \u062f\u06cc\u06af\u0631 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0639\u062a\u0628\u0627\u0631 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u0646\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"4_%D8%A7%D9%86%D8%AA%D8%AE%D8%A7%D8%A8_%D9%81%D9%86_%D8%A2%D9%88%D8%B1%DB%8C_%D9%87%D8%A7\"><\/span>\n<p>  4. \u0627\u0646\u062a\u062e\u0627\u0628 \u0641\u0646 \u0622\u0648\u0631\u06cc \u0647\u0627<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u062f\u0631 \u0645\u0642\u062f\u0645\u0647 \u0630\u06a9\u0631 \u0634\u062f\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f <code>KumuluzEE<\/code> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0686\u0627\u0631\u0686\u0648\u0628 \u0628\u0631\u0646\u0627\u0645\u0647 \u0633\u0627\u0632\u0645\u0627\u0646\u06cc \u0645\u0627\u060c \u0648 \u0645\u0627 \u06cc\u06a9 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u0641\u0648\u0642\u200c\u0627\u0644\u0639\u0627\u062f\u0647 \u0631\u0627 \u0628\u0647 \u06af\u0648\u0646\u0647\u200c\u0627\u06cc \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f \u06a9\u0647 \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0647 \u0627\u0635\u0648\u0644 \u0627\u0648\u0644\u06cc\u0647 \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645 <code>JWT<\/code> \u0627\u0635\u0637\u0644\u0627\u062d\u0627\u062a \u0648 \u0645\u0641\u0627\u0647\u06cc\u0645<br \/>\u0645\u0637\u0645\u0626\u0646 \u0634\u0648\u06cc\u062f \u06a9\u0647 \u0646\u0633\u062e\u0647 \u062c\u0627\u0648\u0627 \u0635\u062d\u06cc\u062d \u0631\u0627 \u062f\u0627\u0631\u06cc\u062f. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0628\u0647 \u062d\u062f\u0627\u0642\u0644 \u062c\u0627\u0648\u0627 17 SDK \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645. \u0645\u0627 \u0628\u0647 maven\u060c git\u060c \u06cc\u06a9 IDE \u0633\u0627\u0632\u06af\u0627\u0631 \u0628\u0627 \u062c\u0627\u0648\u0627 \u0645\u0627\u0646\u0646\u062f IntelliJ \u0648 \u06cc\u06a9 \u067e\u0648\u0633\u062a\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"5_%D8%B1%D8%A7%D9%87_%D8%A7%D9%86%D8%AF%D8%A7%D8%B2%DB%8C\"><\/span>\n<p>  5. \u0631\u0627\u0647 \u0627\u0646\u062f\u0627\u0632\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627\u060c \u0686\u0646\u062f \u0645\u0648\u0631\u062f \u062f\u0627\u0631\u06cc\u0645 <code>KumuluzEE<\/code> \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627 \u0627\u06cc\u0646 \u0639\u0645\u062f\u062a\u0627 \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a <code>KumuluzEE<\/code>\u062f\u0631\u0633\u062a \u0645\u0627\u0646\u0646\u062f Spring Boot \u0628\u0647 \u0686\u0646\u062f \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u062f. \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0646\u06af\u0627\u0647\u06cc \u06a9\u0648\u062a\u0627\u0647 \u0628\u0647 \u0641\u0627\u06cc\u0644 POM \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight xml\"><code><span class=\"nt\"><dependencies\/><\/span>\n    <span class=\"nt\"><dependency\/><\/span>\n        <span class=\"nt\"><groupid\/><\/span>com.kumuluz.ee.openapi<span class=\"nt\"\/>\n        <span class=\"nt\"><artifactid\/><\/span>kumuluzee-openapi-mp<span class=\"nt\"\/>\n    <span class=\"nt\"\/>\n    <span class=\"nt\"><dependency\/><\/span>\n        <span class=\"nt\"><groupid\/><\/span>com.kumuluz.ee.openapi<span class=\"nt\"\/>\n        <span class=\"nt\"><artifactid\/><\/span>kumuluzee-openapi-mp-ui<span class=\"nt\"\/>\n    <span class=\"nt\"\/>\n    <span class=\"nt\"><dependency\/><\/span>\n        <span class=\"nt\"><groupid\/><\/span>com.kumuluz.ee<span class=\"nt\"\/>\n        <span class=\"nt\"><artifactid\/><\/span>kumuluzee-microProfile-3.3<span class=\"nt\"\/>\n    <span class=\"nt\"\/>\n    <span class=\"nt\"><dependency\/><\/span>\n        <span class=\"nt\"><groupid\/><\/span>ch.qos.logback<span class=\"nt\"\/>\n        <span class=\"nt\"><artifactid\/><\/span>logback-core<span class=\"nt\"\/>\n    <span class=\"nt\"\/>\n    <span class=\"nt\"><dependency\/><\/span>\n        <span class=\"nt\"><groupid\/><\/span>ch.qos.logback<span class=\"nt\"\/>\n        <span class=\"nt\"><artifactid\/><\/span>logback-classic<span class=\"nt\"\/>\n    <span class=\"nt\"\/>\n    <span class=\"nt\"><dependency\/><\/span>\n        <span class=\"nt\"><groupid\/><\/span>org.jetbrains.kotlin<span class=\"nt\"\/>\n        <span class=\"nt\"><artifactid\/><\/span>kotlin-stdlib<span class=\"nt\"\/>\n    <span class=\"nt\"\/>\n\n    <span class=\"nt\"><dependency\/><\/span>\n        <span class=\"nt\"><groupid\/><\/span>org.assertj<span class=\"nt\"\/>\n        <span class=\"nt\"><artifactid\/><\/span>assertj-core<span class=\"nt\"\/>\n        <span class=\"nt\"><scope\/><\/span>test<span class=\"nt\"\/>\n    <span class=\"nt\"\/>\n    <span class=\"nt\"><dependency\/><\/span>\n        <span class=\"nt\"><groupid\/><\/span>org.junit.jupiter<span class=\"nt\"\/>\n        <span class=\"nt\"><artifactid\/><\/span>junit-jupiter<span class=\"nt\"\/>\n        <span class=\"nt\"><scope\/><\/span>test<span class=\"nt\"\/>\n    <span class=\"nt\"\/>\n    <span class=\"nt\"><dependency\/><\/span>\n        <span class=\"nt\"><groupid\/><\/span>io.mockk<span class=\"nt\"\/>\n        <span class=\"nt\"><artifactid\/><\/span>mockk-jvm<span class=\"nt\"\/>\n        <span class=\"nt\"><scope\/><\/span>test<span class=\"nt\"\/>\n    <span class=\"nt\"\/>\n    <span class=\"nt\"><dependency\/><\/span>\n        <span class=\"nt\"><groupid\/><\/span>com.ninja-squad<span class=\"nt\"\/>\n        <span class=\"nt\"><artifactid\/><\/span>springmockk<span class=\"nt\"\/>\n        <span class=\"nt\"><scope\/><\/span>test<span class=\"nt\"\/>\n    <span class=\"nt\"\/>\n    <span class=\"nt\"><dependency\/><\/span>\n        <span class=\"nt\"><groupid\/><\/span>io.kotest<span class=\"nt\"\/>\n        <span class=\"nt\"><artifactid\/><\/span>kotest-assertions-core-jvm<span class=\"nt\"\/>\n        <span class=\"nt\"><scope\/><\/span>test<span class=\"nt\"\/>\n    <span class=\"nt\"\/>\n    <span class=\"nt\"\/>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0647 \u0637\u0648\u0631 \u062e\u0644\u0627\u0635\u0647 \u062f\u0631 \u0645\u0648\u0631\u062f \u0686\u0646\u062f \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0628\u062d\u062b \u06a9\u0646\u06cc\u0645. \u0628\u0627 \u062e\u0648\u0627\u0646\u062f\u0646 \u0627\u06cc\u0646 \u0645\u0637\u0644\u0628\u060c \u0644\u0637\u0641\u0627 \u0645\u0627 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0646\u06cc\u062f <code>pom.xml<\/code> \u0641\u0627\u06cc\u0644 \u0627\u0632 \u0628\u0627\u0644\u0627 \u0628\u0647 \u067e\u0627\u06cc\u06cc\u0646 \u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u062f\u0631\u06a9 \u062a\u0648\u0636\u06cc\u062d \u0632\u06cc\u0631 \u0645\u0647\u0645 \u0627\u0633\u062a.<br \/>\u0645\u0627 \u0628\u0647 \u0628\u0633\u062a\u0647\u200c\u0627\u06cc \u0627\u0632 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc\u200c\u0647\u0627 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u06a9\u0627\u0631\u0628\u0631\u062f\u06cc \u062e\u0648\u062f \u0631\u0627 \u0639\u0645\u0644\u06cc \u06a9\u0646\u06cc\u0645. \u060c \u062e\u0648\u0634\u0628\u062e\u062a\u0627\u0646\u0647\u060c <code>KumuluzEE<\/code>\u060c \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0647\u0627\u06cc Microprofile \u0631\u0627 \u062f\u0631 \u0627\u062e\u062a\u06cc\u0627\u0631 \u0645\u0627 \u0642\u0631\u0627\u0631 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u062d\u0627\u0648\u06cc \u0628\u0633\u062a\u0647 \u0647\u0627\u06cc \u0627\u0633\u062a\u0627\u0646\u062f\u0627\u0631\u062f \u0627\u0648\u0644\u06cc\u0647 \u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639 \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0647\u0645\u0647 \u062f\u0631 \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a <code>KumuluzEE<\/code>-\u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0645\u06cc\u06a9\u0631\u0648\u067e\u0631\u0648\u0641\u0627\u06cc\u0644 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u062a\u0645\u0627\u0645 \u0645\u0648\u0627\u0631\u062f \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u0645 <code>JWT<\/code> \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645\u060c \u0628\u0627\u06cc\u062f \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 MicroProfile \u0628\u0647 \u0622\u0646 \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645. \u062f\u0631 \u0639\u06cc\u0646 \u062d\u0627\u0644\u060c \u0645\u0627 \u0628\u0647 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u067e\u0631\u062f\u0627\u0632\u0634 JSON \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645. \u0627\u06cc\u0646 \u0647\u0645\u0627\u0646 \u06a9\u0627\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062c\u0627\u0646\u0633\u0648\u0646 \u06a9\u0648\u0631 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f. \u0645\u0627 \u0627\u0644\u0628\u062a\u0647 \u0628\u0647 \u0647\u0633\u062a\u0647 \u0627\u0635\u0644\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 <code>KumuluzEE<\/code> \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631 \u06a9\u0631\u062f\u0646 Jetty \u0633\u0631\u0648\u0631 \u0627\u0635\u0644\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0633\u0631\u0648\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc \u06a9\u0646\u062f <code>KumuluzEE<\/code> \u0686\u0627\u0631\u0686\u0648\u0628 \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a \u06a9\u0647 \u0645\u0627 \u062f\u0631 \u0648\u0627\u0628\u0633\u062a\u06af\u06cc \u0647\u0627\u06cc \u062e\u0648\u062f \u0628\u0647 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645. \u0628\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0646\u06cc\u0627\u0632 \u0645\u0627 <code>CDI<\/code>\u060c \u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0628\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0627\u06cc \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u06a9\u0647 \u0627\u0632 \u0622\u0646 \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u06a9\u0646\u062f. \u0628\u0631\u0627\u06cc \u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u0646 \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc REST\u060c \u0628\u0647 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 \u0628\u0642\u06cc\u0647 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 <code>KumuluzEE<\/code>. \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 API \u062e\u0648\u062f \u0631\u0627 \u0628\u062f\u0633\u062a \u0622\u0648\u0631\u06cc\u0645\u060c \u0628\u0647 \u06cc\u06a9 \u06a9\u062a\u0627\u0628\u062e\u0627\u0646\u0647 Geronimo \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645. \u0627\u06cc\u0646 \u062a\u0636\u0645\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u0645\u0627 \u0627\u062c\u0631\u0627\u06cc \u0622\u0646 \u0631\u0627 \u062f\u0627\u0631\u06cc\u0645 <code>JSR-374<\/code> \u0645\u0648\u062c\u0648\u062f \u0627\u0633\u062a. \u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0646\u06cc\u0627\u0632 \u0628\u0647 \u062a\u0641\u0633\u06cc\u0631 \u062e\u0648\u062f \u062f\u0627\u0631\u06cc\u0645 <code>JWT<\/code> \u0648 \u0622\u0646 <code>JSON-formatted<\/code> \u0645\u0637\u0627\u0644\u0628<br \/>\u0644\u0648\u0645\u0628\u0648\u06a9 \u0641\u06cc \u0646\u0641\u0633\u0647 \u0648\u0627\u0642\u0639\u0627 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0646\u06cc\u0633\u062a. \u0627\u06cc\u0646 \u0641\u0642\u0637 \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0627 \u0632\u06cc\u0628\u0627 \u0648 \u0628\u0631\u0627\u0642 \u0645\u06cc \u06a9\u0646\u062f! \u062f\u0627\u0634\u062a\u0646 Logback \u0646\u06cc\u0632 \u0645\u0647\u0645 \u0627\u0633\u062a \u062a\u0627 \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 \u06af\u0632\u0627\u0631\u0634\u200c\u0647\u0627 \u0631\u0627 \u0628\u0647\u062a\u0631 \u062a\u0641\u0633\u06cc\u0631 \u06a9\u0646\u06cc\u0645 \u0648 \u0646\u062a\u0627\u06cc\u062c \u062e\u0648\u062f \u0631\u0627 \u062f\u0631\u06a9 \u06a9\u0646\u06cc\u0645.<br \/>\u062d\u0627\u0644\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0645\u0627 \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645 <code>resources<\/code> \u067e\u0648\u0634\u0647<br \/>\u0628\u0631\u0627\u06cc \u0634\u0631\u0648\u0639\u060c \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0627\u0628\u062a\u062f\u0627 \u0622\u0646\u0686\u0647 \u0631\u0627 \u06a9\u0647 \u0627\u0646\u062a\u0638\u0627\u0631 \u062f\u0627\u0631\u06cc\u0645 \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0648\u0634\u0647 \u067e\u06cc\u062f\u0627 \u06a9\u0646\u06cc\u0645\u060c \u062f\u0631\u06a9 \u06a9\u0646\u06cc\u0645. \u0645\u0627 \u0628\u0627\u06cc\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0686\u06cc\u0632\u06cc \u0645\u0631\u062a\u0628\u0637 \u0628\u0627 \u0622\u0646 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u06a9\u0646\u06cc\u0645 <code>JWT<\/code>\u060c Logback \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0628\u0627\u06cc\u062f \u062f\u0631 \u0645\u0648\u0631\u062f \u0644\u0648\u0628\u06cc\u0627\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u0628\u0633\u0627\u0632\u06cc\u0645 \u0686\u06cc\u0632\u06cc \u0628\u06af\u0648\u06cc\u06cc\u0645.<br \/>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0633\u0627\u062f\u0647 \u062a\u0631\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0631\u0627 \u062f\u0631 \u0622\u0646\u062c\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645. beans.xml \u0631\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646 \u062f\u0631 META-INF \u06cc\u0627\u0641\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight xml\"><code><span class=\"nt\"><beans> <span class=\"na\">xmlns=<\/span><span class=\"s\">\"http:\/\/xmlns.jcp.org\/xml\/ns\/javaee\"<\/span>\n       <span class=\"na\">xmlns:xsi=<\/span><span class=\"s\">\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\"<\/span>\n       <span class=\"na\">xsi:schemaLocation=<\/span><span class=\"s\">\"http:\/\/xmlns.jcp.org\/xml\/ns\/javaee\n        http:\/\/xmlns.jcp.org\/xml\/ns\/javaee\/beans_1_1.xsd\"<\/span>\n       <span class=\"na\">xmlns:weld=<\/span><span class=\"s\">\"http:\/\/jboss.org\/schema\/weld\/beans\"<\/span>\n       <span class=\"na\">bean-discovery-mode=<\/span><span class=\"s\">\"all\"<\/span><span class=\"nt\">&gt;<\/span>\n    <span class=\"nt\"><scan\/><\/span>\n        <span class=\"nt\"><exclude> <span class=\"na\">name=<\/span><span class=\"s\">\"org.jesperancinha.fintech.model.Accounts\"<\/span><span class=\"nt\">\/&gt;<\/span>\n    <span class=\"nt\"\/>\n<span class=\"nt\"\/><\/exclude><\/span><\/beans><\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0641\u0642\u0637 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0645\u0639\u0645\u0648\u0644\u06cc \u0648 \u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u0627\u06a9\u0646\u0648\u0646 \u0641\u06a9\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u062f\u060c \u06a9\u0645\u06cc \u06cc\u06a9 \u0641\u0627\u06cc\u0644 \u0642\u062f\u06cc\u0645\u06cc \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0627\u06cc\u062f\u0647 \u0641\u0642\u0637 \u0628\u0647 \u062f\u0633\u062a \u0622\u0648\u0631\u062f\u0646 \u0627\u0633\u062a <code>KumuluzEE<\/code> \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0645\u0627 \u06cc\u06a9 \u0627\u0642\u062f\u0627\u0645 \u062d\u0630\u0641 \u062f\u0627\u0631\u06cc\u0645. \u0627\u06cc\u0646 \u0628\u0647 Weld \u0645\u06cc\u200c\u06af\u0648\u06cc\u062f \u06a9\u0647 \u062f\u0631 \u0627\u0633\u06a9\u0646 \u06a9\u0631\u062f\u0646 \u0628\u0631\u0627\u06cc \u0639\u0645\u0644\u06a9\u0631\u062f beans\u060c \u06a9\u0644\u0627\u0633 Accounts \u0631\u0627 \u062f\u0631 \u0646\u0638\u0631 \u0646\u06af\u06cc\u0631\u062f. \u0627\u06cc\u0646 \u0645\u0647\u0645 \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u0628\u0627 \u067e\u06cc\u0627\u062f\u0647 \u0633\u0627\u0632\u06cc \u06a9\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c <code>Weld<\/code> \u0627\u0633\u0627\u0633\u0627\u064b \u0647\u0631 \u06a9\u0644\u0627\u0633 \u0628\u0627 \u0633\u0627\u0632\u0646\u062f\u0647 \u062e\u0627\u0644\u06cc \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0644\u0648\u0628\u06cc\u0627 \u062f\u0631 \u0646\u0638\u0631 \u0645\u06cc \u06af\u06cc\u0631\u062f. \u0628\u0639\u062f\u0627\u064b \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u06cc\u062f \u06a9\u0647 \u0686\u0631\u0627 \u0646\u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u062d\u0633\u0627\u0628\u200c\u0647\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0644\u0648\u0628\u06cc\u0627 \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0647 \u0634\u0648\u0646\u062f. \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631\u060c \u0628\u0647 \u062e\u0627\u0637\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0627\u0631\u0627\u0626\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627\u06cc\u06cc \u062a\u062d\u062a \u0645\u062d\u062f\u0648\u062f\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0633\u062a\u06cc\u0645. \u0627\u06cc\u0646 \u0645\u0646\u0637\u0642\u06cc \u0627\u0633\u062a \u0632\u06cc\u0631\u0627 \u0647\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06a9\u0627\u0631\u0628\u0631 \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<br \/>\u062d\u0627\u0644\u0627 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0686\u0637\u0648\u0631&#8221;<code>logback<\/code>&#8221; \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646 \u062f\u0631 \u06cc\u0627\u0641\u062a \u0645\u06cc \u0634\u0648\u062f <code>META-INF<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight xml\"><code><span class=\"nt\"><configuration\/><\/span>\n    <span class=\"nt\"><appender> <span class=\"na\">name=<\/span><span class=\"s\">\"STDOUT\"<\/span> <span class=\"na\">class=<\/span><span class=\"s\">\"ch.qos.logback.core.ConsoleAppender\"<\/span><span class=\"nt\">&gt;<\/span>\n        <span class=\"nt\"><encoder\/><\/span>\n            <span class=\"nt\"><pattern\/><\/span>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n<span class=\"nt\"\/>\n        <span class=\"nt\"\/>\n    <span class=\"nt\"\/><\/appender><\/span>\n\n    <span class=\"nt\"><root> <span class=\"na\">level=<\/span><span class=\"s\">\"INFO\"<\/span><span class=\"nt\">&gt;<\/span>\n        <span class=\"nt\"><appender-ref> <span class=\"na\">ref=<\/span><span class=\"s\">\"STDOUT\"<\/span><span class=\"nt\">\/&gt;<\/span>\n    <span class=\"nt\"\/><\/appender-ref><\/span><\/root><\/span>\n<span class=\"nt\"\/>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0641\u0642\u0637 \u06cc\u06a9 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0628\u0633\u06cc\u0627\u0631 \u0633\u0627\u062f\u0647 \u0628\u0631\u0627\u06cc \u0645\u0627 \u0627\u0633\u062a <code>logs<\/code>.<br \/>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0634\u0627\u06cc\u062f \u0645\u0647\u0645\u062a\u0631\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627 \u0628\u0627\u0634\u062f. \u0627\u06cc\u0646 \u0642\u0627\u0644\u0628 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0627\u0633\u062a. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647\u060c \u0630\u06a9\u0631 \u0627\u06cc\u0646 \u0646\u06a9\u062a\u0647 \u0636\u0631\u0648\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0641\u0627\u06cc\u0644\u200c\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0631\u0648\u0698\u0647 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647\u200c\u0627\u0645 \u0628\u062e\u0634\u06cc \u0627\u0632 \u0633\u0627\u062e\u062a\u0627\u0631 \u0642\u0627\u0644\u0628 \u0647\u0633\u062a\u0646\u062f. \u0628\u0639\u062f\u0627\u064b \u062f\u0631 \u0645\u0648\u0631\u062f \u0622\u0646 \u0628\u06cc\u0634\u062a\u0631 \u062a\u0648\u0636\u06cc\u062d \u062e\u0648\u0627\u0647\u0645 \u062f\u0627\u062f. \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u0642\u0627\u0644\u0628 \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u0628\u0647 \u06cc\u06a9 \u0641\u0627\u06cc\u0644 config.yml \u062a\u0628\u062f\u06cc\u0644 \u0634\u0648\u062f \u06a9\u0647 \u062a\u0648\u0633\u0637 MicroProfile \u062e\u0648\u0627\u0646\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 \u062f\u0631 \u0631\u06cc\u0634\u0647 \u0645\u0646\u0627\u0628\u0639 \u0642\u0631\u0627\u0631 \u062f\u0627\u0631\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight yaml\"><code><span class=\"na\">kumuluzee<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">your-financeje-banking<\/span>\n  <span class=\"na\">version<\/span><span class=\"pi\">:<\/span> <span class=\"s\">1.0.0<\/span>\n  <span class=\"na\">jwt-auth<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">public-key<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">{{<\/span> <span class=\"nv\">publicKey<\/span> <span class=\"pi\">}}<\/span>\n    <span class=\"na\">issuer<\/span><span class=\"pi\">:<\/span> <span class=\"pi\">{{<\/span> <span class=\"nv\">issuer<\/span> <span class=\"pi\">}}<\/span>\n<span class=\"na\">healthy<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">true<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0639\u062f\u0627\u064b \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u06cc\u062f \u06a9\u0647 \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u0647 \u0627\u06cc\u0646 \u0648\u06cc\u0698\u06af\u06cc \u0647\u0627 \u0628\u0647 \u0686\u0647 \u0645\u0639\u0646\u0627 \u0647\u0633\u062a\u0646\u062f. \u0647\u0645\u0647 \u0622\u0646\u0647\u0627 \u062e\u0648\u062f \u062a\u0648\u0636\u06cc\u062d\u06cc \u0647\u0633\u062a\u0646\u062f. \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u0648 \u0635\u0627\u062f\u0631\u06a9\u0646\u0646\u062f\u0647 \u0647\u0645\u0647 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc\u06cc \u0647\u0633\u062a\u0646\u062f \u06a9\u0647 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u062e\u0648\u0627\u0647\u0646\u062f \u0634\u062f. \u062f\u0631 \u0627\u062f\u0627\u0645\u0647 \u0622\u0646 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f. \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a \u0647\u0627\u06cc bash \u0645\u0627 \u0645\u0637\u0645\u0626\u0646 \u0645\u06cc \u0634\u0648\u0646\u062f \u06a9\u0647 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0645\u06cc \u0634\u0648\u0646\u062f.<br \/>\u0645\u0627 \u062a\u0642\u0631\u06cc\u0628\u0627\u064b \u0622\u0645\u0627\u062f\u0647 \u06a9\u062f\u0646\u0648\u06cc\u0633\u06cc \u0647\u0633\u062a\u06cc\u0645\u060c \u0627\u0645\u0627 \u0627\u0628\u062a\u062f\u0627 \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u062f \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645 <code>JWT<\/code> \u0633\u0627\u062e\u062a\u0627\u0631 \u0646\u0634\u0627\u0646\u0647<\/p>\n<h2><span class=\"ez-toc-section\" id=\"6_%DA%A9%D8%AF_%D8%B9%D9%85%D9%84%DB%8C\"><\/span>\n<p>  6. \u06a9\u062f \u0639\u0645\u0644\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u0628\u0633\u06cc\u0627\u0631 \u06a9\u0648\u0686\u06a9 \u062e\u0648\u062f \u0631\u0627 \u0628\u0633\u0627\u0632\u06cc\u0645. \u0627\u06cc\u0646 \u0628\u062e\u0634 \u062a\u0648\u0636\u06cc\u062d \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 \u0622\u0646 \u06a9\u0627\u0631 \u06a9\u0646\u06cc\u0645 <code>JWT<\/code>. \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0622\u06cc\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0628\u0631\u062e\u06cc \u0627\u0632 \u0645\u0627 \u0645\u0634\u062e\u0635 \u06a9\u0646\u06cc\u0645 <code>REST<\/code> \u0631\u0648\u0634 \u0647\u0627 \u0648 \u0646\u0647 \u062f\u06cc\u06af\u0631\u0627\u0646<br \/>\u06cc\u06a9\u06cc \u0627\u0632 \u0631\u0627\u0647\u200c\u0647\u0627\u06cc \u0634\u0631\u0648\u0639 \u0628\u0647 \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646 \u06a9\u062f \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0628\u062a\u062f\u0627 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u062f\u0634\u062a \u062e\u0648\u062f \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u062f <code>JWT<\/code> \u0646\u0634\u0627\u0646\u0647 \u0627\u06cc\u0646 \u0645\u062b\u0627\u0644 \u0645\u062f\u06cc\u0631 \u0645\u0627 \u0627\u0633\u062a:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight json\"><code><span class=\"p\">{<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"iss\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"joaofilipesabinoesperancinha\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"jti\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"01MASTERFINANCE\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"sub\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"admin\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"aud\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"nature\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"upn\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"admin\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"groups\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"p\">[<\/span><span class=\"w\">\n    <\/span><span class=\"s2\">\"user\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"s2\">\"admin\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"s2\">\"client\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n    <\/span><span class=\"s2\">\"credit\"<\/span><span class=\"w\">\n  <\/span><span class=\"p\">],<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"user_id\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"mi\">1<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"access\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"TOP\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"name\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"Admin\"<\/span><span class=\"w\">\n<\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0631 \u06cc\u06a9 \u0627\u0632 \u0627\u06cc\u0646 \u0646\u0627\u0645 \u0647\u0627 \u062f\u0631 \u0645\u0627 <code>JSON<\/code> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0627\u062f\u0639\u0627 \u0646\u0627\u0645\u06cc\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f. \u062f\u0631 \u0645\u062b\u0627\u0644 \u0645\u0627\u060c \u0686\u0646\u062f \u0627\u062f\u0639\u0627\u06cc Reserved \u0631\u0627 \u0645\u06cc \u0628\u06cc\u0646\u06cc\u0645:<\/p>\n<ul>\n<li>&#8220;<code>iss<\/code>&#8221; \u2014 \u0627\u06cc\u0646 \u0635\u0627\u062f\u0631 \u06a9\u0646\u0646\u062f\u0647 \u0646\u0634\u0627\u0646\u0647 \u0627\u0633\u062a. \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u062e\u0648\u062f\u0633\u0631\u0627\u0646\u0647 \u0645\u0642\u062f\u0627\u0631\u06cc \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u0645. \u0645\u0642\u062f\u0627\u0631 \u0627\u06cc\u0646 \u067e\u0627\u0631\u0627\u0645\u062a\u0631 \u0628\u0627\u06cc\u062f \u0628\u0627 \u0645\u062a\u063a\u06cc\u0631 \u0635\u0627\u062f\u0631\u06a9\u0646\u0646\u062f\u0647 \u0645\u0637\u0627\u0628\u0642\u062a \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u062a\u0627 \u062f\u0631 config.yml \u06a9\u0647 \u0642\u0628\u0644\u0627 \u062f\u06cc\u062f\u0647 \u0627\u06cc\u0645 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u0634\u0648\u062f.<\/li>\n<li>&#8220;<code>jti<\/code>&#8221; \u2014 \u0627\u06cc\u0646 \u06cc\u06a9 \u0634\u0646\u0627\u0633\u0647 \u0645\u0646\u062d\u0635\u0631\u0628\u0647\u200c\u0641\u0631\u062f \u0628\u0631\u0627\u06cc \u0631\u0645\u0632 \u0627\u0633\u062a. \u0628\u0631\u0627\u06cc \u0645\u062b\u0627\u0644 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0627\u06cc\u0646 \u0627\u062f\u0639\u0627 \u0628\u0631\u0627\u06cc \u062c\u0644\u0648\u06af\u06cc\u0631\u06cc \u0627\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062f\u0648 \u0628\u0627\u0631 \u06cc\u0627 \u0628\u06cc\u0634\u062a\u0631 \u0627\u0632 \u06cc\u06a9 \u062a\u0648\u06a9\u0646 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645.<\/li>\n<li>&#8220;<code>sub<\/code>&#8221; \u2014 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u062a\u0648\u06a9\u0646 \u0627\u0633\u062a. \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u06a9\u0627\u0631\u0628\u0631 \u06cc\u0627 \u0647\u0631 \u0686\u06cc\u0632\u06cc \u0628\u0627\u0634\u062f \u06a9\u0647 \u0645\u0627 \u062f\u0648\u0633\u062a \u062f\u0627\u0631\u06cc\u0645. \u0645\u0647\u0645 \u0627\u0633\u062a \u0628\u0647 \u062e\u0627\u0637\u0631 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0634\u0646\u0627\u0633\u0647\u060c \u06a9\u0644\u06cc\u062f\u060c \u0646\u0627\u0645 \u06af\u0630\u0627\u0631\u06cc \u06cc\u0627 \u0647\u0631 \u0686\u06cc\u0632\u06cc \u06a9\u0647 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0646\u06cc\u0632 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0634\u0648\u062f.<\/li>\n<li>&#8220;<code>upn<\/code>&#8221; \u2014 \u0646\u0627\u0645 \u0627\u0635\u0644\u06cc \u06a9\u0627\u0631\u0628\u0631. \u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0627\u0635\u0644\u06cc \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u0634\u0648\u062f.<\/li>\n<li>&#8220;<code>groups<\/code>&#8221; \u2014 \u0627\u06cc\u0646 \u0622\u0631\u0627\u06cc\u0647 \u0627\u06cc \u0627\u0632 \u06af\u0631\u0648\u0647 \u0647\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0641\u0639\u0644\u06cc \u0628\u0647 \u0622\u0646\u0647\u0627 \u062a\u0639\u0644\u0642 \u062f\u0627\u0631\u062f. \u0627\u0633\u0627\u0633\u0627\u064b \u0627\u06cc\u0646 \u0645\u0634\u062e\u0635 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0627 \u0627\u06cc\u0646 \u062a\u0648\u06a9\u0646 \u0686\u0647 \u06a9\u0627\u0631\u06cc \u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u062f. \u0633\u067e\u0633 \u062f\u0631 \u062a\u0648\u06a9\u0646 \u0645\u0627\u060c \u0686\u0646\u062f \u0627\u062f\u0639\u0627\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0631\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u0632 \u0627\u06cc\u0646 \u0646\u06cc\u0632 \u0628\u0647 \u062e\u0648\u0628\u06cc Reserved \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645. \u0627\u062f\u0639\u0627 \u0645\u06cc \u06a9\u0646\u062f<\/li>\n<li>&#8220;<code>user_id<\/code>&#8221; \u2014 \u0645\u0627 \u0627\u0632 \u0627\u06cc\u0646 \u0628\u0631\u0627\u06cc \u062a\u0646\u0638\u06cc\u0645 \u0634\u0646\u0627\u0633\u0647 \u06a9\u0627\u0631\u0628\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<\/li>\n<li>&#8220;<code>access<\/code>&#8221; \u2014 \u0645\u0627 \u0633\u0637\u062d \u062f\u0633\u062a\u0631\u0633\u06cc \u06a9\u0627\u0631\u0628\u0631 \u0631\u0627 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u06cc \u06a9\u0646\u06cc\u0645.<\/li>\n<li>&#8220;<code>name<\/code>&#8221; &#8211; \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"7_%DA%A9%D8%AF_%D8%B9%D9%85%D9%84%DB%8C\"><\/span>\n<p>  7. \u06a9\u062f \u0639\u0645\u0644\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u062e\u0644\u0627\u0635\u0647 \u0627\u06cc \u0627\u0632 \u0622\u0646\u0686\u0647 \u0631\u0627 \u06a9\u0647 \u062a\u0627 \u0628\u0647 \u062d\u0627\u0644 \u0645\u06cc \u062f\u0627\u0646\u06cc\u0645 \u0628\u0633\u0627\u0632\u06cc\u0645. \u0645\u0627 \u0645\u06cc \u062f\u0627\u0646\u06cc\u0645 \u06a9\u0647 \u0628\u0627 \u062a\u0648\u06a9\u0646 \u0647\u0627 \u0628\u0627 \u0633\u0627\u062e\u062a\u0627\u0631\u06cc \u06a9\u0647 \u062a\u0639\u06cc\u06cc\u0646 \u06a9\u0631\u062f\u0647 \u0627\u06cc\u0645 \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f. \u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0645\u0627 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f\u060c \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc logback \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645 \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u06cc\u06a9 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u0628\u0631\u0627\u06cc \u062c\u0633\u062a\u062c\u0648\u06cc bean \u0633\u0627\u0632\u0645\u0627\u0646\u06cc \u062a\u0646\u0638\u06cc\u0645 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u0645.<br \/>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0645\u062f\u0644 \u0628\u0633\u062a\u0647 \u0628\u0646\u062f\u06cc \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645. \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0645\u0627 3 \u06a9\u0644\u0627\u0633 \u0631\u0627 \u067e\u06cc\u062f\u0627 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f. \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633\u200c\u0647\u0627 \u0627\u0633\u0627\u0633\u0627\u064b \u0641\u0642\u0637 \u0646\u0634\u0627\u0646\u200c\u062f\u0647\u0646\u062f\u0647 \u062a\u062c\u0645\u06cc\u0639 \u062d\u0633\u0627\u0628\u200c\u0647\u0627 \u0648 \u0646\u0645\u0627\u06cc\u0646\u062f\u06af\u06cc \u0628\u06cc\u0646 \u0622\u0646\u200c\u0647\u0627 \u0647\u0633\u062a\u0646\u062f <code>client<\/code> \u0648 <code>account<\/code>. \u0628\u0647 \u0627\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0627 \u0645\u0634\u0627\u0647\u062f\u0647 \u0641\u0627\u06cc\u0644 kotlin Model.kt Where \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645 <code>Client<\/code> \u0648\u0627\u0642\u0639 \u062f\u0631:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight kotlin\"><code><span class=\"kd\">data class<\/span> <span class=\"nc\">Client<\/span> <span class=\"k\">constructor<\/span><span class=\"p\">(<\/span>\n    <span class=\"nd\">@JsonProperty<\/span>\n    <span class=\"kd\">var<\/span> <span class=\"py\">name<\/span><span class=\"p\">:<\/span> <span class=\"nc\">String<\/span> <span class=\"p\">?=<\/span> <span class=\"k\">null<\/span>\n<span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0645\u062f\u0644 \u0627\u0648\u0644 \u0646\u0645\u0627\u06cc\u0646\u062f\u0647 \u0645\u0634\u062a\u0631\u06cc \u0645\u0627 \u0627\u0633\u062a. \u0645\u0627 <code>client<\/code> \u0628\u0631\u0627\u06cc \u0645\u0648\u0631\u062f \u0645\u0627 \u0641\u0642\u0637 \u06cc\u06a9 \u0646\u0627\u0645 \u062f\u0627\u0631\u062f. \u0627\u06cc\u0646 \u0646\u0627\u0645 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062a\u0648\u0633\u0637 &#8220;<code>jwt<\/code>&#8220;\u0646\u0627\u0645 \u0648\u06cc\u0698\u06af\u06cc.<br \/>\u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0645\u0627 \u062f\u0627\u0631\u06cc\u0645 <code>Account<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight kotlin\"><code><span class=\"kd\">data class<\/span> <span class=\"nc\">Account<\/span><span class=\"p\">(<\/span>\n    <span class=\"nd\">@JsonProperty<\/span>\n    <span class=\"kd\">val<\/span> <span class=\"py\">accountNumber<\/span><span class=\"p\">:<\/span> <span class=\"nc\">String<\/span><span class=\"p\">?,<\/span>\n    <span class=\"nd\">@JsonProperty<\/span>\n    <span class=\"kd\">val<\/span> <span class=\"py\">client<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Client<\/span><span class=\"p\">?<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span><span class=\"p\">,<\/span>\n    <span class=\"nd\">@JsonProperty<\/span>\n    <span class=\"kd\">var<\/span> <span class=\"py\">currentValue<\/span><span class=\"p\">:<\/span> <span class=\"nc\">BigDecimal<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">BigDecimal<\/span><span class=\"p\">.<\/span><span class=\"nc\">ZERO<\/span><span class=\"p\">,<\/span>\n    <span class=\"nd\">@JsonProperty<\/span>\n    <span class=\"kd\">var<\/span> <span class=\"py\">creditValue<\/span><span class=\"p\">:<\/span> <span class=\"nc\">BigDecimal<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">BigDecimal<\/span><span class=\"p\">.<\/span><span class=\"nc\">ZERO<\/span>\n<span class=\"p\">)<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">fun<\/span> <span class=\"nf\">addCurrentValue<\/span><span class=\"p\">(<\/span><span class=\"n\">value<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Long<\/span><span class=\"p\">)<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">Account<\/span><span class=\"p\">(<\/span>\n        <span class=\"n\">accountNumber<\/span><span class=\"p\">,<\/span> <span class=\"n\">client<\/span><span class=\"p\">,<\/span> <span class=\"n\">currentValue<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nc\">BigDecimal<\/span><span class=\"p\">.<\/span><span class=\"nf\">valueOf<\/span><span class=\"p\">(<\/span><span class=\"n\">value<\/span><span class=\"p\">)),<\/span> <span class=\"n\">creditValue<\/span>\n    <span class=\"p\">)<\/span>\n\n    <span class=\"k\">fun<\/span> <span class=\"nf\">addCreditValue<\/span><span class=\"p\">(<\/span><span class=\"n\">value<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Long<\/span><span class=\"p\">):<\/span> <span class=\"nc\">Account<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">Account<\/span><span class=\"p\">(<\/span>\n        <span class=\"n\">accountNumber<\/span><span class=\"p\">,<\/span> <span class=\"n\">client<\/span><span class=\"p\">,<\/span> <span class=\"n\">currentValue<\/span><span class=\"p\">,<\/span> <span class=\"n\">currentValue<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"nc\">BigDecimal<\/span><span class=\"p\">.<\/span><span class=\"nf\">valueOf<\/span><span class=\"p\">(<\/span><span class=\"n\">value<\/span><span class=\"p\">))<\/span>\n    <span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633\u060c \u0645\u0627 \u0627\u0633\u0627\u0633\u0627 \u06cc\u06a9 accountNumber\u060c \u06cc\u06a9 \u0645\u0634\u062a\u0631\u06cc\u060c \u06cc\u06a9 currentValue \u0648 \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u06cc\u06a9 creditValue \u0631\u0627 \u062a\u0646\u0638\u06cc\u0645 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0645\u0627 \u0647\u0645\u0647 \u0645\u0642\u0627\u062f\u06cc\u0631 \u0631\u0627 \u0631\u0648\u06cc 0 \u067e\u06cc\u0634 \u0641\u0631\u0636 \u0642\u0631\u0627\u0631 \u0645\u06cc \u062f\u0647\u06cc\u0645. \u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u0632 BigDecimal \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645\u060c \u0635\u0631\u0641\u0627\u064b \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u06a9\u0647 \u0628\u0627 \u067e\u0648\u0644 \u0633\u0631\u0648\u06a9\u0627\u0631 \u062f\u0627\u0631\u06cc\u0645. \u067e\u0648\u0644 \u0628\u0627\u06cc\u062f \u062f\u0642\u06cc\u0642 \u0628\u0627\u0634\u062f \u0648 \u0646\u0645\u06cc \u062a\u0648\u0627\u0646\u062f \u0645\u062a\u062d\u0645\u0644 \u062c\u0645\u0639 \u0634\u062f\u0646 \u06cc\u0627 \u0631\u06cc\u0632\u0634 \u0633\u06cc\u0633\u062a\u0645 \u0634\u0648\u062f. \u0628\u0647 \u0639\u0628\u0627\u0631\u062a \u062f\u06cc\u06af\u0631 \u0648 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0639\u062f\u062f\u06cc \u0645\u0627\u0646\u0646\u062f 0.<code>0000000000000000000000000000000000000000000000000001<\/code> \u06cc\u0648\u0631\u0648 \u0628\u0627\u06cc\u062f \u0647\u0645\u06cc\u0634\u0647 \u0627\u06cc\u0646 \u0639\u062f\u062f \u0628\u0627\u0642\u06cc \u0628\u0645\u0627\u0646\u062f. \u0647\u0645\u0686\u0646\u06cc\u0646\u060c \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0645\u0642\u0627\u062f\u06cc\u0631\u06cc \u0631\u0627 \u0628\u0647 \u062d\u0633\u0627\u0628 \u062e\u0648\u062f \u0627\u0636\u0627\u0641\u0647 \u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 \u0645\u062a\u062f addCurrentValue \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062f\u0644\u0627\u06cc\u0644\u060c \u0645\u0627 \u0646\u06cc\u0632 \u0627\u0639\u062a\u0628\u0627\u0631 \u062e\u0648\u062f \u0631\u0627 \u0628\u0627 <code>addCreditValue<\/code>.<br \/>\u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u062f\u0631 \u0622\u062e\u0631\u06cc\u0646 \u0642\u0637\u0639\u0647 \u0627\u0632 \u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u062f\u0627\u062f\u0647 \u0645\u0627 \u0628\u0627 \u06a9\u0644\u0627\u0633 \u0645\u0648\u0627\u062c\u0647 \u0645\u06cc \u0634\u0648\u06cc\u0645 <code>Accounts<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight kotlin\"><code><span class=\"k\">open<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">Accounts<\/span> <span class=\"k\">constructor<\/span><span class=\"p\">(<\/span>\n    <span class=\"k\">open<\/span> <span class=\"kd\">val<\/span> <span class=\"py\">accountMap<\/span><span class=\"p\">:<\/span> <span class=\"nc\">MutableMap<\/span><span class=\"p\">&lt;<\/span><span class=\"nc\">String<\/span><span class=\"p\">,<\/span> <span class=\"nc\">Account<\/span><span class=\"p\">&gt;<\/span> <span class=\"p\">=<\/span> <span class=\"nf\">mutableMapOf<\/span><span class=\"p\">()<\/span>\n<span class=\"p\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0627\u0633\u0627\u0633\u0627\u064b \u0641\u0642\u0637 \u06cc\u06a9 \u062c\u0645\u0639\u200c\u0622\u0648\u0631\u06cc \u06a9\u0646\u0646\u062f\u0647 \u0647\u0645\u0647 \u062d\u0633\u0627\u0628\u200c\u0647\u0627\u06cc \u0645\u0627 \u0627\u0633\u062a. \u0645\u0627 \u0627\u0632 \u0645\u062d\u062a\u0648\u0627\u06cc \u0646\u0642\u0634\u0647 \u0622\u0646 \u0628\u0631\u0627\u06cc \u062a\u0642\u0644\u06cc\u062f \u0627\u0632 \u0631\u0641\u062a\u0627\u0631 \u06cc\u06a9 \u067e\u0627\u06cc\u06af\u0627\u0647 \u062f\u0627\u062f\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f.<br \/>\u062d\u0627\u0644\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0647 \u0628\u0633\u062a\u0647 \u06a9\u0646\u062a\u0631\u0644\u0631 \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645. \u0627\u06cc\u0646 \u062c\u0627\u06cc\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u0627 \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0628\u0627 \u0645\u062f\u0644 \u062f\u0627\u062f\u0647 \u062e\u0648\u062f \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0627\u0628\u062a\u062f\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u06a9\u0644\u0627\u0633 \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645 <code>BankApplication<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight kotlin\"><code><span class=\"nd\">@LoginConfig<\/span><span class=\"p\">(<\/span><span class=\"n\">authMethod<\/span> <span class=\"p\">=<\/span> <span class=\"s\">\"MP-JWT\"<\/span><span class=\"p\">)<\/span>\n<span class=\"nd\">@ApplicationPath<\/span><span class=\"p\">(<\/span><span class=\"s\">\"https:\/\/dev.to\/\"<\/span><span class=\"p\">)<\/span>\n<span class=\"nd\">@DeclareRoles<\/span><span class=\"p\">(<\/span><span class=\"s\">\"admin\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"creditor\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"client\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"user\"<\/span><span class=\"p\">)<\/span>\n<span class=\"kd\">class<\/span> <span class=\"nc\">BankApplication<\/span> <span class=\"p\">:<\/span> <span class=\"nc\">Application<\/span><span class=\"p\">()<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0628\u0627 \u0627\u06cc\u0646 3 \u0646\u06a9\u062a\u0647 \u0645\u0647\u0645 \u0631\u0627 \u0645\u06cc \u06af\u0648\u06cc\u06cc\u0645. \u0628\u0627 \u062d\u0627\u0634\u06cc\u0647 \u0646\u0648\u06cc\u0633\u06cc LoginConfig\u060c \u0622\u0646 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0648 \u062f\u0631\u06a9 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>JWT<\/code> \u062a\u0648\u06a9\u0646 \u0647\u0627 \u0637\u0628\u0642 MicroProfile. ApplicationPath \u0631\u06cc\u0634\u0647 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u06cc\u0646\u062c\u0627\u0633\u062a \u06a9\u0647 URL \u0628\u0631\u0646\u0627\u0645\u0647 \u0634\u0631\u0648\u0639 \u0645\u06cc \u0634\u0648\u062f. \u062f\u0631 \u0645\u062b\u0627\u0644 \u0645\u0627\u060c HTTP:\/\/localhost:8080 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f. \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c DeclareRoles \u0646\u0642\u0634 \u0647\u0627\u06cc\u06cc \u0631\u0627 \u06a9\u0647 \u0642\u0631\u0627\u0631 \u0627\u0633\u062a \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0642\u0631\u0627\u0631 \u06af\u06cc\u0631\u062f \u0648 \u062a\u0648\u0633\u0637 \u0628\u0631\u0646\u0627\u0645\u0647 \u0645\u0627 \u067e\u0630\u06cc\u0631\u0641\u062a\u0647 \u0634\u0648\u062f \u0631\u0627 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f. \u0646\u0642\u0634 \u0647\u0627 \u0648 \u06af\u0631\u0648\u0647 \u0647\u0627 \u062f\u0631 \u0627\u06cc\u0646 \u0634\u0631\u0627\u06cc\u0637 \u0627\u0635\u0637\u0644\u0627\u062d\u0627\u062a \u0642\u0627\u0628\u0644 \u062a\u0639\u0648\u06cc\u0636 \u0647\u0633\u062a\u0646\u062f.<br \/>\u0628\u0631\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u062a\u0632\u0631\u06cc\u0642 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0648\u062b\u0631 \u06a9\u0627\u0631 \u06a9\u0646\u062f\u060c \u06cc\u06a9 \u062d\u0627\u0634\u06cc\u0647 \u0646\u0648\u06cc\u0633\u06cc \u062e\u0627\u0635 \u0628\u0631\u0627\u06cc \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0646\u0642\u0634\u0647 \u062d\u0633\u0627\u0628 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight kotlin\"><code><span class=\"k\">annotation<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">AccountsProduct<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062f\u0631 \u0645\u0631\u062d\u0644\u0647 \u0628\u0639\u062f\u060c \u06cc\u06a9 AccountsFactory \u06a9\u0627\u0631\u062e\u0627\u0646\u0647 \u0634\u06cc \u06a9\u0634 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight kotlin\"><code><span class=\"kd\">class<\/span> <span class=\"nc\">AccountsFactory<\/span> <span class=\"p\">:<\/span> <span class=\"nc\">Serializable<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nd\">@Produces<\/span>\n    <span class=\"nd\">@AccountsProduct<\/span>\n    <span class=\"nd\">@ApplicationScoped<\/span>\n    <span class=\"k\">fun<\/span> <span class=\"nf\">accounts<\/span><span class=\"p\">():<\/span> <span class=\"nc\">Accounts<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">Accounts<\/span><span class=\"p\">(<\/span><span class=\"nf\">mutableMapOf<\/span><span class=\"p\">())<\/span>\n\n    <span class=\"k\">companion<\/span> <span class=\"k\">object<\/span> <span class=\"p\">{<\/span>\n        <span class=\"nd\">@Throws<\/span><span class=\"p\">(<\/span><span class=\"nc\">JsonProcessingException<\/span><span class=\"o\">::<\/span><span class=\"k\">class<\/span><span class=\"p\">)<\/span>\n        <span class=\"k\">fun<\/span> <span class=\"nf\">createResponse<\/span><span class=\"p\">(<\/span>\n            <span class=\"n\">currentAccount<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Account<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">name<\/span><span class=\"p\">:<\/span> <span class=\"nc\">JsonString<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">accounts<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Accounts<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">log<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Logger<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">objectMapper<\/span><span class=\"p\">:<\/span> <span class=\"nc\">ObjectMapper<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">principal<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Principal<\/span><span class=\"p\">?,<\/span>\n            <span class=\"n\">jsonWebToken<\/span><span class=\"p\">:<\/span> <span class=\"nc\">JsonWebToken<\/span><span class=\"p\">?<\/span>\n        <span class=\"p\">):<\/span> <span class=\"nc\">Response<\/span> <span class=\"p\">{<\/span>\n            <span class=\"kd\">val<\/span> <span class=\"py\">jsonObject<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">Json<\/span><span class=\"p\">.<\/span><span class=\"nf\">createObjectBuilder<\/span><span class=\"p\">()<\/span>\n                <span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"s\">\"balance\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">currentAccount<\/span><span class=\"p\">.<\/span><span class=\"n\">currentValue<\/span><span class=\"p\">)<\/span>\n                <span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"s\">\"client\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">name<\/span><span class=\"p\">)<\/span>\n                <span class=\"p\">.<\/span><span class=\"nf\">build<\/span><span class=\"p\">()<\/span>\n            <span class=\"n\">accounts<\/span><span class=\"p\">.<\/span><span class=\"n\">accountMap<\/span><span class=\"p\">[<\/span><span class=\"n\">name<\/span><span class=\"p\">.<\/span><span class=\"n\">string<\/span><span class=\"p\">]<\/span> <span class=\"p\">=<\/span> <span class=\"n\">currentAccount<\/span>\n            <span class=\"n\">log<\/span><span class=\"p\">.<\/span><span class=\"nf\">info<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Principal: {}\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">objectMapper<\/span><span class=\"p\">.<\/span><span class=\"nf\">writeValueAsString<\/span><span class=\"p\">(<\/span><span class=\"n\">principal<\/span><span class=\"p\">))<\/span>\n            <span class=\"n\">log<\/span><span class=\"p\">.<\/span><span class=\"nf\">info<\/span><span class=\"p\">(<\/span><span class=\"s\">\"JSonWebToken: {}\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">objectMapper<\/span><span class=\"p\">.<\/span><span class=\"nf\">writeValueAsString<\/span><span class=\"p\">(<\/span><span class=\"n\">jsonWebToken<\/span><span class=\"p\">))<\/span>\n            <span class=\"k\">return<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">.<\/span><span class=\"nf\">ok<\/span><span class=\"p\">(<\/span><span class=\"n\">jsonObject<\/span><span class=\"p\">)<\/span>\n                <span class=\"p\">.<\/span><span class=\"nf\">build<\/span><span class=\"p\">()<\/span>\n        <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u06a9\u0627\u0631\u062e\u0627\u0646\u0647 \u062f\u0644\u06cc\u0644\u06cc \u0627\u0633\u062a \u06a9\u0647 \u0645\u0627 \u062c\u0633\u062a\u062c\u0648 \u0631\u0627 \u0628\u0647 \u0637\u0648\u0631 \u062e\u0627\u0635 \u0628\u0631\u0627\u06cc \u0622\u0646 \u063a\u06cc\u0631\u0641\u0639\u0627\u0644 \u06a9\u0631\u062f\u06cc\u0645 <code>Accounts<\/code>. \u0628\u0647 \u062c\u0627\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0628\u0647 \u0641\u0631\u0622\u06cc\u0646\u062f \u062c\u0633\u062a\u062c\u0648 \u0627\u062c\u0627\u0632\u0647 \u062f\u0647\u06cc\u0645 \u06cc\u06a9 bean \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u062f\u060c \u0646\u0645\u0648\u0646\u0647 \u062c\u0645\u0639\u200c\u0622\u0648\u0631\u06cc \u0631\u0627 \u062e\u0648\u062f\u0645\u0627\u0646 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062d\u0627\u0634\u06cc\u0647 \u0646\u0648\u06cc\u0633\u06cc Produces\u060c \u0628\u0647 \u0645\u0627 \u0627\u062c\u0627\u0632\u0647 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0644\u0648\u0628\u06cc\u0627 \u0631\u0627 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0646\u06cc\u0645. \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062d\u0627\u0634\u06cc\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0633\u0641\u0627\u0631\u0634\u06cc \u062e\u0648\u062f\u060c AccountsProduct\u060c \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0627\u06cc\u0646 \u0644\u0648\u0628\u06cc\u0627 \u0631\u0627 \u062e\u0627\u0635 \u062a\u0631 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>ApplicationScoped<\/code>\u060c \u0645\u062d\u062f\u0648\u062f\u0647 \u0622\u0646 \u0631\u0627 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0628\u0648\u062f\u0646 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>Application<\/code> \u062f\u0627\u0645\u0646\u0647. \u0628\u0647 \u0639\u0628\u0627\u0631\u062a \u062f\u06cc\u06af\u0631\u060c \u0644\u0648\u0628\u06cc\u0627\u06cc \u062c\u0645\u0639\u200c\u0622\u0648\u0631\u06cc \u062d\u0633\u0627\u0628 \u0628\u0647\u200c\u0639\u0646\u0648\u0627\u0646 \u06cc\u06a9 \u0634\u06cc \u062a\u06a9\u200c\u062a\u0646\u0647 \u062f\u0631 \u0633\u0631\u0627\u0633\u0631 \u0628\u0631\u0646\u0627\u0645\u0647 \u0639\u0645\u0644 \u0645\u06cc\u200c\u06a9\u0646\u062f.<br \/>&#8220;<code>createResponse<\/code>&#8220;\u0641\u0642\u0637 \u06cc\u06a9 \u0631\u0648\u0634 \u0639\u0645\u0648\u0645\u06cc \u0628\u0631\u0627\u06cc \u0627\u06cc\u062c\u0627\u062f \u067e\u0627\u0633\u062e \u0647\u0627\u06cc JSON \u0627\u0633\u062a.<br \/>\u0622\u0646\u0686\u0647 \u0627\u06a9\u0646\u0648\u0646 \u0628\u0647 \u0622\u0646 \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 \u062f\u0648 &#8220;\u0645\u0646\u0628\u0639&#8221; \u0627\u0633\u062a. \u0627\u06cc\u0646 \u062f\u0631 \u0627\u0635\u0644 \u0647\u0645\u0627\u0646 \u0627\u0633\u062a \u06a9\u0647 &#8220;<code>Controllers<\/code>&#8220;\u062f\u0631 \u0628\u0647\u0627\u0631. \u0646\u0627\u0645 \u0645\u062a\u0641\u0627\u0648\u062a\u06cc \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u062f\u0642\u06cc\u0642\u0627\u064b \u0647\u0645\u0627\u0646 \u06a9\u0627\u0631\u0628\u0631\u062f \u0631\u0627 \u062f\u0627\u0631\u062f.<br \/>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645 <code>AccountsResource<\/code> \u06a9\u0644\u0627\u0633:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight kotlin\"><code><span class=\"nd\">@Path<\/span><span class=\"p\">(<\/span><span class=\"s\">\"accounts\"<\/span><span class=\"p\">)<\/span>\n<span class=\"nd\">@RequestScoped<\/span>\n<span class=\"nd\">@Produces<\/span><span class=\"p\">(<\/span><span class=\"nc\">MediaType<\/span><span class=\"p\">.<\/span><span class=\"nc\">APPLICATION_JSON<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">open<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">AccountResource<\/span> <span class=\"p\">{<\/span>\n\n    <span class=\"nd\">@Inject<\/span>\n    <span class=\"nd\">@AccountsProduct<\/span>\n    <span class=\"k\">open<\/span> <span class=\"kd\">var<\/span> <span class=\"py\">accounts<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Accounts<\/span><span class=\"p\">?<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span>\n\n    <span class=\"nd\">@Inject<\/span>\n    <span class=\"k\">open<\/span> <span class=\"kd\">var<\/span> <span class=\"py\">principal<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Principal<\/span><span class=\"p\">?<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span>\n\n    <span class=\"nd\">@Inject<\/span>\n    <span class=\"k\">open<\/span> <span class=\"kd\">var<\/span> <span class=\"py\">jsonWebToken<\/span><span class=\"p\">:<\/span> <span class=\"nc\">JsonWebToken<\/span><span class=\"p\">?<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span>\n\n    <span class=\"nd\">@Inject<\/span>\n    <span class=\"nd\">@Claim<\/span><span class=\"p\">(<\/span><span class=\"s\">\"access\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">open<\/span> <span class=\"kd\">var<\/span> <span class=\"py\">access<\/span><span class=\"p\">:<\/span> <span class=\"nc\">JsonString<\/span><span class=\"p\">?<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span>\n\n    <span class=\"nd\">@Claim<\/span><span class=\"p\">(<\/span><span class=\"s\">\"iat\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"nd\">@Inject<\/span>\n    <span class=\"k\">open<\/span> <span class=\"kd\">var<\/span> <span class=\"py\">iat<\/span><span class=\"p\">:<\/span> <span class=\"nc\">JsonNumber<\/span><span class=\"p\">?<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span>\n\n    <span class=\"nd\">@Inject<\/span>\n    <span class=\"nd\">@Claim<\/span><span class=\"p\">(<\/span><span class=\"s\">\"name\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">open<\/span> <span class=\"kd\">var<\/span> <span class=\"py\">name<\/span><span class=\"p\">:<\/span> <span class=\"nc\">JsonString<\/span><span class=\"p\">?<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span>\n\n    <span class=\"nd\">@Inject<\/span>\n    <span class=\"nd\">@Claim<\/span><span class=\"p\">(<\/span><span class=\"s\">\"user_id\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">open<\/span> <span class=\"kd\">var<\/span> <span class=\"py\">userId<\/span><span class=\"p\">:<\/span> <span class=\"nc\">JsonNumber<\/span><span class=\"p\">?<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span>\n\n    <span class=\"nd\">@POST<\/span>\n    <span class=\"nd\">@RolesAllowed<\/span><span class=\"p\">(<\/span><span class=\"s\">\"admin\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"client\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"credit\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"nd\">@Throws<\/span><span class=\"p\">(<\/span><span class=\"nc\">JsonProcessingException<\/span><span class=\"o\">::<\/span><span class=\"k\">class<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">open<\/span> <span class=\"k\">fun<\/span> <span class=\"nf\">createAccount<\/span><span class=\"p\">():<\/span> <span class=\"nc\">Response<\/span> <span class=\"p\">=<\/span> <span class=\"nf\">createResponse<\/span><span class=\"p\">(<\/span>\n        <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">accounts<\/span><span class=\"p\">).<\/span><span class=\"n\">accountMap<\/span><span class=\"p\">[<\/span><span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">).<\/span><span class=\"n\">string<\/span><span class=\"p\">]<\/span> <span class=\"o\">?:<\/span> <span class=\"nc\">Account<\/span><span class=\"p\">(<\/span>\n            <span class=\"n\">client<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">Client<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span> <span class=\"p\">=<\/span> <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">).<\/span><span class=\"n\">string<\/span><span class=\"p\">),<\/span>\n            <span class=\"n\">accountNumber<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">UUID<\/span><span class=\"p\">.<\/span><span class=\"nf\">randomUUID<\/span><span class=\"p\">().<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()<\/span>\n        <span class=\"p\">)<\/span>\n    <span class=\"p\">)<\/span>\n\n    <span class=\"nd\">@POST<\/span>\n    <span class=\"nd\">@RolesAllowed<\/span><span class=\"p\">(<\/span><span class=\"s\">\"admin\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"user\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"nd\">@Path<\/span><span class=\"p\">(<\/span><span class=\"s\">\"user\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"nd\">@Throws<\/span><span class=\"p\">(<\/span><span class=\"nc\">JsonProcessingException<\/span><span class=\"o\">::<\/span><span class=\"k\">class<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">open<\/span> <span class=\"k\">fun<\/span> <span class=\"nf\">createUser<\/span><span class=\"p\">():<\/span> <span class=\"nc\">Response<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nf\">createResponse<\/span><span class=\"p\">(<\/span>\n            <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">accounts<\/span><span class=\"p\">).<\/span><span class=\"n\">accountMap<\/span><span class=\"p\">[<\/span><span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">).<\/span><span class=\"n\">string<\/span><span class=\"p\">]<\/span> <span class=\"o\">?:<\/span> <span class=\"nc\">Account<\/span><span class=\"p\">(<\/span>\n                <span class=\"n\">client<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">Client<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span> <span class=\"p\">=<\/span> <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">).<\/span><span class=\"n\">string<\/span><span class=\"p\">),<\/span>\n                <span class=\"n\">accountNumber<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">UUID<\/span><span class=\"p\">.<\/span><span class=\"nf\">randomUUID<\/span><span class=\"p\">().<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()<\/span>\n            <span class=\"p\">)<\/span>\n        <span class=\"p\">)<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"nd\">@GET<\/span>\n    <span class=\"nd\">@RolesAllowed<\/span><span class=\"p\">(<\/span><span class=\"s\">\"admin\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"client\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"nd\">@Throws<\/span><span class=\"p\">(<\/span><span class=\"nc\">JsonProcessingException<\/span><span class=\"o\">::<\/span><span class=\"k\">class<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">open<\/span> <span class=\"k\">fun<\/span> <span class=\"nf\">getAccount<\/span><span class=\"p\">():<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">?<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nf\">createResponse<\/span><span class=\"p\">(<\/span>\n            <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">accounts<\/span><span class=\"p\">).<\/span><span class=\"n\">accountMap<\/span><span class=\"p\">[<\/span><span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">).<\/span><span class=\"n\">string<\/span><span class=\"p\">]<\/span> <span class=\"o\">?:<\/span> <span class=\"k\">return<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">.<\/span><span class=\"nf\">serverError<\/span><span class=\"p\">()<\/span>\n                <span class=\"p\">.<\/span><span class=\"nf\">build<\/span><span class=\"p\">()<\/span>\n        <span class=\"p\">)<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"nd\">@PUT<\/span>\n    <span class=\"nd\">@RolesAllowed<\/span><span class=\"p\">(<\/span><span class=\"s\">\"admin\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"client\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"nd\">@Consumes<\/span><span class=\"p\">(<\/span><span class=\"nc\">MediaType<\/span><span class=\"p\">.<\/span><span class=\"nc\">APPLICATION_JSON<\/span><span class=\"p\">)<\/span>\n    <span class=\"nd\">@Throws<\/span><span class=\"p\">(<\/span>\n        <span class=\"nc\">JsonProcessingException<\/span><span class=\"o\">::<\/span><span class=\"k\">class<\/span>\n    <span class=\"p\">)<\/span>\n    <span class=\"k\">open<\/span> <span class=\"k\">fun<\/span> <span class=\"nf\">cashIn<\/span><span class=\"p\">(<\/span><span class=\"n\">transactionBody<\/span><span class=\"p\">:<\/span> <span class=\"nc\">TransactionBody<\/span><span class=\"p\">):<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">?<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kd\">val<\/span> <span class=\"py\">userAccount<\/span> <span class=\"p\">=<\/span>\n            <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">accounts<\/span><span class=\"p\">).<\/span><span class=\"n\">accountMap<\/span><span class=\"p\">[<\/span><span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">).<\/span><span class=\"n\">string<\/span><span class=\"p\">]<\/span> <span class=\"o\">?:<\/span> <span class=\"k\">return<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">.<\/span><span class=\"nf\">serverError<\/span><span class=\"p\">()<\/span>\n                <span class=\"p\">.<\/span><span class=\"nf\">build<\/span><span class=\"p\">()<\/span>\n\n        <span class=\"kd\">val<\/span> <span class=\"py\">currentAccount<\/span> <span class=\"p\">=<\/span> <span class=\"n\">userAccount<\/span><span class=\"p\">.<\/span><span class=\"nf\">addCurrentValue<\/span><span class=\"p\">(<\/span><span class=\"n\">transactionBody<\/span><span class=\"p\">.<\/span><span class=\"n\">saldo<\/span><span class=\"o\">?:<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\n        <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">accounts<\/span><span class=\"p\">).<\/span><span class=\"n\">accountMap<\/span><span class=\"p\">[<\/span><span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">).<\/span><span class=\"n\">string<\/span><span class=\"p\">]<\/span> <span class=\"p\">=<\/span> <span class=\"n\">currentAccount<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nf\">createResponse<\/span><span class=\"p\">(<\/span><span class=\"n\">currentAccount<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"nd\">@GET<\/span>\n    <span class=\"nd\">@Path<\/span><span class=\"p\">(<\/span><span class=\"s\">\"all\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"nd\">@Produces<\/span><span class=\"p\">(<\/span><span class=\"nc\">MediaType<\/span><span class=\"p\">.<\/span><span class=\"nc\">APPLICATION_JSON<\/span><span class=\"p\">)<\/span>\n    <span class=\"nd\">@Throws<\/span><span class=\"p\">(<\/span>\n        <span class=\"nc\">JsonProcessingException<\/span><span class=\"o\">::<\/span><span class=\"k\">class<\/span>\n    <span class=\"p\">)<\/span>\n    <span class=\"k\">open<\/span> <span class=\"k\">fun<\/span> <span class=\"nf\">getAll<\/span><span class=\"p\">():<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">?<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kd\">val<\/span> <span class=\"py\">allAccounts<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">ArrayList<\/span><span class=\"p\">(<\/span>\n            <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">accounts<\/span><span class=\"p\">).<\/span><span class=\"n\">accountMap<\/span>\n                <span class=\"p\">.<\/span><span class=\"n\">values<\/span>\n        <span class=\"p\">)<\/span>\n        <span class=\"n\">logger<\/span><span class=\"p\">.<\/span><span class=\"nf\">info<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Principal: {}\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">objectMapper<\/span><span class=\"p\">.<\/span><span class=\"nf\">writeValueAsString<\/span><span class=\"p\">(<\/span><span class=\"n\">principal<\/span><span class=\"p\">))<\/span>\n        <span class=\"n\">logger<\/span><span class=\"p\">.<\/span><span class=\"nf\">info<\/span><span class=\"p\">(<\/span><span class=\"s\">\"JSonWebToken: {}\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">objectMapper<\/span><span class=\"p\">.<\/span><span class=\"nf\">writeValueAsString<\/span><span class=\"p\">(<\/span><span class=\"n\">jsonWebToken<\/span><span class=\"p\">))<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">.<\/span><span class=\"nf\">ok<\/span><span class=\"p\">(<\/span><span class=\"n\">allAccounts<\/span><span class=\"p\">)<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">build<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"nd\">@GET<\/span>\n    <span class=\"nd\">@Path<\/span><span class=\"p\">(<\/span><span class=\"s\">\"summary\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"nd\">@Throws<\/span><span class=\"p\">(<\/span><span class=\"nc\">JsonProcessingException<\/span><span class=\"o\">::<\/span><span class=\"k\">class<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">open<\/span> <span class=\"k\">fun<\/span> <span class=\"nf\">getSummary<\/span><span class=\"p\">():<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">?<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kd\">val<\/span> <span class=\"py\">totalCredit<\/span> <span class=\"p\">=<\/span> <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">accounts<\/span><span class=\"p\">).<\/span><span class=\"n\">accountMap<\/span>\n            <span class=\"p\">.<\/span><span class=\"n\">values<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">map<\/span><span class=\"p\">(<\/span><span class=\"nc\">Account<\/span><span class=\"o\">::<\/span><span class=\"n\">currentValue<\/span><span class=\"p\">)<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">stream<\/span><span class=\"p\">()<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">reduce<\/span> <span class=\"p\">{<\/span> <span class=\"n\">result<\/span><span class=\"p\">,<\/span> <span class=\"n\">u<\/span> <span class=\"p\">-&gt;<\/span> <span class=\"n\">result<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">u<\/span><span class=\"p\">)<\/span> <span class=\"p\">}<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">orElse<\/span><span class=\"p\">(<\/span><span class=\"nc\">BigDecimal<\/span><span class=\"p\">.<\/span><span class=\"nc\">ZERO<\/span><span class=\"p\">)<\/span>\n\n        <span class=\"kd\">val<\/span> <span class=\"py\">jsonObject<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">Json<\/span><span class=\"p\">.<\/span><span class=\"nf\">createObjectBuilder<\/span><span class=\"p\">()<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"s\">\"totalCurrent\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">totalCredit<\/span><span class=\"p\">)<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"s\">\"client\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"Mother Nature Dream Team\"<\/span><span class=\"p\">)<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">build<\/span><span class=\"p\">()<\/span>\n        <span class=\"n\">logger<\/span><span class=\"p\">.<\/span><span class=\"nf\">info<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Summary\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">logger<\/span><span class=\"p\">.<\/span><span class=\"nf\">info<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Principal: {}\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">objectMapper<\/span><span class=\"p\">.<\/span><span class=\"nf\">writeValueAsString<\/span><span class=\"p\">(<\/span><span class=\"n\">principal<\/span><span class=\"p\">))<\/span>\n        <span class=\"n\">logger<\/span><span class=\"p\">.<\/span><span class=\"nf\">info<\/span><span class=\"p\">(<\/span><span class=\"s\">\"JSonWebToken: {}\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">objectMapper<\/span><span class=\"p\">.<\/span><span class=\"nf\">writeValueAsString<\/span><span class=\"p\">(<\/span><span class=\"n\">jsonWebToken<\/span><span class=\"p\">))<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">.<\/span><span class=\"nf\">ok<\/span><span class=\"p\">(<\/span><span class=\"n\">jsonObject<\/span><span class=\"p\">)<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">build<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"nd\">@GET<\/span>\n    <span class=\"nd\">@RolesAllowed<\/span><span class=\"p\">(<\/span><span class=\"s\">\"admin\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"client\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"nd\">@Path<\/span><span class=\"p\">(<\/span><span class=\"s\">\"jwt\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">open<\/span> <span class=\"k\">fun<\/span> <span class=\"nf\">getJWT<\/span><span class=\"p\">():<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">?<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kd\">val<\/span> <span class=\"py\">jsonObject<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">Json<\/span><span class=\"p\">.<\/span><span class=\"nf\">createObjectBuilder<\/span><span class=\"p\">()<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"s\">\"jwt\"<\/span><span class=\"p\">,<\/span> <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">jsonWebToken<\/span><span class=\"p\">).<\/span><span class=\"n\">rawToken<\/span><span class=\"p\">)<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"s\">\"userId\"<\/span><span class=\"p\">,<\/span> <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">userId<\/span><span class=\"p\">).<\/span><span class=\"nf\">doubleValue<\/span><span class=\"p\">())<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"s\">\"access\"<\/span><span class=\"p\">,<\/span> <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">access<\/span><span class=\"p\">).<\/span><span class=\"n\">string<\/span><span class=\"p\">)<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"s\">\"iat\"<\/span><span class=\"p\">,<\/span> <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">iat<\/span><span class=\"p\">).<\/span><span class=\"nf\">doubleValue<\/span><span class=\"p\">())<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">build<\/span><span class=\"p\">()<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">.<\/span><span class=\"nf\">ok<\/span><span class=\"p\">(<\/span><span class=\"n\">jsonObject<\/span><span class=\"p\">)<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">build<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"nd\">@Throws<\/span><span class=\"p\">(<\/span><span class=\"nc\">JsonProcessingException<\/span><span class=\"o\">::<\/span><span class=\"k\">class<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">private<\/span> <span class=\"k\">fun<\/span> <span class=\"nf\">createResponse<\/span><span class=\"p\">(<\/span><span class=\"n\">currentAccount<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Account<\/span><span class=\"p\">):<\/span> <span class=\"nc\">Response<\/span> <span class=\"p\">=<\/span>\n        <span class=\"nc\">AccountsFactory<\/span><span class=\"p\">.<\/span><span class=\"nf\">createResponse<\/span><span class=\"p\">(<\/span>\n            <span class=\"n\">currentAccount<\/span><span class=\"p\">,<\/span>\n            <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">),<\/span>\n            <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">accounts<\/span><span class=\"p\">),<\/span>\n            <span class=\"n\">logger<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">objectMapper<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">principal<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">jsonWebToken<\/span>\n        <span class=\"p\">)<\/span>\n\n    <span class=\"k\">companion<\/span> <span class=\"k\">object<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kd\">val<\/span> <span class=\"py\">objectMapper<\/span><span class=\"p\">:<\/span> <span class=\"nc\">ObjectMapper<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">ObjectMapper<\/span><span class=\"p\">()<\/span>\n        <span class=\"kd\">val<\/span> <span class=\"py\">logger<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Logger<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">LoggerFactory<\/span><span class=\"p\">.<\/span><span class=\"nf\">getLogger<\/span><span class=\"p\">(<\/span><span class=\"nc\">AccountResource<\/span><span class=\"o\">::<\/span><span class=\"k\">class<\/span><span class=\"p\">.<\/span><span class=\"n\">java<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06a9\u0645\u06cc \u0648\u0642\u062a \u0628\u06af\u0630\u0627\u0631\u06cc\u062f \u0648 \u0628\u0627 \u062c\u0632\u0626\u06cc\u0627\u062a \u0628\u06cc\u0634\u062a\u0631 \u0628\u0647 \u0627\u06cc\u0646 \u06a9\u0644\u0627\u0633 \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u062f. \u0627\u06cc\u0646 <code>Path<\/code> annotation \u0646\u062d\u0648\u0647 \u062f\u0633\u062a\u06cc\u0627\u0628\u06cc \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0646\u0628\u0639 \u0631\u0627 \u0627\u0632 \u0631\u06cc\u0634\u0647 \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f. \u0628\u0647 \u06cc\u0627\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0645\u0627 \u0627\u0632 &#8220;https:\/\/dev.to\/&#8221; \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0631\u06cc\u0634\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f\u060c &#8220;\u062d\u0633\u0627\u0628 \u0647\u0627&#8221; \u0646\u0642\u0637\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u0631\u06cc\u0634\u0647 \u0645\u0627 \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u0645\u0646\u0628\u0639 \u0627\u0633\u062a. \u0647\u0645\u0647 \u0645\u0646\u0627\u0628\u0639 \u0645\u0627\u060c \u062f\u0631 \u0645\u0648\u0631\u062f \u0645\u0627 \u0641\u0642\u0637 \u062f\u0648 \u0645\u0648\u0631\u062f \u0628\u0627 scope RequestResource \u062f\u0631 \u062d\u0627\u0644 \u0627\u062c\u0631\u0627 \u0647\u0633\u062a\u0646\u062f. \u0628\u0627 \u062d\u0627\u0634\u06cc\u0647\u200c\u0646\u0648\u06cc\u0633\u06cc \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f \u06a9\u0647 \u062a\u0645\u0627\u0645 \u067e\u0627\u0633\u062e\u200c\u0647\u0627 \u0628\u0647 \u0647\u0645\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0628\u062f\u0648\u0646 \u062f\u0631 \u0646\u0638\u0631 \u06af\u0631\u0641\u062a\u0646 \u0646\u0648\u0639 \u0622\u0646\u200c\u0647\u0627 \u0628\u0647 \u0634\u06a9\u0644 \u067e\u06cc\u0627\u0645\u200c\u0647\u0627\u06cc \u0641\u0631\u0645\u062a\u200c\u0634\u062f\u0647 JSON \u0628\u0627\u0634\u062f.<br \/>\u0628\u0631\u0627\u06cc \u062a\u0632\u0631\u06cc\u0642 \u0645\u0627 <code>aggregator<\/code> \u0645\u0627 \u0641\u0642\u0637 \u0627\u0632 \u062a\u0631\u06a9\u06cc\u0628 \u062d\u0627\u0634\u06cc\u0647 \u0646\u0648\u06cc\u0633\u06cc Inject \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>AccountsProduct<\/code> \u062d\u0627\u0634\u06cc\u0647 \u0646\u0648\u06cc\u0633\u06cc:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight kotlin\"><code><span class=\"nd\">@Inject<\/span>\n<span class=\"nd\">@AccountsProduct<\/span>\n<span class=\"k\">open<\/span> <span class=\"kd\">var<\/span> <span class=\"py\">accounts<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Accounts<\/span><span class=\"p\">?<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0628\u0627 \u0622\u0646\u0686\u0647 \u0645\u0627 \u062f\u0631 \u06a9\u0627\u0631\u062e\u0627\u0646\u0647 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0631\u062f\u06cc\u0645 \u0645\u0637\u0627\u0628\u0642\u062a \u062f\u0627\u0631\u062f.<br \/>\u0639\u0644\u0627\u0648\u0647 \u0628\u0631 \u0627\u06cc\u0646\u060c \u0645\u0627 \u062f\u0648 \u0639\u0646\u0635\u0631 \u0645\u0647\u0645 \u0627\u0645\u0646\u06cc\u062a \u0631\u0627 \u0646\u06cc\u0632 \u062a\u0632\u0631\u06cc\u0642 \u0645\u06cc \u06a9\u0646\u06cc\u0645. \u0627\u0644\u0641 <code>principal<\/code> \u0648 <code>jsonWebToken<\/code>:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight kotlin\"><code><span class=\"nd\">@Inject<\/span>\n<span class=\"k\">open<\/span> <span class=\"kd\">var<\/span> <span class=\"py\">principal<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Principal<\/span><span class=\"p\">?<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span>\n\n<span class=\"nd\">@Inject<\/span>\n<span class=\"k\">open<\/span> <span class=\"kd\">var<\/span> <span class=\"py\">jsonWebToken<\/span><span class=\"p\">:<\/span> <span class=\"nc\">JsonWebToken<\/span><span class=\"p\">?<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0647\u0631 \u062f\u0648 <code>JsonWebToken<\/code> \u0648 <code>Principal<\/code> \u0647\u0645\u06cc\u0646\u0637\u0648\u0631 \u062e\u0648\u0627\u0647\u062f \u0628\u0648\u062f \u0648 \u0645\u0627 \u0622\u0646 \u0631\u0627 \u062f\u0631 \u06af\u0632\u0627\u0631\u0634 \u0647\u0627\u06cc \u062e\u0648\u062f \u062e\u0648\u0627\u0647\u06cc\u0645 \u062f\u06cc\u062f.<br \/>\u062f\u0631 \u0645\u0646\u0627\u0628\u0639 \u062e\u0648\u062f\u060c \u0645\u0627 \u0647\u0645\u06cc\u0634\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0627\u062f\u0639\u0627\u0647\u0627\u06cc\u06cc \u0631\u0627 \u0627\u0632 \u06cc\u06a9 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0628\u0627 \u06cc\u06a9 \u062a\u0648\u06a9\u0646 \u062e\u0627\u0635 \u062a\u0632\u0631\u06cc\u0642 \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight kotlin\"><code><span class=\"nd\">@Inject<\/span>\n<span class=\"nd\">@Claim<\/span><span class=\"p\">(<\/span><span class=\"s\">\"name\"<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">open<\/span> <span class=\"kd\">var<\/span> <span class=\"py\">name<\/span><span class=\"p\">:<\/span> <span class=\"nc\">JsonString<\/span><span class=\"p\">?<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span>\n\n<span class=\"nd\">@Inject<\/span>\n<span class=\"nd\">@Claim<\/span><span class=\"p\">(<\/span><span class=\"s\">\"user_id\"<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">open<\/span> <span class=\"kd\">var<\/span> <span class=\"py\">userId<\/span><span class=\"p\">:<\/span> <span class=\"nc\">JsonNumber<\/span><span class=\"p\">?<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0628\u0627 \u062a\u0631\u06a9\u06cc\u0628\u06cc \u0627\u0632 <code>Inject<\/code> \u0648 <code>Claim<\/code> \u062d\u0627\u0634\u06cc\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0646\u0627\u0645 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u062f\u0631 \u0632\u06cc\u0631 <code>Claim<\/code> annotation \u062a\u0639\u0631\u06cc\u0641 \u0645\u06cc \u06a9\u0646\u062f \u06a9\u0647 \u06a9\u062f\u0627\u0645 \u0627\u062f\u0639\u0627 \u0631\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u062a\u0632\u0631\u06cc\u0642 \u06a9\u0646\u06cc\u0645. \u0645\u0627 \u0628\u0627\u06cc\u062f \u0645\u0631\u0627\u0642\u0628 \u0646\u0648\u0639 \u062a\u0639\u0631\u06cc\u0641 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc\u0645\u0627\u0646 \u0628\u0627\u0634\u06cc\u0645. \u062f\u0631 \u0645\u062b\u0627\u0644 \u0645\u0627 \u0641\u0642\u0637 \u0628\u0647 r \u0646\u06cc\u0627\u0632 \u062f\u0627\u0631\u06cc\u0645 <code>JsonString<\/code> \u0648 <code>JsonNumber<\/code> \u0627\u0646\u0648\u0627\u0639<br \/>\u0627\u0628\u062a\u062f\u0627\u060c \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0646\u062d\u0648\u0647 \u0627\u06cc\u062c\u0627\u062f \u062d\u0633\u0627\u0628\u200c\u0647\u0627 \u0648 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight kotlin\"><code><span class=\"nd\">@POST<\/span>\n<span class=\"nd\">@RolesAllowed<\/span><span class=\"p\">(<\/span><span class=\"s\">\"admin\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"client\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"credit\"<\/span><span class=\"p\">)<\/span>\n<span class=\"nd\">@Throws<\/span><span class=\"p\">(<\/span><span class=\"nc\">JsonProcessingException<\/span><span class=\"o\">::<\/span><span class=\"k\">class<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">open<\/span> <span class=\"k\">fun<\/span> <span class=\"nf\">createAccount<\/span><span class=\"p\">():<\/span> <span class=\"nc\">Response<\/span> <span class=\"p\">=<\/span> <span class=\"nf\">createResponse<\/span><span class=\"p\">(<\/span>\n    <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">accounts<\/span><span class=\"p\">).<\/span><span class=\"n\">accountMap<\/span><span class=\"p\">[<\/span><span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">).<\/span><span class=\"n\">string<\/span><span class=\"p\">]<\/span> <span class=\"o\">?:<\/span> <span class=\"nc\">Account<\/span><span class=\"p\">(<\/span>\n        <span class=\"n\">client<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">Client<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span> <span class=\"p\">=<\/span> <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">).<\/span><span class=\"n\">string<\/span><span class=\"p\">),<\/span>\n        <span class=\"n\">accountNumber<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">UUID<\/span><span class=\"p\">.<\/span><span class=\"nf\">randomUUID<\/span><span class=\"p\">().<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">)<\/span>\n<span class=\"p\">)<\/span>\n\n<span class=\"nd\">@POST<\/span>\n<span class=\"nd\">@RolesAllowed<\/span><span class=\"p\">(<\/span><span class=\"s\">\"admin\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"user\"<\/span><span class=\"p\">)<\/span>\n<span class=\"nd\">@Path<\/span><span class=\"p\">(<\/span><span class=\"s\">\"user\"<\/span><span class=\"p\">)<\/span>\n<span class=\"nd\">@Throws<\/span><span class=\"p\">(<\/span><span class=\"nc\">JsonProcessingException<\/span><span class=\"o\">::<\/span><span class=\"k\">class<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">open<\/span> <span class=\"k\">fun<\/span> <span class=\"nf\">createUser<\/span><span class=\"p\">():<\/span> <span class=\"nc\">Response<\/span> <span class=\"p\">{<\/span>\n    <span class=\"k\">return<\/span> <span class=\"nf\">createResponse<\/span><span class=\"p\">(<\/span>\n        <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">accounts<\/span><span class=\"p\">).<\/span><span class=\"n\">accountMap<\/span><span class=\"p\">[<\/span><span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">).<\/span><span class=\"n\">string<\/span><span class=\"p\">]<\/span> <span class=\"o\">?:<\/span> <span class=\"nc\">Account<\/span><span class=\"p\">(<\/span>\n            <span class=\"n\">client<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">Client<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span> <span class=\"p\">=<\/span> <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">).<\/span><span class=\"n\">string<\/span><span class=\"p\">),<\/span>\n            <span class=\"n\">accountNumber<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">UUID<\/span><span class=\"p\">.<\/span><span class=\"nf\">randomUUID<\/span><span class=\"p\">().<\/span><span class=\"nf\">toString<\/span><span class=\"p\">()<\/span>\n        <span class=\"p\">)<\/span>\n    <span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u062c\u0627\u062f \u0627\u06a9\u0627\u0646\u062a \u0648 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646<\/p>\n<p>\u0647\u062f\u0641 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627 \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u062a\u0648\u0627\u0646\u06cc\u0645 \u0645\u062a\u062f\u0647\u0627 \u0631\u0627 \u0627\u0632 \u0647\u0645 \u062c\u062f\u0627 \u06a9\u0646\u06cc\u0645 \u0648 \u0628\u0647 \u0622\u0646\u0647\u0627 \u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u0645\u062e\u062a\u0644\u0641\u06cc \u0628\u062f\u0647\u06cc\u0645. \u062f\u0631 \u0645\u062b\u0627\u0644 \u0645\u0627\u060c \u0647\u0631 \u062f\u0648 \u0641\u0642\u0637 \u06cc\u06a9 \u062d\u0633\u0627\u0628 \u0627\u06cc\u062c\u0627\u062f \u0645\u06cc \u06a9\u0646\u0646\u062f\u060c \u0627\u0645\u0627 \u062a\u0648\u062c\u0647 \u0628\u0647 \u0627\u06cc\u0646 \u0646\u06a9\u062a\u0647 \u0645\u0647\u0645 \u0627\u0633\u062a \u06a9\u0647 \u0641\u0642\u0637 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u062f\u0627\u0631\u0627\u06cc \u0646\u0642\u0634 \u06a9\u0627\u0631\u0628\u0631 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0627\u0632 \u0645\u062a\u062f createUser \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u0646\u062f. \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628\u060c \u0641\u0642\u0637 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0628\u0627 \u0646\u0642\u0634 \u0645\u0634\u062a\u0631\u06cc \u0648 \u0627\u0639\u062a\u0628\u0627\u0631 \u0645\u06cc \u062a\u0648\u0627\u0646\u0646\u062f \u0628\u0647 \u0631\u0648\u0634 createAccount \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0646\u062f.<br \/>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0627\u06a9\u0646\u0648\u0646 \u0628\u0647 \u0637\u0648\u0631 \u0645\u0641\u0635\u0644 \u0628\u0647 \u0631\u0648\u0634 \u062f\u0631\u062e\u0648\u0627\u0633\u062a PUT \u0627\u06cc\u0646 \u0645\u0646\u0628\u0639 \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight kotlin\"><code><span class=\"nd\">@PUT<\/span>\n<span class=\"nd\">@RolesAllowed<\/span><span class=\"p\">(<\/span><span class=\"s\">\"admin\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"client\"<\/span><span class=\"p\">)<\/span>\n<span class=\"nd\">@Consumes<\/span><span class=\"p\">(<\/span><span class=\"nc\">MediaType<\/span><span class=\"p\">.<\/span><span class=\"nc\">APPLICATION_JSON<\/span><span class=\"p\">)<\/span>\n<span class=\"nd\">@Throws<\/span><span class=\"p\">(<\/span>\n    <span class=\"nc\">JsonProcessingException<\/span><span class=\"o\">::<\/span><span class=\"k\">class<\/span>\n<span class=\"p\">)<\/span>\n<span class=\"k\">open<\/span> <span class=\"k\">fun<\/span> <span class=\"nf\">cashIn<\/span><span class=\"p\">(<\/span><span class=\"n\">transactionBody<\/span><span class=\"p\">:<\/span> <span class=\"nc\">TransactionBody<\/span><span class=\"p\">):<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">?<\/span> <span class=\"p\">{<\/span>\n    <span class=\"kd\">val<\/span> <span class=\"py\">userAccount<\/span> <span class=\"p\">=<\/span>\n        <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">accounts<\/span><span class=\"p\">).<\/span><span class=\"n\">accountMap<\/span><span class=\"p\">[<\/span><span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">).<\/span><span class=\"n\">string<\/span><span class=\"p\">]<\/span> <span class=\"o\">?:<\/span> <span class=\"k\">return<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">.<\/span><span class=\"nf\">serverError<\/span><span class=\"p\">()<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">build<\/span><span class=\"p\">()<\/span>\n\n    <span class=\"kd\">val<\/span> <span class=\"py\">currentAccount<\/span> <span class=\"p\">=<\/span> <span class=\"n\">userAccount<\/span><span class=\"p\">.<\/span><span class=\"nf\">addCurrentValue<\/span><span class=\"p\">(<\/span><span class=\"n\">transactionBody<\/span><span class=\"p\">.<\/span><span class=\"n\">saldo<\/span><span class=\"o\">?:<\/span> <span class=\"mi\">0<\/span><span class=\"p\">)<\/span>\n    <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">accounts<\/span><span class=\"p\">).<\/span><span class=\"n\">accountMap<\/span><span class=\"p\">[<\/span><span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">).<\/span><span class=\"n\">string<\/span><span class=\"p\">]<\/span> <span class=\"p\">=<\/span> <span class=\"n\">currentAccount<\/span>\n    <span class=\"k\">return<\/span> <span class=\"nf\">createResponse<\/span><span class=\"p\">(<\/span><span class=\"n\">currentAccount<\/span><span class=\"p\">)<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0646\u0642\u062f\u06cc\u0646\u06af\u06cc<\/p>\n<p>\u0645\u0627 \u0622\u0646 \u062d\u0627\u0634\u06cc\u0647 \u0646\u0648\u06cc\u0633\u06cc \u0631\u0627 \u0645\u06cc \u062f\u0627\u0646\u06cc\u0645 <code>PUT<\/code> \u0646\u0634\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0641\u0642\u0637 \u0628\u0627 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u0646\u0648\u0639 \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633\u06cc \u0627\u0633\u062a <code>PUT<\/code>. \u0633\u067e\u0633 Annotation Path \u0628\u0647 Jetty \u0645\u06cc \u06af\u0648\u06cc\u062f \u06a9\u0647 \u0645\u0633\u06cc\u0631 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u06cc\u06a9 \u0645\u0642\u062f\u0627\u0631 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0646\u06cc\u0632 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0634\u0646\u0627\u062e\u062a\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a <code>PathParam<\/code>. \u062f\u0631 \u0646\u0647\u0627\u06cc\u062a\u060c \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u062a\u0639\u0631\u06cc\u0641 \u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u0646 \u0631\u0648\u0634 \u0641\u0642\u0637 \u0628\u0631\u0627\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646\u06cc \u06a9\u0647 \u0646\u0642\u0634\u200c\u0647\u0627\u06cc \u0645\u062f\u06cc\u0631 \u06cc\u0627 \u0645\u0634\u062a\u0631\u06cc \u062f\u0627\u0631\u0646\u062f \u0645\u062c\u0627\u0632 \u0628\u0627\u0634\u062f. \u0633\u067e\u0633 \u0645\u0642\u062f\u0627\u0631 \u0648\u0631\u0648\u062f\u06cc \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 PathParam \u0628\u0647 \u0645\u062a\u063a\u06cc\u0631 Long \u0645\u0642\u062f\u0627\u0631 \u0645\u0627 \u0645\u0646\u062a\u0642\u0644 \u0645\u06cc \u0634\u0648\u062f.<br \/>\u0627\u06af\u0631 \u0647\u06cc\u0686 \u0646\u0642\u0634\u06cc \u062a\u0639\u0631\u06cc\u0641 \u0646\u06a9\u0646\u06cc\u0645\u060c \u0647\u0631 \u06a9\u0627\u0631\u0628\u0631\u06cc \u06a9\u0647 \u062a\u0648\u06a9\u0646 \u0645\u0646\u0627\u0633\u0628\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u0628\u0647 \u0627\u06cc\u0646 \u0631\u0648\u0634\u200c\u0647\u0627 \u062f\u0633\u062a\u0631\u0633\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u062f.<br \/>\u0627\u06cc\u0646 <code>CreditResource<\/code> \u0628\u0647 \u0647\u0645\u06cc\u0646 \u062a\u0631\u062a\u06cc\u0628 \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight kotlin\"><code><span class=\"nd\">@Path<\/span><span class=\"p\">(<\/span><span class=\"s\">\"credit\"<\/span><span class=\"p\">)<\/span>\n<span class=\"nd\">@RequestScoped<\/span>\n<span class=\"nd\">@Produces<\/span><span class=\"p\">(<\/span><span class=\"nc\">MediaType<\/span><span class=\"p\">.<\/span><span class=\"nc\">APPLICATION_JSON<\/span><span class=\"p\">)<\/span>\n<span class=\"k\">open<\/span> <span class=\"kd\">class<\/span> <span class=\"nc\">CreditResource<\/span> <span class=\"p\">{<\/span>\n    <span class=\"nd\">@Inject<\/span>\n    <span class=\"nd\">@AccountsProduct<\/span>\n    <span class=\"k\">open<\/span> <span class=\"kd\">var<\/span> <span class=\"py\">accounts<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Accounts<\/span><span class=\"p\">?<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span>\n\n    <span class=\"nd\">@Inject<\/span>\n    <span class=\"k\">open<\/span> <span class=\"kd\">var<\/span> <span class=\"py\">principal<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Principal<\/span><span class=\"p\">?<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span>\n\n    <span class=\"nd\">@Inject<\/span>\n    <span class=\"k\">open<\/span> <span class=\"kd\">var<\/span> <span class=\"py\">jsonWebToken<\/span><span class=\"p\">:<\/span> <span class=\"nc\">JsonWebToken<\/span><span class=\"p\">?<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span>\n\n    <span class=\"nd\">@Inject<\/span>\n    <span class=\"nd\">@Claim<\/span><span class=\"p\">(<\/span><span class=\"s\">\"access\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">open<\/span> <span class=\"kd\">var<\/span> <span class=\"py\">access<\/span><span class=\"p\">:<\/span> <span class=\"nc\">JsonString<\/span><span class=\"p\">?<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span>\n\n    <span class=\"nd\">@Inject<\/span>\n    <span class=\"nd\">@Claim<\/span><span class=\"p\">(<\/span><span class=\"s\">\"iat\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">open<\/span> <span class=\"kd\">var<\/span> <span class=\"py\">iat<\/span><span class=\"p\">:<\/span> <span class=\"nc\">JsonNumber<\/span><span class=\"p\">?<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span>\n\n    <span class=\"nd\">@Inject<\/span>\n    <span class=\"nd\">@Claim<\/span><span class=\"p\">(<\/span><span class=\"s\">\"name\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">open<\/span> <span class=\"kd\">var<\/span> <span class=\"py\">name<\/span><span class=\"p\">:<\/span> <span class=\"nc\">JsonString<\/span><span class=\"p\">?<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span>\n\n    <span class=\"nd\">@Inject<\/span>\n    <span class=\"nd\">@Claim<\/span><span class=\"p\">(<\/span><span class=\"s\">\"user_id\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">open<\/span> <span class=\"kd\">var<\/span> <span class=\"py\">userId<\/span><span class=\"p\">:<\/span> <span class=\"nc\">JsonNumber<\/span><span class=\"p\">?<\/span> <span class=\"p\">=<\/span> <span class=\"k\">null<\/span>\n\n    <span class=\"nd\">@GET<\/span>\n    <span class=\"nd\">@RolesAllowed<\/span><span class=\"p\">(<\/span><span class=\"s\">\"admin\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"credit\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"nd\">@Throws<\/span><span class=\"p\">(<\/span><span class=\"nc\">JsonProcessingException<\/span><span class=\"o\">::<\/span><span class=\"k\">class<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">open<\/span> <span class=\"k\">fun<\/span> <span class=\"nf\">getAccount<\/span><span class=\"p\">():<\/span> <span class=\"nc\">Response<\/span> <span class=\"p\">=<\/span> <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">accounts<\/span><span class=\"p\">).<\/span><span class=\"nf\">let<\/span> <span class=\"p\">{<\/span> <span class=\"n\">accounts<\/span> <span class=\"p\">-&gt;<\/span>\n        <span class=\"nf\">createResponse<\/span><span class=\"p\">(<\/span>\n            <span class=\"n\">accounts<\/span><span class=\"p\">.<\/span><span class=\"n\">accountMap<\/span><span class=\"p\">[<\/span><span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">).<\/span><span class=\"n\">string<\/span><span class=\"p\">]<\/span> <span class=\"o\">?:<\/span> <span class=\"k\">return<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">.<\/span><span class=\"nf\">serverError<\/span><span class=\"p\">().<\/span><span class=\"nf\">build<\/span><span class=\"p\">()<\/span>\n        <span class=\"p\">)<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"nd\">@PUT<\/span>\n    <span class=\"nd\">@RolesAllowed<\/span><span class=\"p\">(<\/span><span class=\"s\">\"admin\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"credit\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"nd\">@Consumes<\/span><span class=\"p\">(<\/span><span class=\"nc\">MediaType<\/span><span class=\"p\">.<\/span><span class=\"nc\">APPLICATION_JSON<\/span><span class=\"p\">)<\/span>\n    <span class=\"nd\">@Throws<\/span><span class=\"p\">(<\/span>\n        <span class=\"nc\">JsonProcessingException<\/span><span class=\"o\">::<\/span><span class=\"k\">class<\/span>\n    <span class=\"p\">)<\/span>\n    <span class=\"k\">open<\/span> <span class=\"k\">fun<\/span> <span class=\"nf\">cashIn<\/span><span class=\"p\">(<\/span><span class=\"n\">transactionBody<\/span><span class=\"p\">:<\/span> <span class=\"nc\">TransactionBody<\/span><span class=\"p\">)<\/span> <span class=\"p\">=<\/span> <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">accounts<\/span><span class=\"p\">).<\/span><span class=\"nf\">let<\/span> <span class=\"p\">{<\/span> <span class=\"n\">accounts<\/span> <span class=\"p\">-&gt;<\/span>\n        <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">).<\/span><span class=\"nf\">let<\/span> <span class=\"p\">{<\/span> <span class=\"n\">name<\/span> <span class=\"p\">-&gt;<\/span>\n            <span class=\"n\">accounts<\/span><span class=\"p\">.<\/span><span class=\"n\">accountMap<\/span><span class=\"p\">[<\/span><span class=\"n\">name<\/span><span class=\"p\">.<\/span><span class=\"n\">string<\/span><span class=\"p\">]<\/span> <span class=\"p\">=<\/span> <span class=\"p\">(<\/span><span class=\"n\">accounts<\/span><span class=\"p\">.<\/span><span class=\"n\">accountMap<\/span><span class=\"p\">[<\/span><span class=\"n\">name<\/span><span class=\"p\">.<\/span><span class=\"n\">string<\/span><span class=\"p\">]<\/span> <span class=\"o\">?:<\/span> <span class=\"k\">return<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">.<\/span><span class=\"nf\">serverError<\/span><span class=\"p\">()<\/span>\n                <span class=\"p\">.<\/span><span class=\"nf\">build<\/span><span class=\"p\">()).<\/span><span class=\"nf\">addCreditValue<\/span><span class=\"p\">(<\/span><span class=\"n\">transactionBody<\/span><span class=\"p\">.<\/span><span class=\"n\">saldo<\/span><span class=\"o\">?:<\/span> <span class=\"mi\">0L<\/span><span class=\"p\">)<\/span>\n            <span class=\"nf\">createResponse<\/span><span class=\"p\">(<\/span>\n                <span class=\"p\">(<\/span><span class=\"n\">accounts<\/span><span class=\"p\">.<\/span><span class=\"n\">accountMap<\/span><span class=\"p\">[<\/span><span class=\"n\">name<\/span><span class=\"p\">.<\/span><span class=\"n\">string<\/span><span class=\"p\">]<\/span> <span class=\"o\">?:<\/span> <span class=\"k\">return<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">.<\/span><span class=\"nf\">serverError<\/span><span class=\"p\">()<\/span>\n                    <span class=\"p\">.<\/span><span class=\"nf\">build<\/span><span class=\"p\">()).<\/span><span class=\"nf\">addCreditValue<\/span><span class=\"p\">(<\/span><span class=\"n\">transactionBody<\/span><span class=\"p\">.<\/span><span class=\"n\">saldo<\/span><span class=\"o\">?:<\/span> <span class=\"mi\">0L<\/span><span class=\"p\">)<\/span>\n            <span class=\"p\">)<\/span>\n        <span class=\"p\">}<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"nd\">@GET<\/span>\n    <span class=\"nd\">@Path<\/span><span class=\"p\">(<\/span><span class=\"s\">\"all\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"nd\">@Produces<\/span><span class=\"p\">(<\/span><span class=\"nc\">MediaType<\/span><span class=\"p\">.<\/span><span class=\"nc\">APPLICATION_JSON<\/span><span class=\"p\">)<\/span>\n    <span class=\"nd\">@Throws<\/span><span class=\"p\">(<\/span>\n        <span class=\"nc\">JsonProcessingException<\/span><span class=\"o\">::<\/span><span class=\"k\">class<\/span>\n    <span class=\"p\">)<\/span>\n    <span class=\"k\">open<\/span> <span class=\"k\">fun<\/span> <span class=\"nf\">getAll<\/span><span class=\"p\">():<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">?<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kd\">val<\/span> <span class=\"py\">allAccounts<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">ArrayList<\/span><span class=\"p\">(<\/span>\n            <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">accounts<\/span><span class=\"p\">).<\/span><span class=\"n\">accountMap<\/span>\n                <span class=\"p\">.<\/span><span class=\"n\">values<\/span>\n        <span class=\"p\">)<\/span>\n        <span class=\"n\">logger<\/span><span class=\"p\">.<\/span><span class=\"nf\">info<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Principal: {}\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">objectMapper<\/span><span class=\"p\">.<\/span><span class=\"nf\">writeValueAsString<\/span><span class=\"p\">(<\/span><span class=\"n\">principal<\/span><span class=\"p\">))<\/span>\n        <span class=\"n\">logger<\/span><span class=\"p\">.<\/span><span class=\"nf\">info<\/span><span class=\"p\">(<\/span><span class=\"s\">\"JSonWebToken: {}\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">objectMapper<\/span><span class=\"p\">.<\/span><span class=\"nf\">writeValueAsString<\/span><span class=\"p\">(<\/span><span class=\"n\">jsonWebToken<\/span><span class=\"p\">))<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">.<\/span><span class=\"nf\">ok<\/span><span class=\"p\">(<\/span><span class=\"n\">allAccounts<\/span><span class=\"p\">)<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">build<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"nd\">@GET<\/span>\n    <span class=\"nd\">@Path<\/span><span class=\"p\">(<\/span><span class=\"s\">\"summary\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"nd\">@Produces<\/span><span class=\"p\">(<\/span><span class=\"nc\">MediaType<\/span><span class=\"p\">.<\/span><span class=\"nc\">APPLICATION_JSON<\/span><span class=\"p\">)<\/span>\n    <span class=\"nd\">@Throws<\/span><span class=\"p\">(<\/span>\n        <span class=\"nc\">JsonProcessingException<\/span><span class=\"o\">::<\/span><span class=\"k\">class<\/span>\n    <span class=\"p\">)<\/span>\n    <span class=\"k\">open<\/span> <span class=\"k\">fun<\/span> <span class=\"nf\">getSummary<\/span><span class=\"p\">():<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">?<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kd\">val<\/span> <span class=\"py\">totalCredit<\/span> <span class=\"p\">=<\/span> <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">accounts<\/span><span class=\"p\">).<\/span><span class=\"n\">accountMap<\/span>\n            <span class=\"p\">.<\/span><span class=\"n\">values<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">map<\/span><span class=\"p\">(<\/span><span class=\"nc\">Account<\/span><span class=\"o\">::<\/span><span class=\"n\">creditValue<\/span><span class=\"p\">)<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">stream<\/span><span class=\"p\">()<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">reduce<\/span> <span class=\"p\">{<\/span> <span class=\"n\">total<\/span><span class=\"p\">,<\/span> <span class=\"n\">v<\/span> <span class=\"p\">-&gt;<\/span> <span class=\"n\">total<\/span><span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"n\">v<\/span><span class=\"p\">)<\/span> <span class=\"p\">}<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">orElse<\/span><span class=\"p\">(<\/span><span class=\"nc\">BigDecimal<\/span><span class=\"p\">.<\/span><span class=\"nc\">ZERO<\/span><span class=\"p\">)<\/span>\n        <span class=\"kd\">val<\/span> <span class=\"py\">jsonObject<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">Json<\/span><span class=\"p\">.<\/span><span class=\"nf\">createObjectBuilder<\/span><span class=\"p\">()<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"s\">\"totalCredit\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">totalCredit<\/span><span class=\"p\">)<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"s\">\"client\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"Mother Nature Dream Team\"<\/span><span class=\"p\">)<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">build<\/span><span class=\"p\">()<\/span>\n        <span class=\"n\">logger<\/span><span class=\"p\">.<\/span><span class=\"nf\">info<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Summary\"<\/span><span class=\"p\">)<\/span>\n        <span class=\"n\">logger<\/span><span class=\"p\">.<\/span><span class=\"nf\">info<\/span><span class=\"p\">(<\/span><span class=\"s\">\"Principal: {}\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">objectMapper<\/span><span class=\"p\">.<\/span><span class=\"nf\">writeValueAsString<\/span><span class=\"p\">(<\/span><span class=\"n\">principal<\/span><span class=\"p\">))<\/span>\n        <span class=\"n\">logger<\/span><span class=\"p\">.<\/span><span class=\"nf\">info<\/span><span class=\"p\">(<\/span><span class=\"s\">\"JSonWebToken: {}\"<\/span><span class=\"p\">,<\/span> <span class=\"n\">objectMapper<\/span><span class=\"p\">.<\/span><span class=\"nf\">writeValueAsString<\/span><span class=\"p\">(<\/span><span class=\"n\">jsonWebToken<\/span><span class=\"p\">))<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">.<\/span><span class=\"nf\">ok<\/span><span class=\"p\">(<\/span><span class=\"n\">jsonObject<\/span><span class=\"p\">)<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">build<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"nd\">@GET<\/span>\n    <span class=\"nd\">@RolesAllowed<\/span><span class=\"p\">(<\/span><span class=\"s\">\"admin\"<\/span><span class=\"p\">,<\/span> <span class=\"s\">\"client\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"nd\">@Path<\/span><span class=\"p\">(<\/span><span class=\"s\">\"jwt\"<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">open<\/span> <span class=\"k\">fun<\/span> <span class=\"nf\">getJWT<\/span><span class=\"p\">():<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">?<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kd\">val<\/span> <span class=\"py\">jsonObject<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">Json<\/span><span class=\"p\">.<\/span><span class=\"nf\">createObjectBuilder<\/span><span class=\"p\">()<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"s\">\"jwt\"<\/span><span class=\"p\">,<\/span> <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">jsonWebToken<\/span><span class=\"p\">).<\/span><span class=\"n\">rawToken<\/span><span class=\"p\">)<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"s\">\"userId\"<\/span><span class=\"p\">,<\/span> <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">userId<\/span><span class=\"p\">).<\/span><span class=\"nf\">doubleValue<\/span><span class=\"p\">())<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"s\">\"access\"<\/span><span class=\"p\">,<\/span> <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">access<\/span><span class=\"p\">).<\/span><span class=\"n\">string<\/span><span class=\"p\">)<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">add<\/span><span class=\"p\">(<\/span><span class=\"s\">\"iat\"<\/span><span class=\"p\">,<\/span> <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">iat<\/span><span class=\"p\">).<\/span><span class=\"nf\">doubleValue<\/span><span class=\"p\">())<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">build<\/span><span class=\"p\">()<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nc\">Response<\/span><span class=\"p\">.<\/span><span class=\"nf\">ok<\/span><span class=\"p\">(<\/span><span class=\"n\">jsonObject<\/span><span class=\"p\">)<\/span>\n            <span class=\"p\">.<\/span><span class=\"nf\">build<\/span><span class=\"p\">()<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"nd\">@Throws<\/span><span class=\"p\">(<\/span><span class=\"nc\">JsonProcessingException<\/span><span class=\"o\">::<\/span><span class=\"k\">class<\/span><span class=\"p\">)<\/span>\n    <span class=\"k\">private<\/span> <span class=\"k\">fun<\/span> <span class=\"nf\">createResponse<\/span><span class=\"p\">(<\/span><span class=\"n\">currentAccount<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Account<\/span><span class=\"p\">):<\/span> <span class=\"nc\">Response<\/span> <span class=\"p\">{<\/span>\n        <span class=\"k\">return<\/span> <span class=\"nc\">AccountsFactory<\/span><span class=\"p\">.<\/span><span class=\"nf\">createResponse<\/span><span class=\"p\">(<\/span>\n            <span class=\"n\">currentAccount<\/span><span class=\"p\">,<\/span>\n            <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">name<\/span><span class=\"p\">),<\/span>\n            <span class=\"nf\">requireNotNull<\/span><span class=\"p\">(<\/span><span class=\"n\">accounts<\/span><span class=\"p\">),<\/span>\n            <span class=\"n\">logger<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">objectMapper<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">principal<\/span><span class=\"p\">,<\/span>\n            <span class=\"n\">jsonWebToken<\/span>\n        <span class=\"p\">)<\/span>\n    <span class=\"p\">}<\/span>\n\n    <span class=\"k\">companion<\/span> <span class=\"k\">object<\/span> <span class=\"p\">{<\/span>\n        <span class=\"kd\">val<\/span> <span class=\"py\">objectMapper<\/span><span class=\"p\">:<\/span> <span class=\"nc\">ObjectMapper<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">ObjectMapper<\/span><span class=\"p\">()<\/span>\n        <span class=\"kd\">val<\/span> <span class=\"py\">logger<\/span><span class=\"p\">:<\/span> <span class=\"nc\">Logger<\/span> <span class=\"p\">=<\/span> <span class=\"nc\">LoggerFactory<\/span><span class=\"p\">.<\/span><span class=\"nf\">getLogger<\/span><span class=\"p\">(<\/span><span class=\"nc\">CreditResource<\/span><span class=\"o\">::<\/span><span class=\"k\">class<\/span><span class=\"p\">.<\/span><span class=\"n\">java<\/span><span class=\"p\">)<\/span>\n    <span class=\"p\">}<\/span>\n<span class=\"p\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u062a\u0646\u0647\u0627 \u062a\u0641\u0627\u0648\u062a \u0627\u06cc\u0646 \u0627\u0633\u062a \u06a9\u0647 \u0628\u0647 \u062c\u0627\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0646\u0642\u0634 \u0647\u0627 <code>admin<\/code> \u0648 <code>client<\/code> \u0645\u0627 \u062f\u0631 \u062d\u0627\u0644 \u062d\u0627\u0636\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u06cc\u0645 <code>admin<\/code> \u0648 <code>credit<\/code> \u0646\u0642\u0634 \u0647\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u062a\u0648\u062c\u0647 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u062f \u06a9\u0647 \u0647\u06cc\u0686 \u06af\u0627\u0647 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0648\u0631\u062f \u0627\u06cc\u062c\u0627\u062f \u0646\u062e\u0648\u0627\u0647\u062f \u0634\u062f <code>resource<\/code>. \u0627\u06cc\u0646 \u0641\u0642\u0637 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0627\u0645\u06a9\u0627\u0646 \u067e\u0630\u06cc\u0631 \u0627\u0633\u062a <code>resource<\/code>.<br \/>\u0627\u06a9\u0646\u0648\u0646 \u06a9\u0647 \u0645\u06cc\u200c\u062f\u0627\u0646\u06cc\u0645 \u06a9\u062f \u0686\u06af\u0648\u0646\u0647 \u067e\u06cc\u0627\u062f\u0647\u200c\u0633\u0627\u0632\u06cc \u0645\u06cc\u200c\u0634\u0648\u062f\u060c \u0627\u0628\u062a\u062f\u0627 \u0645\u0631\u0648\u0631 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u06a9\u062f\u0627\u0645 \u0631\u0648\u0634\u200c\u0647\u0627 \u0631\u0627 \u062f\u0631 \u062e\u0648\u062f \u062f\u0631 \u062f\u0633\u062a\u0631\u0633 \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0647\u200c\u0627\u06cc\u0645 <code>REST<\/code> \u062e\u062f\u0645\u0627\u062a<\/p>\n<h2><span class=\"ez-toc-section\" id=\"8_%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87_%D8%A7%D8%B2_%D8%A8%D8%B1%D9%86%D8%A7%D9%85%D9%87\"><\/span>\n<p>  8. \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u0628\u0631\u0646\u0627\u0645\u0647<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0644\u06cc\u0633\u062a \u062e\u062f\u0645\u0627\u062a \u0645\u0648\u0631\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0631\u0627 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u0645:<\/p>\n<p>\u0646\u0648\u0639\u060c URL\u060c \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc\u060c \u0646\u062a\u06cc\u062c\u0647\u060c \u0646\u0642\u0634\u200c\u0647\u0627\u06cc \u0645\u062c\u0627\u0632<br \/>POST,http:\/\/localhost:8080\/accounts,n\/a,Created account,admin\/client\/credit<br \/>POST,http:\/\/localhost:8080\/accounts\/user,n\/a,Created user,admin\/user<br \/>GET,http:\/\/localhost:8080\/accounts,n\/a,\u062d\u0633\u0627\u0628 \u0645\u0646\u0637\u0628\u0642, admin\/client<br \/>PUT,http:\/\/localhost:8080\/accounts,{saldo: Long}, \u0645\u0648\u062c\u0648\u062f\u06cc \u0641\u0639\u0644\u06cc, admin\/client<br \/>GET,http:\/\/localhost:8080\/accounts\/all,n\/a,\u0647\u0645\u0647 \u062d\u0633\u0627\u0628\u0647\u0627\u06cc \u062c\u0627\u0631\u06cc,\u0647\u0645\u0647<br \/>GET,http:\/\/localhost:8080\/accounts\/summary,n\/a,\u0645\u062c\u0645\u0648\u0639 \u0647\u0645\u0647 \u0645\u0648\u062c\u0648\u062f\u06cc \u0647\u0627,\u0647\u0645\u0647<br \/>GET,http:\/\/localhost:8080\/credit,n\/a,\u062d\u0633\u0627\u0628 \u0645\u0646\u0637\u0628\u0642, admin\/client<br \/>PUT,http:\/\/localhost:8080\/credit,{saldo: Long}, \u0627\u0639\u062a\u0628\u0627\u0631 \u0641\u0639\u0644\u06cc, admin\/client<br \/>GET,http:\/\/localhost:8080\/credit\/all,n\/a,\u0647\u0645\u0647 \u0627\u0639\u062a\u0628\u0627\u0631\u0627\u062a,\u0647\u0645\u0647<br \/>GET,http:\/\/localhost:8080\/credit\/summary,n\/a,\u062c\u0645\u0639 \u0627\u0639\u062a\u0628\u0627\u0631\u0627\u062a,\u0647\u0645\u0647<\/p>\n<p>\u0647\u0645\u0647 \u0646\u0642\u0627\u0637 \u067e\u0627\u06cc\u0627\u0646\u06cc<\/p>\n<h2><span class=\"ez-toc-section\" id=\"9_%D8%A7%DB%8C%D8%AC%D8%A7%D8%AF_%D9%85%D8%AD%DB%8C%D8%B7_%D8%AA%D8%B3%D8%AA\"><\/span>\n<p>  9. \u0627\u06cc\u062c\u0627\u062f \u0645\u062d\u06cc\u0637 \u062a\u0633\u062a<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0646 \u0627\u06cc\u062c\u0627\u062f \u06a9\u0631\u062f\u0647 \u0627\u0645 <code>bash<\/code> \u0641\u0627\u06cc\u0644 \u062f\u0631 \u067e\u0648\u0634\u0647 \u0631\u06cc\u0634\u0647 \u0627\u06cc\u0646 \u0641\u0627\u06cc\u0644 &#8220;setupCertificates.sh&#8221; \u0646\u0627\u0645 \u062f\u0627\u0631\u062f. \u0628\u06cc\u0627\u06cc\u06cc\u062f \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0622\u0646 \u0628\u06cc\u0646\u062f\u0627\u0632\u06cc\u0645 \u062a\u0627 \u0627\u06cc\u062f\u0647 \u0627\u06cc \u0627\u0632 \u0622\u0646\u0686\u0647 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc \u062f\u0647\u062f \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"c\">#!\/bin\/bash<\/span>\n\n<span class=\"nb\">mkdir<\/span> <span class=\"nt\">-\u0635<\/span> \u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0645\u0627\u0644\u06cc \u0634\u0645\u0627\n\n<span class=\"nb\">\u0633\u06cc \u062f\u06cc <\/span>\u0641\u0627\u06cc\u0644 \u0647\u0627\u06cc \u0645\u0627\u0644\u06cc \u0634\u0645\u0627 <span class=\"o\">||<\/span> <span class=\"nb\">\u062e\u0631\u0648\u062c\n\n<\/span>openssl genrsa <span class=\"nt\">-\u062e\u0627\u0631\u062c<\/span> baseKey.pem openssl pkcs8 <span class=\"nt\">-\u062a\u0648\u067e 8<\/span> <span class=\"nt\">- \u0627\u0637\u0644\u0627\u0639 \u0631\u0633\u0627\u0646\u06cc<\/span> PEM <span class=\"nt\">-\u062f\u0631<\/span> baseKey.pem <span class=\"nt\">-\u062e\u0627\u0631\u062c<\/span> privateKey.pem <span class=\"nt\">-\u0646\u0648\u06a9\u0631\u06cc\u067e\u062a<\/span>\n\nopenssl rsa <span class=\"nt\">-\u062f\u0631<\/span> baseKey.pem <span class=\"nt\">-\u0641\u0631\u0648\u0634\u06af\u0627\u0647<\/span> <span class=\"nt\">- \u0686\u06cc\u062f\u0645\u0627\u0646<\/span> PEM <span class=\"nt\">-\u062e\u0627\u0631\u062c<\/span> publicKey.pem\n\n<span class=\"nb\">\u0627\u06a9\u0648<\/span> <span class=\"nt\">-e<\/span> <span class=\"s1\">&#39;\\033[1;32mFirst test\\033[0m'<\/span>\njava <span class=\"nt\">-jar<\/span> ..\/your-finance-jwt-generator\/target\/your-finance-jwt-generator.jar <span class=\"se\">\\<\/span>\n        <span class=\"nt\">-p<\/span> ..\/jwt-plain-tokens\/jwt-token-admin.json <span class=\"se\">\\<\/span>\n        <span class=\"nt\">-key<\/span> ..\/your-finance-files\/privateKey.pem <span class=\"o\">&gt;&gt;<\/span> token.jwt\n\n<span class=\"nv\">CERT_PUBLIC_KEY<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span><span class=\"nb\">cat<\/span> ..\/your-finance-files\/publicKey.pem<span class=\"si\">)<\/span>\n<span class=\"nv\">CERT_ISSUER<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"joaofilipesabinoesperancinha\"<\/span>\n\n<span class=\"nb\">echo<\/span> <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mGenerated public key: <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m <\/span><span class=\"nv\">$CERT_PUBLIC_KEY<\/span><span class=\"s2\">\"<\/span>\n<span class=\"nb\">echo<\/span> <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mIssued by: <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m <\/span><span class=\"nv\">$CERT_ISSUER<\/span><span class=\"s2\">\"<\/span>\n<span class=\"nb\">echo<\/span> <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mYour token is: <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m <\/span><span class=\"si\">$(<\/span><span class=\"nb\">cat <\/span>token.jwt<span class=\"si\">)<\/span><span class=\"s2\">\"<\/span>\n\n<span class=\"nb\">cp<\/span> ..\/your-financeje-banking\/src\/main\/resources\/config-template ..\/your-financeje-banking\/src\/main\/resources\/config_copy.yml\n\n<span class=\"nv\">CERT_CLEAN0<\/span><span class=\"o\">=<\/span><span class=\"k\">${<\/span><span class=\"nv\">CERT_PUBLIC_KEY<\/span><span class=\"p\">\/\/<\/span><span class=\"s2\">\"https:\/\/dev.to\/\"<\/span><span class=\"p\">\/<\/span><span class=\"s2\">\"<\/span><span class=\"se\">\\\/<\/span><span class=\"s2\">\"<\/span><span class=\"k\">}<\/span>\n<span class=\"nv\">CERT_CLEAN1<\/span><span class=\"o\">=<\/span><span class=\"k\">${<\/span><span class=\"nv\">CERT_CLEAN0<\/span><span class=\"p\">\/\/<\/span><span class=\"s1\">$'<\/span><span class=\"se\">\\r\\n<\/span><span class=\"s1\">'<\/span><span class=\"p\">\/<\/span><span class=\"k\">}<\/span>\n<span class=\"nv\">CERT_CLEAN2<\/span><span class=\"o\">=<\/span><span class=\"k\">${<\/span><span class=\"nv\">CERT_CLEAN1<\/span><span class=\"p\">\/\/<\/span><span class=\"s1\">$'<\/span><span class=\"se\">\\n<\/span><span class=\"s1\">'<\/span><span class=\"p\">\/<\/span><span class=\"k\">}<\/span>\n<span class=\"nv\">CERT_CLEAN3<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span><span class=\"nb\">echo<\/span> <span class=\"s2\">\"<\/span><span class=\"nv\">$CERT_CLEAN2<\/span><span class=\"s2\">\"<\/span> | <span class=\"nb\">awk<\/span> <span class=\"s1\">'{gsub(\"-----BEGIN PUBLIC KEY-----\",\"\"); print}'<\/span><span class=\"si\">)<\/span>\n<span class=\"nv\">CERT_CLEAN4<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span><span class=\"nb\">echo<\/span> <span class=\"s2\">\"<\/span><span class=\"nv\">$CERT_CLEAN3<\/span><span class=\"s2\">\"<\/span> | <span class=\"nb\">awk<\/span> <span class=\"s1\">'{gsub(\"-----END PUBLIC KEY-----\",\"\"); print}'<\/span><span class=\"si\">)<\/span>\n<span class=\"nv\">CERT_CLEAN<\/span><span class=\"o\">=<\/span><span class=\"k\">${<\/span><span class=\"nv\">CERT_CLEAN4<\/span><span class=\"p\">\/\/<\/span><span class=\"s1\">$' '<\/span><span class=\"p\">\/<\/span><span class=\"k\">}<\/span>\n\n<span class=\"nb\">echo<\/span> <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mCertificate cleanup: <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m <\/span><span class=\"k\">${<\/span><span class=\"nv\">CERT_CLEAN<\/span><span class=\"p\">\/<\/span><span class=\"s1\">$'<\/span><span class=\"se\">\\n<\/span><span class=\"s1\">'<\/span><span class=\"p\">\/<\/span><span class=\"k\">}<\/span><span class=\"s2\">\"<\/span>\n\n<span class=\"nb\">sed<\/span> <span class=\"s2\">\"s\/{{ publicKey }}\/<\/span><span class=\"nv\">$CERT_CLEAN<\/span><span class=\"s2\">\/g\"<\/span> ..\/your-financeje-banking\/src\/main\/resources\/config_copy.yml <span class=\"o\">&gt;<\/span> ..\/your-financeje-banking\/src\/main\/resources\/config_cert.yml\n<span class=\"nb\">sed<\/span> <span class=\"s2\">\"s\/{{ issuer }}\/<\/span><span class=\"nv\">$CERT_ISSUER<\/span><span class=\"s2\">\/g\"<\/span> ..\/your-financeje-banking\/src\/main\/resources\/config_cert.yml <span class=\"o\">&gt;<\/span> ..\/your-financeje-banking\/src\/main\/resources\/config.yml\n\n<span class=\"nb\">rm<\/span> ..\/your-financeje-banking\/src\/main\/resources\/config_cert.yml\n<span class=\"nb\">rm<\/span> ..\/your-financeje-banking\/src\/main\/resources\/config_copy.yml\n\n<span class=\"nb\">echo<\/span> <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mSecurity elements completely generated!<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n\n<span class=\"nb\">echo<\/span> <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mGenerating tokens...<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n\n<span class=\"nv\">TOKEN_FOLDER<\/span><span class=\"o\">=<\/span>jwt-tokens\n<span class=\"nb\">mkdir<\/span> <span class=\"nt\">-p<\/span> <span class=\"k\">${<\/span><span class=\"nv\">TOKEN_FOLDER<\/span><span class=\"k\">}<\/span>\n<span class=\"c\">#<\/span>\n<span class=\"nv\">CREATE_ACCOUNT_FILE<\/span><span class=\"o\">=<\/span>createAccount.sh\n<span class=\"nv\">CREATE_USER_FILE<\/span><span class=\"o\">=<\/span>createUser.sh\n<span class=\"nv\">SEND_MONEY_FILE<\/span><span class=\"o\">=<\/span>sendMoney.sh\n<span class=\"nv\">ASK_CREDIT_FILE<\/span><span class=\"o\">=<\/span>askCredit.sh\n<span class=\"nv\">TOKEN_NAME_VALUE<\/span><span class=\"o\">=<\/span>tokenNameValue.csv\n\n<span class=\"nb\">echo<\/span> <span class=\"s2\">\"#!\/usr\/bin\/env bash\"<\/span> <span class=\"o\">&gt;<\/span> <span class=\"k\">${<\/span><span class=\"nv\">CREATE_ACCOUNT_FILE<\/span><span class=\"k\">}<\/span>\n<span class=\"nb\">chmod<\/span> +x <span class=\"k\">${<\/span><span class=\"nv\">CREATE_ACCOUNT_FILE<\/span><span class=\"k\">}<\/span>\n<span class=\"nb\">echo<\/span> <span class=\"s2\">\"#!\/usr\/bin\/env bash\"<\/span> <span class=\"o\">&gt;<\/span> <span class=\"k\">${<\/span><span class=\"nv\">CREATE_USER_FILE<\/span><span class=\"k\">}<\/span>\n<span class=\"nb\">chmod<\/span> +x <span class=\"k\">${<\/span><span class=\"nv\">CREATE_USER_FILE<\/span><span class=\"k\">}<\/span>\n<span class=\"nb\">echo<\/span> <span class=\"s2\">\"#!\/usr\/bin\/env bash\"<\/span> <span class=\"o\">&gt;<\/span> <span class=\"k\">${<\/span><span class=\"nv\">SEND_MONEY_FILE<\/span><span class=\"k\">}<\/span>\n<span class=\"nb\">chmod<\/span> +x <span class=\"k\">${<\/span><span class=\"nv\">SEND_MONEY_FILE<\/span><span class=\"k\">}<\/span>\n<span class=\"nb\">echo<\/span> <span class=\"s2\">\"#!\/usr\/bin\/env bash\"<\/span> <span class=\"o\">&gt;<\/span> <span class=\"k\">${<\/span><span class=\"nv\">ASK_CREDIT_FILE<\/span><span class=\"k\">}<\/span>\n<span class=\"nb\">chmod<\/span> +x <span class=\"k\">${<\/span><span class=\"nv\">ASK_CREDIT_FILE<\/span><span class=\"k\">}<\/span>\n\n<span class=\"k\">for <\/span>item <span class=\"k\">in<\/span> ..\/jwt-plain-tokens\/jwt-token<span class=\"k\">*<\/span>.json<span class=\"p\">;<\/span> <span class=\"k\">do\n     if<\/span> <span class=\"o\">[[<\/span> <span class=\"nt\">-f<\/span> <span class=\"s2\">\"<\/span><span class=\"nv\">$item<\/span><span class=\"s2\">\"<\/span> <span class=\"o\">]]<\/span><span class=\"p\">;<\/span> <span class=\"k\">\u0633\u067e\u0633\n        <\/span><span class=\"nv\">\u0646\u0627\u0645 \u0641\u0627\u06cc\u0644<\/span><span class=\"o\">=<\/span><span class=\"k\">${<\/span><span class=\"nv\">\u0645\u0648\u0631\u062f<\/span><span class=\"p\">##*\/<\/span><span class=\"k\">}<\/span>\n        <span class=\"nv\">\u062f\u0631 \u0647\u0631_\u062a\u0648\u06a9\u0646<\/span><span class=\"o\">=<\/span><span class=\"k\">${<\/span><span class=\"nv\">\u0646\u0627\u0645 \u0641\u0627\u06cc\u0644<\/span><span class=\"p\">\/jwt-token-\/<\/span><span class=\"k\">}<\/span>\n        <span class=\"nv\">token_name<\/span><span class=\"o\">=<\/span><span class=\"k\">${<\/span><span class=\"nv\">\u062f\u0631 \u0647\u0631_\u062a\u0648\u06a9\u0646<\/span><span class=\"p\">\/.json\/<\/span><span class=\"k\">}<\/span>\n        <span class=\"nb\">cp<\/span> <span class=\"s2\">\"<\/span><span class=\"k\">${<\/span><span class=\"nv\">\u0645\u0648\u0631\u062f<\/span><span class=\"k\">}<\/span><span class=\"s2\">\"<\/span> jwt-token.json \u062c\u0627\u0648\u0627 <span class=\"nt\">-\u06a9\u0648\u0632\u0647<\/span> ..\/Your-Finance-jwt-generator\/target\/Your-Finance-jwt-generator.jar <span class=\"se\">\\<\/span>\n                <span class=\"nt\">-\u0635<\/span> jwt-token.json <span class=\"se\">\\<\/span>\n                <span class=\"nt\">-\u06a9\u0644\u06cc\u062f<\/span> ..\/your-finance-files\/privateKey.pem <span class=\"o\">><\/span> token.jwt\n        <span class=\"nb\">cp <\/span>token.jwt <span class=\"k\">${<\/span><span class=\"nv\">TOKEN_FOLDER<\/span><span class=\"k\">}<\/span>\/\u062a\u0648\u06a9\u0646-<span class=\"s2\">\"<\/span><span class=\"k\">${<\/span><span class=\"nv\">token_name<\/span><span class=\"k\">}<\/span><span class=\"s2\">\"<\/span>.jwt\n\n        <span class=\"nv\">\u0646\u0634\u0627\u0646\u0647<\/span><span class=\"o\">=<\/span><span class=\"si\">$(<\/span><span class=\"nb\">\u06af\u0631\u0628\u0647 <\/span>token.jwt<span class=\"si\">)<\/span>\n\n        <span class=\"nb\">\u0627\u06a9\u0648<\/span> <span class=\"s2\">\"# \u0627\u06cc\u062c\u0627\u062f \u062d\u0633\u0627\u0628 \u06a9\u0627\u0631\u0628\u0631\u06cc: \"\"<\/span><span class=\"k\">${<\/span><span class=\"nv\">token_name<\/span><span class=\"k\">}<\/span><span class=\"s2\">\"<\/span> <span class=\"o\">>><\/span> <span class=\"k\">${<\/span><span class=\"nv\">CREATE_ACCOUNT_FILE<\/span><span class=\"k\">}<\/span>\n        <span class=\"nb\">\u0627\u06a9\u0648<\/span> <span class=\"s2\">\"\u067e\u0698\u0648\u0627\u06a9 -e <\/span><span class=\"se\">\\\"\\e<\/span><span class=\"s2\">[93mCreating account <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96m<\/span><span class=\"k\">${<\/span><span class=\"nv\">token_name<\/span><span class=\"k\">}<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m<\/span><span class=\"se\">\\\"<\/span><span class=\"s2\">\"<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"k\">${<\/span><span class=\"nv\">CREATE_ACCOUNT_FILE<\/span><span class=\"k\">}<\/span>\n        <span class=\"nb\">echo <\/span>curl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s2\">\"'Authorization: Bearer \"\"<\/span><span class=\"k\">${<\/span><span class=\"nv\">token<\/span><span class=\"k\">}<\/span><span class=\"s2\">\"\"'\"<\/span> http:\/\/localhost:8080\/accounts <span class=\"nt\">-X<\/span> POST <span class=\"o\">&gt;&gt;<\/span> <span class=\"k\">${<\/span><span class=\"nv\">CREATE_ACCOUNT_FILE<\/span><span class=\"k\">}<\/span>\n        <span class=\"nb\">echo<\/span> <span class=\"s2\">\"echo  -e <\/span><span class=\"se\">\\\"\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m<\/span><span class=\"se\">\\\"<\/span><span class=\"s2\">\"<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"k\">${<\/span><span class=\"nv\">CREATE_ACCOUNT_FILE<\/span><span class=\"k\">}<\/span>\n\n        <span class=\"nb\">echo<\/span> <span class=\"s2\">\"# Create user: \"\"<\/span><span class=\"k\">${<\/span><span class=\"nv\">token_name<\/span><span class=\"k\">}<\/span><span class=\"s2\">\"<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"k\">${<\/span><span class=\"nv\">CREATE_USER_FILE<\/span><span class=\"k\">}<\/span>\n        <span class=\"nb\">echo<\/span> <span class=\"s2\">\"echo  -e <\/span><span class=\"se\">\\\"\\e<\/span><span class=\"s2\">[93mCreating user <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96m<\/span><span class=\"k\">${<\/span><span class=\"nv\">token_name<\/span><span class=\"k\">}<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m<\/span><span class=\"se\">\\\"<\/span><span class=\"s2\">\"<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"k\">${<\/span><span class=\"nv\">CREATE_USER_FILE<\/span><span class=\"k\">}<\/span>\n        <span class=\"nb\">echo <\/span>curl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s2\">\"'Authorization: Bearer \"\"<\/span><span class=\"k\">${<\/span><span class=\"nv\">token<\/span><span class=\"k\">}<\/span><span class=\"s2\">\"\"'\"<\/span> http:\/\/localhost:8080\/accounts\/user <span class=\"nt\">-X<\/span> POST <span class=\"o\">&gt;&gt;<\/span> <span class=\"k\">${<\/span><span class=\"nv\">CREATE_USER_FILE<\/span><span class=\"k\">}<\/span>\n        <span class=\"nb\">echo<\/span> <span class=\"s2\">\"echo  -e <\/span><span class=\"se\">\\\"\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m<\/span><span class=\"se\">\\\"<\/span><span class=\"s2\">\"<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"k\">${<\/span><span class=\"nv\">CREATE_USER_FILE<\/span><span class=\"k\">}<\/span>\n\n        <span class=\"nb\">echo<\/span> <span class=\"s2\">\"# Send money to: \"<\/span><span class=\"k\">${<\/span><span class=\"nv\">token_name<\/span><span class=\"k\">}<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"k\">${<\/span><span class=\"nv\">SEND_MONEY_FILE<\/span><span class=\"k\">}<\/span>\n        <span class=\"nb\">echo<\/span> <span class=\"s2\">\"echo  -e <\/span><span class=\"se\">\\\"\\e<\/span><span class=\"s2\">[93mSending money to <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96m<\/span><span class=\"k\">${<\/span><span class=\"nv\">token_name<\/span><span class=\"k\">}<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m<\/span><span class=\"se\">\\\"<\/span><span class=\"s2\">\"<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"k\">${<\/span><span class=\"nv\">SEND_MONEY_FILE<\/span><span class=\"k\">}<\/span>\n        <span class=\"nb\">echo <\/span>curl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s2\">\"'Content-Type: application\/json'\"<\/span> <span class=\"nt\">-H<\/span><span class=\"s2\">\"'Authorization: Bearer \"\"<\/span><span class=\"k\">${<\/span><span class=\"nv\">token<\/span><span class=\"k\">}<\/span><span class=\"s2\">\"\"'\"<\/span> http:\/\/localhost:8080\/accounts <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s2\">\"'{ <\/span><span class=\"se\">\\\"<\/span><span class=\"s2\">saldo<\/span><span class=\"se\">\\\"<\/span><span class=\"s2\">: \"<\/span><span class=\"k\">$((<\/span><span class=\"m\">1<\/span> <span class=\"o\">+<\/span> RANDOM <span class=\"o\">%<\/span> <span class=\"m\">500<\/span><span class=\"k\">))<\/span><span class=\"s2\">\"}'\"<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"k\">${<\/span><span class=\"nv\">SEND_MONEY_FILE<\/span><span class=\"k\">}<\/span>\n        <span class=\"nb\">echo<\/span> <span class=\"s2\">\"echo  -e <\/span><span class=\"se\">\\\"\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m<\/span><span class=\"se\">\\\"<\/span><span class=\"s2\">\"<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"k\">${<\/span><span class=\"nv\">SEND_MONEY_FILE<\/span><span class=\"k\">}<\/span>\n\n        <span class=\"nb\">echo<\/span> <span class=\"s2\">\"# Asking money credit to: \"<\/span><span class=\"k\">${<\/span><span class=\"nv\">token_name<\/span><span class=\"k\">}<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"k\">${<\/span><span class=\"nv\">ASK_CREDIT_FILE<\/span><span class=\"k\">}<\/span>\n        <span class=\"nb\">echo<\/span> <span class=\"s2\">\"echo  -e <\/span><span class=\"se\">\\\"\\e<\/span><span class=\"s2\">[93mAsking credit from <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96m<\/span><span class=\"k\">${<\/span><span class=\"nv\">token_name<\/span><span class=\"k\">}<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m<\/span><span class=\"se\">\\\"<\/span><span class=\"s2\">\"<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"k\">${<\/span><span class=\"nv\">ASK_CREDIT_FILE<\/span><span class=\"k\">}<\/span>\n        <span class=\"nb\">echo <\/span>curl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s2\">\"'Content-Type: application\/json'\"<\/span> <span class=\"nt\">-H<\/span><span class=\"s2\">\"'Authorization: Bearer \"\"<\/span><span class=\"k\">${<\/span><span class=\"nv\">token<\/span><span class=\"k\">}<\/span><span class=\"s2\">\"\"'\"<\/span> http:\/\/localhost:8080\/credit <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s2\">\"'{ <\/span><span class=\"se\">\\\"<\/span><span class=\"s2\">saldo<\/span><span class=\"se\">\\\"<\/span><span class=\"s2\">: \"<\/span><span class=\"k\">$((<\/span><span class=\"m\">1<\/span> <span class=\"o\">+<\/span> RANDOM <span class=\"o\">%<\/span> <span class=\"m\">500<\/span><span class=\"k\">))<\/span><span class=\"s2\">\"}'\"<\/span><span class=\"o\">&gt;&gt;<\/span> <span class=\"k\">${<\/span><span class=\"nv\">ASK_CREDIT_FILE<\/span><span class=\"k\">}<\/span>\n        <span class=\"nb\">echo<\/span> <span class=\"s2\">\"echo  -e <\/span><span class=\"se\">\\\"\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m<\/span><span class=\"se\">\\\"<\/span><span class=\"s2\">\"<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"k\">${<\/span><span class=\"nv\">ASK_CREDIT_FILE<\/span><span class=\"k\">}<\/span>\n\n        <span class=\"nb\">echo<\/span> <span class=\"s2\">\"<\/span><span class=\"k\">${<\/span><span class=\"nv\">token_name<\/span><span class=\"k\">}<\/span><span class=\"s2\">,<\/span><span class=\"k\">${<\/span><span class=\"nv\">token<\/span><span class=\"k\">}<\/span><span class=\"s2\">\"<\/span> <span class=\"o\">&gt;&gt;<\/span> <span class=\"k\">${<\/span><span class=\"nv\">TOKEN_NAME_VALUE<\/span><span class=\"k\">}<\/span>\n      <span class=\"k\">fi\ndone<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>Enter fullscreen mode<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>Exit fullscreen mode<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>Environment generation<\/p>\n<p>Please follow the file as I explain what it does. This is important so that we understand exactly what it is doing. We first create private and public keys in a <code>PEM<\/code> format. We then use the private key with our runnable &#8220;your-finance-jwt-generator.jar&#8221; . This is our runnable jar which allows for the quick creation of tokens. The issuer cannot be changed later on. Finally, it creates a token. We will see how to read this token later on. This token contains 3 extra Header claims. These are &#8220;kid&#8221;, &#8220;typ&#8221;, and &#8220;alg&#8221;. It follows the following format:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight json\"><code><span class=\"p\">{<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"kid\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"jwt.key\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"typ\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"JWT\"<\/span><span class=\"p\">,<\/span><span class=\"w\">\n  <\/span><span class=\"nl\">\"alg\"<\/span><span class=\"p\">:<\/span><span class=\"w\"> <\/span><span class=\"s2\">\"RS256\"<\/span><span class=\"w\">\n<\/span><span class=\"p\">}<\/span><span class=\"w\">\n<\/span><\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>Enter fullscreen mode<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>Exit fullscreen mode<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>The header of the <code>JWT<\/code><\/p>\n<p>Let\u2019s look at these claims more closely:<\/p>\n<ul>\n<li>&#8220;kid&#8221; \u2014 Works as a hint claim. It indicates which sort of algorithm we are using.<\/li>\n<li>&#8220;typ&#8221; \u2014 It is used to declare <code>IANA<\/code> media types. There are three options <code>JWT<\/code>(JSON Web token), <code>JWE<\/code>(JSON Web Encryption), and <code>JWA<\/code>(JSON Web Algorithms). These types aren\u2019t relevant to our experiment. We will only see that our token isn\u2019t really well encrypted and that it\u2019s really easy to decrypt it. We will also see that although we can decrypt tokens, we cannot that easily tamper the to perform other actions.<\/li>\n<li>&#8220;alg&#8221; \u2014 This is how we define the signature type we want to use. Signing can be considered as a cryptographic operation that will ensure that the original token has not been changed and is trusted. In our case, we are using RS256 otherwise known as RSA Signature with SHA-256.<\/li>\n<\/ul>\n<p>With our public key, we can finally use it to change our template. The new config.yml file should look something like this:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight yaml\"><code><span class=\"na\">kumuluzee<\/span><span class=\"pi\">:<\/span>\n  <span class=\"na\">name<\/span><span class=\"pi\">:<\/span> <span class=\"s\">your-financeje-banking<\/span>\n  <span class=\"na\">version<\/span><span class=\"pi\">:<\/span> <span class=\"s\">1.0.0<\/span>\n  <span class=\"na\">jwt-auth<\/span><span class=\"pi\">:<\/span>\n    <span class=\"na\">public-key<\/span><span class=\"pi\">:<\/span> <span class=\"s\">FAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKE.FAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETO.FAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKEN<\/span>\n    <span class=\"na\">issuer<\/span><span class=\"pi\">:<\/span> <span class=\"s\">joaofilipesabinoesperancinha<\/span>\n<span class=\"na\">healthy<\/span><span class=\"pi\">:<\/span> <span class=\"kc\">true<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>Enter fullscreen mode<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>Exit fullscreen mode<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>config.yml<\/p>\n<p>The second step is to create four files. For every single plain token in the directory &#8220;<code>jwt-plain-tokens<\/code>&#8220;, we will create four commands. The first command is to create users that can effectively do things with their accounts. These are users with profiles &#8220;<code>admin<\/code>&#8220;, &#8220;<code>client<\/code>&#8220;, and &#8220;<code>credit<\/code>&#8220;.<br \/>Let\u2019s run the file &#8220;<code>createAccount.sh<\/code>&#8220;, in order to create them. The second command will create the rest of the users which don\u2019t possess any rights yet. This is the file &#8220;createUser.sh&#8221;. Let\u2019s run it. Now we\u2019ll see that all users are finally created. Let\u2019s now look into details about transactions and look at the remaining two commands. One to &#8220;cashin&#8221; and another to ask for more credit. The first generated file is the &#8220;sendMoney.sh&#8221; bash script. Here we can find all requests to &#8220;<code>cashin<\/code>&#8220;. In this file you\u2019ll find a curl request to send random money quantities to users, per user. Let\u2019s look at the admin case:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"c\">#!\/usr\/bin\/env bash<\/span>\n<span class=\"c\"># Send money to: admin<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mSending money to <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96madmin<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer= FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/accounts <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 125}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Send money to: cindy<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mSending money to <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mcindy<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/accounts <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 360}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Send money to: faustina<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mSending money to <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mfaustina<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/accounts <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 50}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Send money to: jack<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mSending money to <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mjack<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/accounts <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 205}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Send money to: jitska<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mSending money to <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mjitska<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/accounts <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 332}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Send money to: judy<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mSending money to <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mjudy<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/accounts <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 295}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Send money to: lucy<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mSending money to <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mlucy<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/accounts <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 160}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Send money to: malory<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mSending money to <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mmalory<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/accounts <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 413}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Send money to: mara<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mSending money to <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mmara<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/accounts <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 464}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Send money to: namita<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mSending money to <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mnamita<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/accounts <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 51}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Send money to: pietro<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mSending money to <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mpietro<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/accounts <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 491}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Send money to: rachelle<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mSending money to <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mrachelle<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/accounts <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 474}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Send money to: sandra<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mSending money to <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96msandra<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/accounts <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 417}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Send money to: shikka<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mSending money to <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mshikka<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/accounts <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 64}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>Enter fullscreen mode<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>Exit fullscreen mode<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>sendMoney.sh extract<\/p>\n<p>The same users have also their credit requests assigned to them:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code><span class=\"c\">#!\/usr\/bin\/env bash<\/span>\n<span class=\"c\"># Asking money credit to: admin<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mAsking credit from <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96madmin<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/credit <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 137}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Asking money credit to: cindy<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mAsking credit from <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mcindy<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/credit <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 117}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Asking money credit to: faustina<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mAsking credit from <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mfaustina<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/credit <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 217}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Asking money credit to: jack<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mAsking credit from <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mjack<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/credit <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 291}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Asking money credit to: jitska<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mAsking credit from <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mjitska<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/credit <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 184}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Asking money credit to: judy<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mAsking credit from <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mjudy<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/credit <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 388}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Asking money credit to: lucy<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mAsking credit from <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mlucy<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/credit <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 219}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Asking money credit to: malory<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mAsking credit from <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mmalory<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/credit <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 66}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Asking money credit to: mara<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mAsking credit from <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mmara<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/credit <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 441}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Asking money credit to: namita<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mAsking credit from <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mnamita<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/credit <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 358}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Asking money credit to: pietro<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mAsking credit from <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mpietro<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/credit <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 432}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Asking money credit to: rachelle<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mAsking credit from <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mrachelle<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/credit <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 485}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Asking money credit to: sandra<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mAsking credit from <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96msandra<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/credit <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 500}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<span class=\"c\"># Asking money credit to: shikka<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93mAsking credit from <\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[96mshikka<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\ncurl <span class=\"nt\">-i<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Content-Type: application\/json'<\/span> <span class=\"nt\">-H<\/span><span class=\"s1\">'Authorization: Bearer FAKE.FAKE.FAKE'<\/span> http:\/\/localhost:8080\/credit <span class=\"nt\">-X<\/span> PUT <span class=\"nt\">-d<\/span> <span class=\"s1\">'{ \"saldo\": 89}'<\/span>\n<span class=\"nb\">echo<\/span>  <span class=\"nt\">-e<\/span> <span class=\"s2\">\"<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[93m<\/span><span class=\"se\">\\n<\/span><span class=\"s2\">---<\/span><span class=\"se\">\\e<\/span><span class=\"s2\">[0m\"<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>Enter fullscreen mode<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>Exit fullscreen mode<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>askCredit.sh extract<\/p>\n<p>All our <code>characters<\/code> are part of the League of <code>Nature<\/code>. Essentially just some group of people to be part of this banking system. In this context, they are defending the environment. It\u2019s not really relevant for the article what this group of people does or where in the story they fit in, but for context, they participate in actions to defend the environment and slow down the effects of <b>climate change<\/b>. Some of our <code>characters<\/code> can do everything, others cannot do anything and others can only &#8220;cashin&#8221; or just &#8220;ask for credit&#8221;. Also notice that I am obfuscating sensitive information. These tokens normally should not be shared or be visible in on particular URL. They are yes always available via the browser developer console but anyway is to <code>protect<\/code> some requests being made. This is a concept known as &#8220;security-per-obscurity&#8221; <code>and<\/code> although it does not technically prevent the user to become aware of the token being used, it does work as a deterrent.<br \/>In both methods, when we make a deposit or when we ask for credit, notice that for each request, we are sending a random number between 1 to 500.<br \/>We are now almost ready to start our application, but first, let\u2019s take a dive into a bit more theory.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"10_How_is_a_JWT_token_made\"><\/span>\n<p>  10. How is a <code>JWT<\/code> token made<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkr99rx33ncjmwcautfhw.jpg\" alt=\"blogcenter\" loading=\"lazy\" width=\"771\" height=\"353\" title=\"\"><\/p>\n<p>Now that we have generated our tokens, let\u2019s look into one of them. I am going to show you an obfuscated token, and we are going to use that to understand this.<br \/>Here is our token:<br \/><code>FAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKE<\/code>.<code>FAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETO<\/code>.<code>FAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKENFAKETOKEN<\/code><br \/>What\u2019s important here to notice is that our token is divided into three parts:<\/p>\n<ul>\n<li>\n<b>Header<\/b> \u2014 This is a Base64 encoded JSON configuration header, just as we discussed above.<\/li>\n<li>\n<b>Payload<\/b> \u2014 This is a Base64 encoded JSON payload. This is where we defined our Reserved and Custom claims. We can also define here Private and Public claims. Both of them fall under Custom claims. As a quick note, we can do what we want with both of these claims. However public claims are referred to as the ones defined in the IANA JSON Web Token Registry. It is important that we name our tokens in a certain way in order to avoid collisions with the registry. Public claims can also be defined as standard optional. Private claims follow no standard and it\u2019s up to us to define them.<\/li>\n<li>\n<b>Signature<\/b> \u2014 This is where we can be a bit creative. The signature is a cyphered combination of the <code>Header<\/code> and the <code>Payload<\/code>. We decide the algorithm we want to use and this bit of the token will basically determine if the message we are sending is to be trusted. It is unique to that combination and our server will use the &#8220;public-key&#8221; we created to determine if we have a match. If you remember from the above we are using <code>RS256<\/code> in our example.<\/li>\n<\/ul>\n<p>Before we continue, please note that both the <code>Header<\/code> and the <code>Payload<\/code> can be <code>decyphered<\/code> in our example. We just &#8220;can\u2019t&#8221; tamper with the payload or the header and still make it trusted. The protection against the potential effects of a malicious token can only be protected by the algorithm we choose. So choose wisely.<br \/>If you are working in an organization where top secret information is a concern, such as a bank, please DON\u2019T do what we are about to do. This is only a way for us to check online the content of the tokens we\u2019ve generated locally.<br \/>First, let\u2019s go to https:\/\/jwt.io\/ and fill out our <code>JWT<\/code> token. Use the token you\u2019ve just generated:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffjhwv3vl75qol6i5nf5s.jpg\" alt=\"blogcenter\" loading=\"lazy\" width=\"800\" height=\"930\" title=\"\"><\/p>\n<p>Using https:\/\/jwt.io\/ to check the contents of our token<br \/>Let\u2019s examine what we have here. This is our administrator token. That person is &#8220;Admin&#8221; in our example. We can see that our parameters are all available. In our list we see &#8220;sub&#8221;, &#8220;aud&#8221;, &#8220;upn&#8221;, &#8220;access&#8221;, &#8220;user_id&#8221;, &#8220;iss&#8221;, &#8220;name&#8221;, &#8220;groups&#8221; and finally the &#8220;jti&#8221;. We also have some extra claims. Let\u2019s look at them:<\/p>\n<p>&#8220;<b>auth_time<\/b>&#8221; \u2014 This is when the authentication has happened. Our token as been authenticated on Sunday, 17 July 2022 16:15:47 GMT+02:00 DST<br \/>&#8220;<b>iat<\/b>&#8221; \u2014 This is when the token has been created. In our case, this happens simultaneously as the auth_time.<br \/>&#8220;<b>exp<\/b>&#8221; \u2014 This is the expiry date of the token. It expires on Sunday, 17 July 2022 16:32:27 GMT+02:00 DST. We didn\u2019t specify any expiry date in our token. This means that <code>JWT<\/code> uses its default value of ~15 minutes.<\/p>\n<p>Let\u2019s now perform some tests.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"11_Running_the_application\"><\/span>\n<p>  11. Running the application<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>The code is ready to be used on GitHub. If we check the code out and open it with Intellij we need to be aware that we can\u2019t run this application like a Spring Boot application. There is no &#8220;psvm&#8221; to make it run. Instead, we can just run the generated jar directly and make sure that we make an &#8220;mvn build&#8221; just before. Here is how I am using it at the moment:<\/p>\n[<img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwip3mndxyqxuzy7snbzj.jpg\" alt=\"blogcenter\" loading=\"lazy\" width=\"800\" height=\"500\" title=\"\">]https:\/\/github.com\/jesperancinha\/your-finance-je &#8220;\u062a\u0646\u0638\u06cc\u0645 \u0645\u062d\u06cc\u0637 \u0628\u0631\u0627\u06cc \u0627\u062c\u0631\u0627\u06cc \u0628\u0631\u0646\u0627\u0645\u0647&#8221;)<\/p>\n<p>\u062d\u0627\u0644\u0627 \u0628\u06cc\u0627\u06cc\u06cc\u062f &#8220;<code>setupCertificates.sh<\/code>&#8220;\u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a. \u0646\u0645\u06cc\u200c\u062f\u0627\u0646\u0645 \u0686\u0642\u062f\u0631 \u0632\u0645\u0627\u0646 \u0635\u0631\u0641 \u06a9\u0631\u062f\u0647\u200c\u0627\u06cc\u062f \u062a\u0627 \u0628\u0647 \u0627\u06cc\u0646\u062c\u0627 \u0628\u0631\u0633\u06cc\u062f\u060c \u0627\u0645\u0627 \u0628\u0647 \u0627\u062d\u062a\u0645\u0627\u0644 \u0628\u0633\u06cc\u0627\u0631 \u0632\u06cc\u0627\u062f \u0627\u06cc\u0646 15 \u062f\u0642\u06cc\u0642\u0647 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u062a\u0645\u0627\u0645 \u0634\u062f\u0647 \u0627\u0633\u062a. \u062f\u0631 \u0647\u0631 \u0635\u0648\u0631\u062a\u060c \u0641\u0642\u0637 \u0622\u0646\u0647\u0627 \u0631\u0627 \u062f\u0648\u0628\u0627\u0631\u0647 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f.<br \/>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u0628\u0631\u0646\u0627\u0645\u0647 \u062e\u0648\u062f \u0631\u0627 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645!<br \/>\u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u0627\u06cc\u0646\u06af\u0648\u0646\u0647 \u0634\u0631\u0648\u0639 \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>mvn clean <span class=\"nb\">install\n<\/span>java <span class=\"nt\">-jar<\/span> your-financeje-banking\/target\/your-financeje-banking.jar\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06cc\u0627 \u0641\u0642\u0637 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u06cc\u0645 \u0622\u0646 \u0631\u0627 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u067e\u06cc\u06a9\u0631\u0628\u0646\u062f\u06cc \u0622\u0645\u0627\u062f\u0647 \u0627\u062c\u0631\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u0645. \u0627\u06af\u0631 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u062f \u0647\u0645\u0647 \u0686\u06cc\u0632 \u0631\u0627 \u0628\u062f\u0627\u0646\u06cc\u062f\u060c \u0645\u062e\u0632\u0646 \u0648 Makefile \u0631\u0627 \u0627\u0632 \u0642\u0628\u0644 \u0628\u0631\u0631\u0633\u06cc \u06a9\u0646\u06cc\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>make dcup-full-action\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a 2 \u0633\u0631\u0648\u06cc\u0633 \u0631\u0627 \u0627\u062c\u0631\u0627 \u062e\u0648\u0627\u0647\u062f \u06a9\u0631\u062f. \u06cc\u06a9\u06cc \u0631\u0648\u06cc \u067e\u0648\u0631\u062a <code>8080<\/code> \u0648 \u062f\u06cc\u06af\u0631\u06cc \u062f\u0631 \u0628\u0646\u062f\u0631 <code>8081<\/code>. \u0631\u0648\u06cc \u067e\u0648\u0631\u062a <code>8080<\/code> \u0645\u0627 \u0646\u0633\u062e\u0647\u200c\u0627\u06cc \u0627\u0632 \u0627\u06cc\u0646 \u0646\u0631\u0645\u200c\u0627\u0641\u0632\u0627\u0631 \u0631\u0627 \u0627\u062c\u0631\u0627 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u06a9\u0647 \u06a9\u062f\u0647\u0627\u06cc \u062e\u0648\u062f\u0645\u0627\u0646 \u0631\u0627 \u062a\u0648\u0644\u06cc\u062f \u0645\u06cc\u200c\u06a9\u0646\u062f <code>JWT<\/code> \u062a\u0648\u06a9\u0646 \u0647\u0627 \u062f\u0631 \u067e\u0648\u0631\u062a 8081\u060c \u0646\u0633\u062e\u0647 \u0627\u06cc \u0631\u0627 \u0628\u0627 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 <code>jwtknizr<\/code> \u0698\u0646\u0631\u0627\u062a\u0648\u0631 \u0627\u06cc\u062c\u0627\u062f \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 <code>Adam Bien<\/code>. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0645\u0627 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0631\u0627 \u0628\u0631 \u0631\u0648\u06cc \u0633\u0631\u0648\u06cc\u0633\u06cc \u06a9\u0647 \u062f\u0631 \u067e\u0648\u0631\u062a \u0627\u062c\u0631\u0627 \u0645\u06cc \u0634\u0648\u062f \u0645\u062a\u0645\u0631\u06a9\u0632 \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f <code>8080<\/code>. \u062f\u0631 \u0635\u0648\u0631\u062a \u062a\u0645\u0627\u06cc\u0644 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u0628\u062f\u0648\u06cc\u062f <code>cypress<\/code> \u0628\u0627:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>make cypress-open\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 \u062e\u0648\u0627\u0647\u062f \u0634\u062f <code>open<\/code> \u0631\u0627 <code>cypress<\/code> \u06a9\u0646\u0633\u0648\u0644\u060c \u0648 \u0634\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u062f \u062a\u0633\u062a \u0647\u0627 \u0631\u0627 \u0628\u0627 \u0645\u0631\u0648\u0631\u06af\u0631 \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u062e\u0648\u062f \u0627\u062c\u0631\u0627 \u06a9\u0646\u06cc\u062f. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u06af\u0632\u06cc\u0646\u0647 \u0647\u0627\u06cc \u0645\u0631\u0648\u0631\u06af\u0631 \u0647\u0646\u0648\u0632 \u062f\u0631 \u0627\u06cc\u0646 \u0645\u0631\u062d\u0644\u0647 \u0645\u062d\u062f\u0648\u062f \u0647\u0633\u062a\u0646\u062f. \u0627\u06a9\u062b\u0631 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627 \u062f\u0631 \u0648\u0627\u0642\u0639 \u062f\u0631\u062e\u0648\u0627\u0633\u062a \u0647\u0627\u06cc \u062e\u0637 \u0641\u0631\u0645\u0627\u0646 \u0627\u0631\u0627\u0626\u0647 \u0634\u062f\u0647 \u062a\u0648\u0633\u0637 \u062e\u0648\u0627\u0647\u0646\u062f \u0628\u0648\u062f <code>cypress<\/code>.<br \/>\u0641\u0639\u0644\u0627 \u0648\u0627\u0631\u062f \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0646\u0634\u0648\u06cc\u0645<code>cypress<\/code>\u0644\u0637\u0641\u0627\u064b \u0628\u0647 \u0645\u0631\u0648\u0631\u06af\u0631 \u062e\u0648\u062f \u0628\u0631\u0648\u06cc\u062f \u0648 \u0628\u0647 \u0627\u06cc\u0646 \u0645\u06a9\u0627\u0646 \u0628\u0631\u0648\u06cc\u062f:<\/p>\n<p>http:\/\/localhost:8080\/accounts\/all<\/p>\n<p>\u0628\u0627\u06cc\u062f \u0646\u062a\u06cc\u062c\u0647 \u0627\u06cc \u0645\u062b\u0644 \u0627\u06cc\u0646 \u0628\u06af\u06cc\u0631\u06cc\u0645:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/media2.dev.to\/dynamic\/image\/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto\/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Finjf5vqpy5x4tty0wtdm.jpg\" alt=\"\u0645\u0631\u06a9\u0632 \u0648\u0628\u0644\u0627\u06af\" loading=\"lazy\" width=\"800\" height=\"3004\" title=\"\"><\/p>\n<p>\u0647\u0645\u0627\u0646\u0637\u0648\u0631 \u06a9\u0647 \u0645\u06cc \u0628\u06cc\u0646\u06cc\u0645\u060c &#8220;<code>Malory<\/code>&#8220;\u060c&#8221;<code>Jack Fallout<\/code>&#8220;\u060c \u0648&#8221;<code>Jitska<\/code>&#8220;\u0647\u06cc\u0686 \u0627\u0639\u062a\u0628\u0627\u0631 \u06cc\u0627 \u067e\u0648\u0644\u06cc \u0646\u062f\u0627\u0631\u06cc\u062f. \u0627\u06cc\u0646 \u0628\u0647 \u0627\u06cc\u0646 \u062f\u0644\u06cc\u0644 \u0627\u0633\u062a \u06a9\u0647 \u0641\u0642\u0637 \u06af\u0631\u0648\u0647 \u06a9\u0627\u0631\u0628\u0631\u06cc \u0628\u0647 \u0622\u0646\u0647\u0627 \u062f\u0627\u062f\u0647 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0628\u0647 \u0627\u06cc\u0646 \u0646\u06a9\u062a\u0647 \u0646\u06cc\u0632 \u062a\u0648\u062c\u0647 \u06a9\u0646\u06cc\u062f <code>Shikka<\/code> \u0627\u0639\u062a\u0628\u0627\u0631\u06cc \u062f\u0627\u062f\u0647 \u0646\u0634\u062f\u0647 \u0627\u0633\u062a &#8220;<code>Shikka<\/code>&#8220;\u060c \u062a\u0646\u0647\u0627 \u0645\u0634\u062a\u0631\u06cc \u0645\u0627 \u0627\u0633\u062a \u06a9\u0647 \u0627\u0639\u062a\u0628\u0627\u0631 \u06af\u0631\u0648\u0647 \u0631\u0627 \u0646\u062f\u0627\u0631\u062f.<br \/>\u0627\u06af\u0631 \u0628\u0647 \u06af\u0632\u0627\u0631\u0634 \u0647\u0627 \u0646\u06af\u0627\u0647 \u06a9\u0646\u06cc\u0645\u060c \u0645\u06cc \u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u0648\u0641\u0642\u06cc\u062a \u0622\u0645\u06cc\u0632 \u0627\u06cc\u0646 \u0641\u0631\u0645\u062a \u0631\u0627 \u062f\u0627\u0631\u0646\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>Sending money to admin\nHTTP\/1.1 200 OK\nDate: Sun, 17 Jul 2022 15:01:13 GMT\nX-Powered-By: KumuluzEE\/4.1.0\nContent-Type: application\/json\nContent-Length: 32\nServer: Jetty<span class=\"o\">(<\/span>10.0.9<span class=\"o\">)<\/span>\n<span class=\"o\">{<\/span><span class=\"s2\">\"balance\"<\/span>:212,<span class=\"s2\">\"client\"<\/span>:<span class=\"s2\">\"Admin\"<\/span><span class=\"o\">}<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>200 \u0628\u0647 \u0645\u0627 \u0627\u0637\u0644\u0627\u0639 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0639\u0645\u0644\u06cc\u0627\u062a \u0628\u0627 \u0645\u0648\u0641\u0642\u06cc\u062a \u0627\u0646\u062c\u0627\u0645 \u0634\u062f.<br \/>\u062f\u0631 \u0645\u0648\u0631\u062f \u00ab\u0645\u0627\u0644\u0648\u0631\u06cc\u00bb\u060c \u00ab\u062c\u06a9 \u0641\u0627\u0644\u200c\u0622\u0648\u062a\u00bb \u0648 \u00ab\u062c\u06cc\u062a\u0633\u06a9\u0627\u00bb\u060c \u0647\u0631 \u062f\u0648 \u0639\u0645\u0644\u06cc\u0627\u062a \u0634\u06a9\u0633\u062a \u0645\u06cc\u200c\u062e\u0648\u0631\u0646\u062f \u0648 \u067e\u0633 \u0627\u0632 \u0622\u0646\u060c \u0627\u06cc\u0646 \u0646\u0648\u0639 \u067e\u06cc\u0627\u0645 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u062e\u0648\u0627\u0647\u06cc\u0645 \u06a9\u0631\u062f:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>Sending money to jitska\nHTTP\/1.1 403 Forbidden\nX-Powered-By: KumuluzEE\/4.1.0\nContent-Length: 0\nServer: Jetty<span class=\"o\">(<\/span>10.0.9<span class=\"o\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u06cc\u06a9 403 \u0628\u0647 \u0645\u0627 \u0627\u0637\u0644\u0627\u0639 \u0645\u06cc \u062f\u0647\u062f \u06a9\u0647 \u0645\u0627 <code>JWT<\/code> \u0631\u0645\u0632 \u062a\u0623\u06cc\u06cc\u062f \u0634\u062f\u0647 \u0627\u0633\u062a \u0648 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0627\u0633\u062a. \u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u06a9\u0627\u0631\u0628\u0631 \u0627\u0632 \u0627\u0646\u062c\u0627\u0645 \u0622\u0646 \u0639\u0645\u0644\u06cc\u0627\u062a \u0645\u0646\u0639 \u0634\u062f\u0647 \u0627\u0633\u062a. \u0628\u0647 \u0639\u0628\u0627\u0631\u062a \u062f\u06cc\u06af\u0631\u060c \u0622\u0646\u0647\u0627 \u0628\u0647 \u0631\u0648\u0634 \u062a\u0639\u06cc\u06cc\u0646 \u0634\u062f\u0647 \u062f\u0633\u062a\u0631\u0633\u06cc \u0646\u062f\u0627\u0631\u0646\u062f.<\/p>\n<p>\u0628\u06cc\u0627\u06cc\u06cc\u062f \u06a9\u0645\u06cc \u062a\u0648\u06a9\u0646 \u0647\u0627\u06cc\u0645\u0627\u0646 \u0631\u0627 \u062f\u0633\u062a\u06a9\u0627\u0631\u06cc \u06a9\u0646\u06cc\u0645. \u0627\u06af\u0631 \u0628\u0631\u062e\u06cc \u0627\u0632 \u062a\u0648\u06a9\u0646 \u0647\u0627\u06cc \u0641\u0627\u06cc\u0644 sendMoney.sh \u0631\u0627 \u062a\u063a\u06cc\u06cc\u0631 \u062f\u0647\u06cc\u0645. \u0645\u0627 \u0628\u0627\u06cc\u062f \u0627\u06cc\u0646 \u0631\u0627 \u062f\u0631\u06cc\u0627\u0641\u062a \u06a9\u0646\u06cc\u0645:<\/p>\n<div class=\"highlight js-code-highlight\">\n<pre class=\"highlight shell\"><code>Sending money to admin\nHTTP\/1.1 401 Unauthorized\nX-Powered-By: KumuluzEE\/4.1.0\nWWW-Authenticate: Bearer <span class=\"nv\">realm<\/span><span class=\"o\">=<\/span><span class=\"s2\">\"MP-JWT\"<\/span>\nContent-Length: 0\nServer: Jetty<span class=\"o\">(<\/span>10.0.9<span class=\"o\">)<\/span>\n<\/code><\/pre>\n<div class=\"highlight__panel js-actions-panel\">\n<div class=\"highlight__panel-action js-fullscreen-code-action\">\n    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-on\"><title>\u0648\u0627\u0631\u062f \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M16 3h6v6h-2V5h-4V3zM2 3h6v2H4v4H2V3zm18 16v-4h2v6h-6v-2h4zM4 19h4v2H2v-6h2v4z\"\/>\n<\/svg><\/p>\n<p>    <svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"20px\" height=\"20px\" viewbox=\"0 0 24 24\" class=\"highlight-action crayons-icon highlight-action--fullscreen-off\"><title>\u0627\u0632 \u062d\u0627\u0644\u062a \u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647 \u062e\u0627\u0631\u062c \u0634\u0648\u06cc\u062f<\/title>\n    <path d=\"M18 7h4v2h-6V3h2v4zM8 9H2V7h4V3h2v6zm10 8v4h-2v-6h6v2h-4zM8 15v6H6v-4H2v-2h6z\"\/>\n<\/svg><\/p>\n<\/div>\n<\/div>\n<\/div>\n<p>\u0627\u06cc\u0646 <code>401<\/code> \u0628\u0647 \u0627\u06cc\u0646 \u0645\u0639\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062a\u0648\u06a9\u0646 \u0645\u0627 \u0627\u0639\u062a\u0628\u0627\u0631 \u0633\u0646\u062c\u06cc \u0646\u0634\u062f\u0647 \u0627\u0633\u062a. \u0627\u06cc\u0646 \u0628\u062f\u0627\u0646 \u0645\u0639\u0646\u0627\u0633\u062a \u06a9\u0647 \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u06a9\u0647 \u0633\u0631\u0648\u0631 \u0628\u0631\u0627\u06cc \u0628\u0631\u0631\u0633\u06cc \u0627\u06cc\u0646\u06a9\u0647 \u0622\u06cc\u0627 \u062a\u0648\u06a9\u0646 \u0645\u0627 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0627\u0633\u062a \u06cc\u0627 \u062e\u06cc\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc\u200c\u06a9\u0646\u062f\u060c \u0645\u0637\u0627\u0628\u0642\u062a \u067e\u06cc\u062f\u0627 \u0646\u06a9\u0631\u062f\u0647 \u0627\u0633\u062a. \u0627\u06af\u0631 \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u0646\u062a\u0648\u0627\u0646\u062f \u0627\u0645\u0636\u0627\u06cc \u062a\u0648\u06a9\u0646 JWT \u0631\u0627 \u0627\u0631\u0632\u06cc\u0627\u0628\u06cc \u0648 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u062f\u060c \u0622\u0646 \u0631\u0627 \u0631\u062f \u0645\u06cc \u06a9\u0646\u062f.<\/p>\n<p>\u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u062e\u0644\u0627\u0635\u0647\u060c \u0633\u0631\u0628\u0631\u06af \u0648 &#8220;Payload&#8221; \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0646\u0634\u062f\u0647 \u0627\u0646\u062f. \u0622\u0646\u0647\u0627 \u0641\u0642\u0637 \u067e\u0627\u06cc\u0647 64 &#8220;\u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647&#8221; \u0647\u0633\u062a\u0646\u062f. \u0627\u06cc\u0646 \u0628\u062f\u0627\u0646 \u0645\u0639\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 &#8220;\u0631\u0645\u0632\u06af\u0634\u0627\u06cc\u06cc&#8221; \u0628\u0647 \u0645\u0627 \u0627\u0645\u06a9\u0627\u0646 \u0645\u06cc \u062f\u0647\u062f \u0647\u0645\u06cc\u0634\u0647 \u0646\u06af\u0627\u0647\u06cc \u0628\u0647 \u0645\u062d\u0645\u0648\u0644\u0647 \u0648\u0627\u0642\u0639\u06cc \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u06cc\u0645. \u0627\u06af\u0631 \u0628\u0647 \u062f\u0646\u0628\u0627\u0644 \u0645\u062d\u0627\u0641\u0638\u062a \u0627\u0632 \u0645\u062d\u0645\u0648\u0644\u0647 \u062e\u0648\u062f \u062f\u0631 \u0628\u0631\u0627\u0628\u0631 \u0627\u0633\u062a\u0631\u0627\u0642 \u0633\u0645\u0639 \u0647\u0633\u062a\u06cc\u0645\u060c \u0646\u0628\u0627\u06cc\u062f \u0627\u0632 &#8220;Payload&#8221; \u062a\u0648\u06a9\u0646 \u0628\u0631\u0627\u06cc \u0686\u06cc\u0632 \u062f\u06cc\u06af\u0631\u06cc \u0628\u0647 \u062c\u0632 \u0627\u0646\u062a\u062e\u0627\u0628 \u067e\u0627\u0631\u0627\u0645\u062a\u0631\u0647\u0627\u06cc \u0634\u0646\u0627\u0633\u0627\u06cc\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u0645. \u0645\u0634\u06a9\u0644 \u0648\u0627\u0642\u0639\u0627\u064b \u0632\u0645\u0627\u0646\u06cc \u0627\u0633\u062a \u06a9\u0647 \u06a9\u0633\u06cc \u062f\u0633\u062a\u0634 \u0631\u0627 \u0645\u06cc \u06af\u06cc\u0631\u062f <code>JWT<\/code> \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062b\u0627\u0644\u060c \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u062a\u0648\u0646\u0644 TLS \u062f\u0631 \u0645\u0639\u0631\u0636 \u062e\u0637\u0631 \u0642\u0631\u0627\u0631 \u06af\u0631\u0641\u062a\u0647 \u0628\u0627\u0634\u062f \u0648 \u06a9\u0633\u06cc \u0628\u062a\u0648\u0627\u0646\u062f \u0645\u062d\u062a\u0648\u0627\u06cc \u067e\u06cc\u0627\u0645 \u0647\u0627\u06cc \u0645\u0628\u0627\u062f\u0644\u0647 \u0634\u062f\u0647 \u0631\u0627 \u0628\u062e\u0648\u0627\u0646\u062f. \u0648\u0642\u062a\u06cc \u0627\u06cc\u0646 \u0627\u062a\u0641\u0627\u0642 \u0628\u06cc\u0641\u062a\u062f\u060c \u0628\u0627\u0632 \u0647\u0645 \u062d\u0641\u0627\u0638\u062a \u062f\u06cc\u06af\u0631\u06cc \u0648\u062c\u0648\u062f \u062f\u0627\u0631\u062f. \u0648 \u0627\u06cc\u0646 \u0627\u0645\u0636\u0627 \u0627\u0633\u062a. \u062a\u0646\u0647\u0627 \u0633\u0631\u0648\u0631\u06cc \u06a9\u0647 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u062f \u06cc\u06a9 \u067e\u06cc\u0627\u0645 \u0631\u0627 \u062a\u0623\u06cc\u06cc\u062f \u06a9\u0646\u062f\u060c \u0633\u0631\u0648\u0631\u06cc \u0627\u0633\u062a \u06a9\u0647 \u062d\u0627\u0648\u06cc \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc \u0627\u0633\u062a. \u0627\u06cc\u0646 \u06a9\u0644\u06cc\u062f \u0639\u0645\u0648\u0645\u06cc\u060c \u0627\u06af\u0631\u0686\u0647 \u0639\u0645\u0648\u0645\u06cc \u0627\u0633\u062a\u060c \u0627\u0645\u0627 \u0641\u0642\u0637 \u0628\u0627 \u0627\u062c\u0631\u0627 \u06a9\u0631\u062f\u0646 \u062f\u0631 \u0645\u0642\u0627\u0628\u0644 \u0627\u0645\u0636\u0627 \u0648 &#8220;Header + Payload&#8221; \u0627\u062c\u0627\u0632\u0647 \u0627\u0639\u062a\u0628\u0627\u0631\u0633\u0646\u062c\u06cc \u067e\u06cc\u0627\u0645 \u062f\u0631\u06cc\u0627\u0641\u062a\u06cc \u0631\u0627 \u0645\u06cc \u062f\u0647\u062f.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"12_%D9%86%D8%AA%DB%8C%D8%AC%D9%87_%DA%AF%DB%8C%D8%B1%DB%8C\"><\/span>\n<p>  12. \u0646\u062a\u06cc\u062c\u0647 \u06af\u06cc\u0631\u06cc<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>\u0645\u0627 \u0628\u0647 \u067e\u0627\u06cc\u0627\u0646 \u062c\u0644\u0633\u0647 \u062e\u0648\u062f \u0631\u0633\u06cc\u062f\u0647 \u0627\u06cc\u0645. \u0627\u0632 \u0627\u06cc\u0646\u06a9\u0647 \u0627\u06cc\u0646 \u0631\u0627 \u062f\u0646\u0628\u0627\u0644 \u06a9\u0631\u062f\u06cc\u062f \u0645\u062a\u0634\u06a9\u0631\u0645<br \/>\u0645\u0627 \u0645\u06cc \u062a\u0648\u0627\u0646\u06cc\u0645 \u0628\u0628\u06cc\u0646\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 <code>JWT<\/code> \u062a\u0648\u06a9\u0646 \u0647\u0627 \u062c\u0645\u0639 \u0648 \u062c\u0648\u0631 \u0647\u0633\u062a\u0646\u062f \u0648 \u0628\u0633\u06cc\u0627\u0631 \u06a9\u0645\u062a\u0631 \u0627\u0632 \u0647\u0645\u062a\u0627\u06cc XML \u062e\u0648\u062f\u060c \u06cc\u0639\u0646\u06cc <code>SAML<\/code> \u062a\u0648\u06a9\u0646 \u0647\u0627 \u0645\u0627 \u062f\u06cc\u062f\u0647\u200c\u0627\u06cc\u0645 \u06a9\u0647 \u0627\u06cc\u062c\u0627\u062f \u0648 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0627\u0632 \u062a\u0648\u06a9\u0646\u200c\u0647\u0627 \u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0645\u062c\u0648\u0632\u0647\u0627\u06cc \u062e\u0627\u0635 \u0645\u0648\u0631\u062f \u0646\u06cc\u0627\u0632 \u0628\u0631\u0627\u06cc \u0631\u0648\u0634\u200c\u0647\u0627\u06cc \u062e\u0627\u0635 \u0686\u0642\u062f\u0631 \u0622\u0633\u0627\u0646 \u0627\u0633\u062a \u0648 \u0686\u06af\u0648\u0646\u0647 \u0627\u0632 \u0637\u0631\u06cc\u0642 \u06cc\u06a9 \u062a\u0648\u06a9\u0646 \u0627\u0645\u0636\u0627 \u0634\u062f\u0647 \u0628\u0647 \u0622\u0646\u062c\u0627 \u0645\u06cc\u200c\u0631\u0633\u06cc\u0645.<br \/>\u0628\u0627 \u0627\u06cc\u0646 \u062d\u0627\u0644\u060c \u0628\u0631\u0627\u06cc \u0645\u0646 \u0628\u0633\u06cc\u0627\u0631 \u0645\u0647\u0645 \u0627\u0633\u062a \u06a9\u0647 \u0627\u06cc\u062f\u0647 \u0627\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0686\u06af\u0648\u0646\u06af\u06cc \u0622\u0646 \u062f\u0627\u0634\u062a\u0647 \u0628\u0627\u0634\u0645 <code>JWT<\/code> \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u062f. \u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u0628\u0627 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0628\u0647 \u0634\u0645\u0627 \u0645\u0639\u0631\u0641\u06cc \u062e\u0648\u0628\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0646\u062d\u0648\u0647 \u0627\u0646\u062c\u0627\u0645 \u0622\u0646 \u062f\u0627\u062f\u0647 \u0628\u0627\u0634\u0645 <code>JWT<\/code> \u062a\u0648\u06a9\u0646 \u0647\u0627 \u06a9\u0627\u0631 \u0645\u06cc \u06a9\u0646\u0646\u062f<br \/>\u0628\u0631\u0627\u06cc \u062f\u0631\u06cc\u0627\u0641\u062a \u0627\u06cc\u062f\u0647 \u0628\u0647\u062a\u0631 \u0627\u0632 \u0646\u062d\u0648\u0647 \u0639\u0645\u0644\u06a9\u0631\u062f \u0647\u0645\u0647 \u0627\u06cc\u0646\u0647\u0627\u060c \u0628\u0647 \u0634\u0645\u0627 \u062a\u0648\u0635\u06cc\u0647 \u0645\u06cc \u06a9\u0646\u0645 \u0628\u0627 \u0645\u0648\u0627\u0631\u062f \u0627\u062c\u0631\u0627 \u0634\u062f\u0647 \u0628\u0627\u0632\u06cc \u06a9\u0646\u06cc\u062f <code>cypress<\/code> \u062a\u0633\u062a \u0647\u0627 \u0627\u06cc\u0646 \u06cc\u06a9 \u0631\u0627\u0647 \u0639\u0627\u0644\u06cc \u0628\u0631\u0627\u06cc \u062f\u06cc\u062f\u0646 \u0627\u06cc\u0646\u06a9\u0647 \u062f\u0631\u062e\u0648\u0627\u0633\u062a\u200c\u0647\u0627 \u0686\u06af\u0648\u0646\u0647 \u0627\u0646\u062c\u0627\u0645 \u0645\u06cc\u200c\u0634\u0648\u0646\u062f \u0648 \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0631\u0627 \u0622\u0632\u0645\u0627\u06cc\u0634 \u0645\u06cc\u200c\u06a9\u0646\u06cc\u0645 \u0648 \u0686\u0647 \u0686\u06cc\u0632\u06cc \u0627\u0646\u062a\u0638\u0627\u0631 \u0645\u06cc\u200c\u0631\u0648\u062f \u0627\u0633\u062a. \u0633\u067e\u0633 \u0634\u0645\u0627 \u0647\u0645\u0686\u0646\u06cc\u0646 \u0627\u06cc\u062f\u0647 \u0628\u0647\u062a\u0631\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0627\u06cc\u0646\u06a9\u0647 \u0686\u0631\u0627 \u0628\u0631\u062e\u06cc \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0639\u0645\u0644\u06cc\u0627\u062a \u062e\u0627\u0635\u06cc \u0631\u0627 \u0627\u0646\u062c\u0627\u0645 \u062f\u0647\u0646\u062f \u0648 \u0628\u0631\u062e\u06cc \u062f\u06cc\u06af\u0631 \u0627\u0646\u062c\u0627\u0645 \u0646\u0645\u06cc\u200c\u062f\u0647\u0646\u062f\u060c \u062f\u0631\u06cc\u0627\u0641\u062a \u062e\u0648\u0627\u0647\u06cc\u062f \u06a9\u0631\u062f.<br \/>\u0645\u0646 \u062a\u0645\u0627\u0645 \u06a9\u062f \u0645\u0646\u0628\u0639 \u0627\u06cc\u0646 \u0628\u0631\u0646\u0627\u0645\u0647 \u0631\u0627 \u062f\u0631 GitHub \u0642\u0631\u0627\u0631 \u062f\u0627\u062f\u0647 \u0627\u0645<br \/>\u0627\u0645\u06cc\u062f\u0648\u0627\u0631\u0645 \u0627\u0632 \u0627\u06cc\u0646 \u0645\u0642\u0627\u0644\u0647 \u0628\u0647 \u0647\u0645\u0627\u0646 \u0627\u0646\u062f\u0627\u0632\u0647 \u06a9\u0647 \u0645\u0646 \u0627\u0632 \u0646\u0648\u0634\u062a\u0646 \u0622\u0646 \u0644\u0630\u062a \u0628\u0631\u062f\u0645 \u0644\u0630\u062a \u0628\u0631\u062f\u0647 \u0628\u0627\u0634\u06cc\u062f.<br \/>\u0628\u0627 \u062a\u0634\u06a9\u0631 \u0627\u0632 \u0634\u0645\u0627 \u0628\u0631\u0627\u06cc \u062e\u0648\u0627\u0646\u062f\u0646!<\/p>\n<h2><span class=\"ez-toc-section\" id=\"13_%D9%85%D8%B1%D8%A7%D8%AC%D8%B9\"><\/span>\n<p>  13. \u0645\u0631\u0627\u062c\u0639<br \/>\n<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=Mq3V3P0wdGE\" rel=\"nofollow noopener\" target=\"_blank\">https:\/\/www.youtube.com\/watch?v=Mq3V3P0wdGE<\/a><br \/>\n<\/iframe>\n<\/p>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=lELDF1t-sJ8\" rel=\"nofollow noopener\" target=\"_blank\">https:\/\/www.youtube.com\/watch?v=lELDF1t-sJ8<\/a><br \/>\n<\/iframe>\n<\/p>\n<p><a href=\"https:\/\/www.youtube.com\/watch?v=z3Y4NQgjGLE\" rel=\"nofollow noopener\" target=\"_blank\">https:\/\/www.youtube.com\/watch?v=z3Y4NQgjGLE<\/a><br \/>\n<\/iframe>\n<\/p>\n<\/p><\/div>\n","protected":false},"excerpt":{"rendered":"<p>1. \u0645\u0642\u062f\u0645\u0647 \u0627\u0645\u0631\u0648\u0632\u0647 \u0646\u06af\u0631\u0627\u0646\u06cc\u200c\u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631\u06cc \u062f\u0631 \u0645\u0648\u0631\u062f \u0639\u0645\u0644\u06a9\u0631\u062f \u062f\u0627\u0631\u06cc\u0645 \u0648 \u062f\u0631 \u0639\u06cc\u0646 \u062d\u0627\u0644 \u0645\u06cc\u200c\u062e\u0648\u0627\u0647\u06cc\u0645 \u0628\u062f\u0627\u0646\u06cc\u0645 \u06a9\u0647 \u0686\u06af\u0648\u0646\u0647 \u0633\u06cc\u0633\u062a\u0645\u200c\u0647\u0627 \u0645\u06cc\u200c\u062a\u0648\u0627\u0646\u0646\u062f \u0633\u0631\u06cc\u0639 \u0648 \u0642\u0627\u0628\u0644 \u0627\u0639\u062a\u0645\u0627\u062f \u0627\u0631\u062a\u0628\u0627\u0637 \u0628\u0631\u0642\u0631\u0627\u0631 \u06a9\u0646\u0646\u062f. \u062e\u06cc\u0644\u06cc \u0648\u0642\u062a \u0647\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u0645 \u0627\u0637\u0644\u0627\u0639\u0627\u062a\u06cc \u0631\u0627 \u0627\u0631\u0633\u0627\u0644 \u06a9\u0646\u06cc\u0645 \u0648 \u062a\u0627 \u062d\u062f \u0627\u0645\u06a9\u0627\u0646 \u0645\u062d\u0631\u0645\u0627\u0646\u0647 \u0648 \u0627\u06cc\u0645\u0646 \u0646\u06af\u0647 \u062f\u0627\u0631\u06cc\u0645. \u06af\u0627\u0647\u06cc \u0627\u0648\u0642\u0627\u062a \u062f\u0627\u062f\u0647\u200c\u0647\u0627\u06cc \u062d\u0633\u0627\u0633 \u0628\u0627\u06cc\u062f \u0627\u0632 \u0637\u0631\u06cc\u0642 \u0648\u0628 \u0628\u0647 \u0635\u0648\u0631\u062a \u0639\u0645\u0648\u0645\u06cc &hellip;<\/p>\n","protected":false},"author":2,"featured_media":90095,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"fifu_image_url":"","fifu_image_alt":"","footnotes":""},"categories":[339],"tags":[],"class_list":["post-90090","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev"],"_links":{"self":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/90090","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/comments?post=90090"}],"version-history":[{"count":0,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/posts\/90090\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media\/90095"}],"wp:attachment":[{"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/media?parent=90090"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/categories?post=90090"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nabfollower.com\/blog\/wp-json\/wp\/v2\/tags?post=90090"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}