{"id":235,"date":"2018-02-14T23:26:32","date_gmt":"2018-02-14T22:26:32","guid":{"rendered":"https:\/\/brozanski.net\/?p=235"},"modified":"2018-02-14T23:26:32","modified_gmt":"2018-02-14T22:26:32","slug":"autoryzacja-i-uwierzytelnianie-w-prostym-projekcie","status":"publish","type":"post","link":"https:\/\/brozanski.net\/index.php\/2018\/02\/14\/autoryzacja-i-uwierzytelnianie-w-prostym-projekcie\/","title":{"rendered":"Autoryzacja i uwierzytelnianie w prostym projekcie"},"content":{"rendered":"<p>Razem z koleg\u0105 zaczynamy bardzo ma\u0142y projekt. Jak wst\u0119pnie ustalili\u015bmy sk\u0142ada\u0107 si\u0119 on b\u0119dzie z dw\u00f3ch podstawowych element\u00f3w: us\u0142ugi serwuj\u0105cej dane i aplikacji mobilnej. Do tego pewnie potrzebny b\u0119dzie jaki\u015b panel administratora i to pewnie b\u0119dzie prosta strona WWW. Projekt jest dla mnie nowy przede wszystkim ze wzgl\u0119du na to, \u017ce chcemy go napisa\u0107 w Javie. Kiedy\u015b pisa\u0142em w tym j\u0119zyku proste aplikacje desktopowe, niestety nigdy nie mia\u0142em do czynienia z aplikacjami w modelu klient-serwer w tej technologii. Na szcz\u0119\u015bcie model systemu przerobi\u0142em ju\u017c wielokrotnie w technologii .NET, wi\u0119c pozostaje tylko dobra\u0107 odpowiednie narz\u0119dzia do poszczeg\u00f3lnych element\u00f3w i powinno by\u0107 ok. W ko\u0144cu Java a\u017c tak bardzo nie r\u00f3\u017cni si\u0119 od C# \ud83d\ude09<\/p>\n<p>Podczas analizy uznali\u015bmy, \u017ce chcemy do\u015b\u0107 du\u017cy nacisk po\u0142o\u017cy\u0107 na bezpiecze\u0144stwo dost\u0119pu do danych i ta dzia\u0142ka trafi\u0142a si\u0119 mi z racji tego, \u017ce obecnie siedz\u0119 w temacie autoryzacji i uwierzytelniania zawodowo. Jako, \u017ce cz\u0119\u015b\u0107 serwerowa napisana b\u0119dzie z wykorzystaniem frameworka Spring, to powy\u017csze kwestie naturalnie mo\u017cna rozwi\u0105za\u0107 dodatkiem do niego &#8211; Spring Security. Aktualnie jestem na etapie jego rozpoznawania i zapewne powstanie kilka wpis\u00f3w jak zacz\u0105\u0107 z nim prac\u0119. Wst\u0119pnie napisz\u0119 tylko, \u017ce umo\u017cliwia on implementacj\u0119 wielu r\u00f3\u017cnych system\u00f3w uwierzytelniania i autoryzacji, pocz\u0105wszy od zwyk\u0142ego modelu u\u017cytkownik\/has\u0142o, przez uwierzytelnianie certyfikatami, LDAP, a na wsparciu dla protoko\u0142u OAuth2 i standardu OpenIDCOnnect. <\/p>\n<p>I teraz mam troch\u0119 dylemat, kt\u00f3ry mam nadziej\u0119, wkr\u00f3tce rozwi\u0105za\u0107. Jaki system uwierzytelniania wykorzysta\u0107? Czy i\u015b\u0107 w kierunku prostoty, kt\u00f3ra jednak nie jest do ko\u0144ca a\u017c tak bezpieczna, czy mo\u017ce skierowa\u0107 kroki w bardziej zaawansowane systemy oparte o protok\u00f3\u0142 OAuth2 i OpenIDConnect i tokeny. W decyzji nale\u017cy wzi\u0105\u0107 pod uwag\u0119, \u017ce system ma by\u0107 prosty i pisany b\u0119dzie po godzinach. Trzeba znale\u017a\u0107 z\u0142oty \u015brodek pomi\u0119dzy bezpiecze\u0144stwem, pracoch\u0142onno\u015bci\u0105 i \u0142atwo\u015bci\u0105 obs\u0142ugi. Dylemat ka\u017cdego architekta oprogramowania.<\/p>\n<p>W kolejnych wpisach poza opisem samego frameworka Spring Security postaram si\u0119 opisa\u0107 proces decyzyjny, kt\u00f3ry b\u0119dzie prowadzi\u0142 do konkretnych rozwi\u0105za\u0144. Stay focused!!!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Razem z koleg\u0105 zaczynamy bardzo ma\u0142y projekt. Jak wst\u0119pnie ustalili\u015bmy sk\u0142ada\u0107 si\u0119 on b\u0119dzie z dw\u00f3ch podstawowych element\u00f3w: us\u0142ugi serwuj\u0105cej dane i aplikacji mobilnej. Do tego pewnie potrzebny b\u0119dzie jaki\u015b panel administratora i to pewnie b\u0119dzie prosta strona WWW. Projekt jest dla mnie nowy przede wszystkim ze wzgl\u0119du na to, \u017ce chcemy go napisa\u0107 w\u2026 <span class=\"read-more\"><a href=\"https:\/\/brozanski.net\/index.php\/2018\/02\/14\/autoryzacja-i-uwierzytelnianie-w-prostym-projekcie\/\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[26],"class_list":["post-235","post","type-post","status-publish","format-standard","hentry","category-security","tag-miroburn_challenge"],"_links":{"self":[{"href":"https:\/\/brozanski.net\/index.php\/wp-json\/wp\/v2\/posts\/235","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/brozanski.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/brozanski.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/brozanski.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/brozanski.net\/index.php\/wp-json\/wp\/v2\/comments?post=235"}],"version-history":[{"count":2,"href":"https:\/\/brozanski.net\/index.php\/wp-json\/wp\/v2\/posts\/235\/revisions"}],"predecessor-version":[{"id":237,"href":"https:\/\/brozanski.net\/index.php\/wp-json\/wp\/v2\/posts\/235\/revisions\/237"}],"wp:attachment":[{"href":"https:\/\/brozanski.net\/index.php\/wp-json\/wp\/v2\/media?parent=235"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/brozanski.net\/index.php\/wp-json\/wp\/v2\/categories?post=235"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/brozanski.net\/index.php\/wp-json\/wp\/v2\/tags?post=235"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}