{"id":71307,"date":"2020-02-24T22:18:55","date_gmt":"2020-02-24T19:18:55","guid":{"rendered":"https:\/\/prohoster.info\/blog\/identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt"},"modified":"2020-03-03T16:14:27","modified_gmt":"2020-03-03T13:14:27","slug":"identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt","title":{"rendered":"IdentityServer4. Konceptet kryesore. OpenID Connect, OAuth 2.0 dhe JWT","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Me k\u00ebt\u00eb post d\u00ebshiroj t\u00eb hap nj\u00eb seri artikujsh consacratuar IdentityServer4. T\u00eb fillojm\u00eb nga konceptet kryesore.<\/p>\n<p><\/p>\n<p>Protokolli m\u00eb premtues n\u00eb k\u00ebt\u00eb moment p\u00ebr autentifikim \u00ebsht\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/openid.net\/connect\/\">OpenID Connect<\/a><\/noindex>, dhe protokolli p\u00ebr autorizim (dh\u00ebnie aksesit) \u00ebsht\u00eb <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/OAuth#OAuth_2.0\">OAuth 2.0<\/a><\/noindex>. <noindex><a rel=\"nofollow\" href=\"https:\/\/identityserver4.readthedocs.io\/en\/latest\/\">IdentityServer4<\/a><\/noindex> implementon k\u00ebto dy protokolle. Ai \u00ebsht\u00eb optimizuar p\u00ebr t\u00eb zgjidhur <strong>problemet tipike<\/strong> t\u00eb siguris\u00eb.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<blockquote><p><noindex><a rel=\"nofollow\" href=\"https:\/\/openid.net\/connect\/\">OpenID Connect<\/a><\/noindex> \u2014 ky \u00ebsht\u00eb nj\u00eb protokoll dhe standard autentifikimi, ai nuk jep akses n\u00eb burime (Web API), por pasi \u00ebsht\u00eb zhvilluar mbi protokollin e autorizimit <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/OAuth#OAuth_2.0\">OAuth 2.0<\/a><\/noindex>, ai lejon marrjen e parametrave t\u00eb profilit t\u00eb p\u00ebrdoruesit si\u00e7 do t\u00eb kishit marr\u00eb akses n\u00eb burimin <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.identityserver.io\/en\/latest\/endpoints\/userinfo.html\">UserInfo<\/a><\/noindex>.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/JSON_Web_Token\">JWT<\/a><\/noindex> (JSON Web Token) paraqet nj\u00eb standard web-i q\u00eb p\u00ebrcakton m\u00ebnyr\u00ebn e transferimit t\u00eb t\u00eb dh\u00ebnave mbi p\u00ebrdoruesin n\u00eb formatin JSON n\u00eb nj\u00eb form\u00eb t\u00eb enkriptuar.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc6749\">OAuth 2.0 (RFC 6749)<\/a><\/noindex> \u2014 ky \u00ebsht\u00eb nj\u00eb protokoll dhe standard autorizimi. Ai lejon aplikacioneve t\u00eb ken\u00eb akses n\u00eb burime t\u00eb mbrojtura, si p.sh. Web API.<\/p><\/blockquote>\n<p>Le t\u00eb shohim diagramin e k\u00ebrkes\u00ebs p\u00ebr burime t\u00eb mbrojtura dhe t\u00eb zb\u00ebrthejm\u00eb hapat kryesor\u00eb dhe terminologjin\u00eb e pranuar:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"IdentityServer4. Konceptet kryesore. OpenID Connect, OAuth 2.0 dhe JWT\" src=\"\/wp-content\/uploads\/2020\/02\/0515b7bc9a4598c557189f8e5ff2c3f5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<ol>\n<li>\n<p>Klienti k\u00ebrkon nga p\u00ebrdoruesi leje p\u00ebr t\u00eb kaluar autorizimin n\u00eb emrin e tij. <strong>Klienti<\/strong> \u2014 \u00ebsht\u00eb nj\u00eb aplikacion klienti q\u00eb qasje n\u00eb burimet e mbrojtura n\u00eb em\u00ebr t\u00eb pronarit t\u00eb burimeve. <strong>Burimi<\/strong> \u2014 jan\u00eb t\u00eb gjitha sh\u00ebrbimet tona t\u00eb mbrojtura <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.microsoft.com\/ru-ru\/aspnet\/core\/tutorials\/first-web-api?view=aspnetcore-3.1&amp;tabs=visual-studio\">Web API<\/a><\/noindex>.<\/p>\n<p>\n<\/li>\n<li>\n<p>P\u00ebrdoruesi lejon aplikacionin klient t\u00eb autorizohet n\u00eb emrin e tij, p\u00ebr shembull, duke futur emrin e p\u00ebrdoruesit dhe fjal\u00ebkalimin. Emri i p\u00ebrdoruesit dhe fjal\u00ebkalimi do t\u00eb sh\u00ebrbejn\u00eb si grant autorizimi p\u00ebr aplikacionin klient. <strong>P\u00ebrdoruesi (pronari i burimit)<\/strong> \u2014 \u00ebsht\u00eb nj\u00eb program ose person q\u00eb mund t\u00eb jap\u00eb qasje n\u00eb burime t\u00eb mbrojtura, p\u00ebr shembull, duke futur emrin e p\u00ebrdoruesit (username) dhe fjal\u00ebkalimin (password);<\/p>\n<p>\n<\/li>\n<li>\n<p>Aplikacioni klient k\u00ebrkon nj\u00eb token qasje nga <code>IdentityServer4<\/code> duke ofruar informacion mbi veten (<code>client_id<\/code>, <code>client_secret<\/code>), duke ofruar lejen p\u00ebr autorizim nga p\u00ebrdoruesi (<code>username<\/code>, <code>password<\/code>) dhe duke ofruar <code>grant_type<\/code> dhe <code>scope<\/code>. Pastaj, serveri i autorizimit verifikon autencitetin e klientit dhe t\u00eb dh\u00ebnat e pronarit t\u00eb burimit (emri i p\u00ebrdoruesit dhe fjal\u00ebkalimi). <\/p>\n<p><\/p>\n<blockquote><p>Protokolli OAuth 2.0 kryen autentikimin jo vet\u00ebm t\u00eb p\u00ebrdoruesit, por edhe t\u00eb aplikacionit klient q\u00eb po akseson burimet. P\u00ebr k\u00ebt\u00eb, protokolli parashikon parametra t\u00eb till\u00eb si <strong>client_id<\/strong> dhe <strong>client_secret<\/strong>.<br \/>\n<strong>client_id<\/strong> \u2014 \u00ebsht\u00eb identifikuesi i aplikacionit klient q\u00eb p\u00ebrdoret <code>IdentityServer4<\/code> p\u00ebr t\u00eb k\u00ebrkuar informacionin mbi klientin.<br \/>\n<strong>client_secret<\/strong> \u00ebsht\u00eb nj\u00eb analog i fjal\u00ebkalimit p\u00ebr aplikacionin klient dhe p\u00ebrdoret p\u00ebr autentifikimin e aplikacionit klient n\u00eb <code>IdentityServer4<\/code>. <strong>Sekreti i klientit duhet t\u00eb jet\u00eb i njohur vet\u00ebm p\u00ebr aplikacionin dhe API-n\u00eb<\/strong>. Duke u bazuar n\u00eb t\u00eb dh\u00ebnat e m\u00ebsip\u00ebrme, arrihet n\u00eb p\u00ebrfundimin se <strong>IdentityServer4 duhet t\u00eb dij\u00eb p\u00ebr klient\u00ebt e tij<\/strong>.<\/p><\/blockquote>\n<p>\n<\/li>\n<li>\n<p>N\u00ebse autenticiteti i aplikacionit konfirmohet dhe leja p\u00ebr autorizim \u00ebsht\u00eb e vlefshme, <code>IdentiryServer4<\/code> krijon <code>token-in e aksesit<\/code> (token akses) p\u00ebr aplikacionin dhe nj\u00eb \u00e7el\u00ebs opsional rinovimi (<code>token rinovimi<\/code>). Procesi i autorizimit \u00ebsht\u00eb p\u00ebrfunduar. N\u00ebse k\u00ebrkesa \u00ebsht\u00eb e pavlefshme ose e paautorizuar, serveri i autorizimit kthen nj\u00eb kod me mesazhin p\u00ebrkat\u00ebs t\u00eb gabimit.<\/p>\n<p>\n<\/li>\n<li>\n<p>Aplikacioni klient i drejtohet API-s\u00eb s\u00eb sigurt Web p\u00ebr t\u00eb marr\u00eb t\u00eb dh\u00ebna, duke ofruar token-in e aksesit p\u00ebr autorizim. N\u00ebse kodi i p\u00ebrgjigjes nga serveri i burimeve <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D1%8F_HTTP#401\">401<\/a><\/noindex>, <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%A1%D0%BF%D0%B8%D1%81%D0%BE%D0%BA_%D0%BA%D0%BE%D0%B4%D0%BE%D0%B2_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D1%8F_HTTP#403\">403<\/a><\/noindex> ose <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_HTTP_status_codes\">498<\/a><\/noindex>, at\u00ebher\u00eb token-i i aksesit i p\u00ebrdorur p\u00ebr autentifikim \u00ebsht\u00eb i pavlefsh\u00ebm ose i skaduar.<\/p>\n<p>\n<\/li>\n<li>\n<p>N\u00ebse token-i \u00ebsht\u00eb i vlefsh\u00ebm, <code>Web API<\/code> ofron t\u00eb dh\u00ebnat p\u00ebr aplikacionin.<\/p>\n<p>\n<\/li>\n<\/ol>\n<p><\/p>\n<h4 id=\"_tipy-tokenov_\"><em>Llojet e tokeneve<\/em><\/h4>\n<p><\/p>\n<p>T\u00eb regjistruarve n\u00eb <code>IdentityServer4<\/code> klient\u00ebt u lejohet t\u00eb k\u00ebrkojn\u00eb <code>IdentityServer4<\/code> <code>token-in e identitetit<\/code>-token, <code>access<\/code>-token dhe <code>rinovim<\/code>-token.<\/p>\n<p><\/p>\n<ul>\n<li><strong>token-i i identitetit (token identifikimi)<\/strong> \u2014 rezultati i procesit t\u00eb autentikimit. P\u00ebrmban identifikuesin e p\u00ebrdoruesit dhe informacion mbi m\u00ebnyr\u00ebn dhe kur p\u00ebrdoruesi kalon autentikimin. Mund t\u00eb zgjerohet me t\u00eb dh\u00ebna t\u00eb tjera.<\/li>\n<li><strong>tokeni i aksesit (tokeni i acesso)<\/strong> \u2014 transmetohet n\u00eb API t\u00eb mbrojtur dhe p\u00ebrdoret prej tij p\u00ebr autorizimin (lejonin qasje) n\u00eb t\u00eb dh\u00ebnat e tij.<\/li>\n<li><strong>tokeni i rifreskimit (tokeni i rifreskimit)<\/strong> \u2014 nj\u00eb paramet\u00ebr joobligator q\u00eb serveri i autorizimit mund ta kthej\u00eb si p\u00ebrgjigje ndaj k\u00ebrkes\u00ebs p\u00ebr tokenin e aksesit.<\/li>\n<\/ul>\n<p><\/p>\n<p>Le t\u00eb futim gjithashtu dy koncepte t\u00eb tjera:<\/p>\n<p><\/p>\n<p><strong>URL e Serverit t\u00eb Autentikimit<\/strong> \u2014 pika p\u00ebrfundimtare p\u00ebr marrjen e \u00e7el\u00ebsit t\u00eb aksesit. T\u00eb gjitha k\u00ebrkesat p\u00ebr ofrimin dhe rinovimin e \u00e7el\u00ebsave t\u00eb aksesit do t\u00eb drejtohen n\u00eb k\u00ebt\u00eb URL.<\/p>\n<p><\/p>\n<p><strong>URL e Burimit<\/strong> \u2014 URL e burimit t\u00eb mbrojtur, n\u00eb t\u00eb cilin duhet t\u00eb adresohemi p\u00ebr t\u00eb fituar qasje, duke i kaluar \u00e7el\u00ebsin e aksesit n\u00eb titullin e autorizimit.<\/p>\n<p><\/p>\n<h4 id=\"_zapros-klyucha-dostupa_\"><em>K\u00ebrkesa p\u00ebr \u00e7el\u00ebsin e aksesit<\/em><\/h4>\n<p><\/p>\n<p>P\u00ebr t\u00eb k\u00ebrkuar \u00e7el\u00ebsin e aksesit, klienti b\u00ebn <code>POST<\/code> k\u00ebrkes\u00eb n\u00eb pik\u00ebn p\u00ebrfundimtare <code>IdentityServer4<\/code> me titullin e m\u00ebposht\u00ebm<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">'Content-Type': 'application\/x-www-form-urlencoded',\n'Accept': 'application\/json',\n'Expect': '100-continue'<\/code><\/pre>\n<p><\/p>\n<p>dhe kalon parametrat e m\u00ebposht\u00ebm:<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">'grant_type' : 'password',\n'username' : login,\n'password' : password,\n'scope' : 'scope',\n'client_id' : 'client_id',\n'client_secret' : '{client_secret}'<\/code><\/pre>\n<p><\/p>\n<p><code>username<\/code>, <code>password<\/code>, <code>client_id<\/code> dhe <code>client_secret<\/code> u diskutuan m\u00eb par\u00eb. Le t\u00eb shqyrtojm\u00eb parametrat e tjer\u00eb:<\/p>\n<p><\/p>\n<p><strong>grant_type<\/strong> \u2014 lloji i grantit ose lloji i lejes p\u00ebr autorizim. Lloji i lejes p\u00ebr autorizim varet nga metoda e k\u00ebrkes\u00ebs p\u00ebr autorizim t\u00eb p\u00ebrdorur nga aplikacioni, si dhe nga llojet e lejes q\u00eb mb\u00ebshteten nga API. N\u00eb rastin ton\u00eb, ai do t\u00eb ket\u00eb vler\u00ebn <code>password<\/code>, e cila sipas specifikimeve <code>OAuth 2.0<\/code> p\u00ebrkon me grantin e akreditiveve t\u00eb pronarit t\u00eb burimit (autorizimi me emrin e p\u00ebrdoruesit dhe fjal\u00ebkalimin).<\/p>\n<p><\/p>\n<p>Protokolli <code>OAuth 2.0<\/code> p\u00ebrcakton llojet e m\u00ebposhtme t\u00eb grant\u00ebve q\u00eb k\u00ebrkojn\u00eb <strong>nd\u00ebrveprim t\u00eb detyruesh\u00ebm me p\u00ebrdoruesit<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li><strong>kode autorizimi (authorization code)<\/strong>. Ai \u00ebsht\u00eb nj\u00eb nga llojet m\u00eb t\u00eb p\u00ebrhapura t\u00eb lejes p\u00ebr autorizim, pasi \u00ebsht\u00eb perfekt p\u00ebr aplikacionet server-side, ku kodi burimor i aplikacionit dhe sekreti i klientit nuk jan\u00eb t\u00eb aksesuesh\u00ebm p\u00ebr t\u00eb tjer\u00ebt;<\/li>\n<li><strong>t\u00eb fsheht\u00eb (implicit)<\/strong>. Lloji i fsheht\u00eb i lejes p\u00ebr autorizim p\u00ebrdoret nga aplikacionet mobile dhe web, ku konfidencialiteti i sekretit t\u00eb klientit nuk mund t\u00eb garantizohet;<\/li>\n<\/ul>\n<p><\/p>\n<p>Dhe llojet e grant\u00ebve q\u00eb <strong>mund t\u00eb ekzekutohen pa nd\u00ebrveprimin interaktiv me p\u00ebrdoruesit<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li><strong>akredite t\u00eb pronarit t\u00eb burimit (resource owner)<\/strong>. Ky ky\u00e7 \u00ebsht\u00eb t\u00eb p\u00ebrdoret vet\u00ebm kur aplikacioni klient beson tek p\u00ebrdoruesi dhe p\u00ebrdoruesi \u00ebsht\u00eb i qet\u00eb n\u00eb lidhje me futjen e emrit t\u00eb p\u00ebrdoruesit dhe fjal\u00ebkalimit t\u00eb tij. Ky lloj i qasjes duhet t\u00eb p\u00ebrdoret vet\u00ebm n\u00eb rastet kur opsionet e tjera nuk jan\u00eb t\u00eb disponueshme. Ky lloj i qasjes \u00ebsht\u00eb i p\u00ebrshtatsh\u00ebm p\u00ebr klient\u00ebt korporativ\u00eb q\u00eb, brenda sistemit t\u00eb tyre, tashm\u00eb e kan\u00eb p\u00ebrdorur informacionin e identitetit t\u00eb p\u00ebrdoruesit dhe duan t\u00eb kalojn\u00eb n\u00eb <code>OAuth 2.0<\/code>.<\/li>\n<li><strong>informacionin e klientit<\/strong>. P\u00ebrdoren kur aplikacioni qaset n\u00eb API. Kjo mund t\u00eb jet\u00eb e dobishme, p\u00ebr shembull, kur aplikacioni d\u00ebshiron t\u00eb azhurnoj\u00eb informacionin e tij t\u00eb regjistrimit n\u00eb sh\u00ebrbim ose URI e ridrejtimeve, ose p\u00ebr t\u00eb arritur n\u00eb informacion tjet\u00ebr q\u00eb ruhet n\u00eb llogarin\u00eb e aplikacionit n\u00eb sh\u00ebrbim, p\u00ebrmes API t\u00eb sh\u00ebrbimit.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>scope<\/strong> \u2014 \u00ebsht\u00eb nj\u00eb paramet\u00ebr i opsional. Ai p\u00ebrcakton fush\u00ebn e shikimit. Tokeni i aksesit, i kthyer nga serveri, do t'i ofroj\u00eb qasje vet\u00ebm sh\u00ebrbimeve q\u00eb p\u00ebrfshihen n\u00eb k\u00ebt\u00eb fush\u00eb. Pra, ne mund t\u00eb bashkojm\u00eb disa sh\u00ebrbime n\u00ebn nj\u00eb scope dhe n\u00ebse klienti merr \u00e7el\u00ebsin e aksesit p\u00ebr k\u00ebt\u00eb scope, ai merr qasje n\u00eb t\u00eb gjitha k\u00ebto sh\u00ebrbime. Gjithashtu, scope mund t\u00eb p\u00ebrdoret p\u00ebr t\u00eb kufizuar t\u00eb drejtat e autorizimit (p\u00ebr shembull, qasje p\u00ebr lexim ose shkruarje)<\/p>\n<p>Burimi: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/489354\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u042d\u0442\u0438\u043c \u043f\u043e\u0441\u0442\u043e\u043c \u044f \u0445\u043e\u0447\u0443 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u0435\u0442\u043a\u0443 \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u0443\u044e IdentityServer4. \u041d\u0430\u0447\u043d\u0435\u043c \u043c\u044b \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u043e\u043d\u044f\u0442\u0438\u0439. \u0421\u0430\u043c\u044b\u043c \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f OpenID Connect, \u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 (\u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f OAuth 2.0. IdentityServer4 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u044d\u0442\u0438 \u0434\u0432\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430. \u041e\u043d \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. OpenID Connect \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u043e\u043d \u043d\u0435 \u0434\u0430\u0435\u0442 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":71308,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-71307","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u042d\u0442\u0438\u043c \u043f\u043e\u0441\u0442\u043e\u043c \u044f \u0445\u043e\u0447\u0443 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u0435\u0442\u043a\u0443 \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u0443\u044e IdentityServer4. \u041d\u0430\u0447\u043d\u0435\u043c \u043c\u044b \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u043e\u043d\u044f\u0442\u0438\u0439. \u0421\u0430\u043c\u044b\u043c \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f OpenID Connect, \u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 (\u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f OAuth 2.0. IdentityServer4 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u044d\u0442\u0438 \u0434\u0432\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430. \u041e\u043d \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. OpenID Connect \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u043e\u043d \u043d\u0435 \u0434\u0430\u0435\u0442\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"sq_AL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47IdentityServer4. \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f. OpenID Connect, OAuth 2.0 \u0438 JWT | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u042d\u0442\u0438\u043c \u043f\u043e\u0441\u0442\u043e\u043c \u044f \u0445\u043e\u0447\u0443 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u0435\u0442\u043a\u0443 \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u0443\u044e IdentityServer4. \u041d\u0430\u0447\u043d\u0435\u043c \u043c\u044b \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u043e\u043d\u044f\u0442\u0438\u0439. \u0421\u0430\u043c\u044b\u043c \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f OpenID Connect, \u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 (\u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f OAuth 2.0. IdentityServer4 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u044d\u0442\u0438 \u0434\u0432\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430. \u041e\u043d \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. OpenID Connect \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u043e\u043d \u043d\u0435 \u0434\u0430\u0435\u0442\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-24T19:18:55+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-03-03T13:14:27+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47IdentityServer4. Konceptet baz\u00eb. OpenID Connect, OAuth 2.0 dhe JWT | ProHoster","description":"Me k\u00ebt\u00eb postim d\u00ebshiroj t\u00eb hap nj\u00eb seri artikujsh p\u00ebrkushtuar IdentityServer4. T\u00eb fillojm\u00eb me konceptet baz\u00eb. Protokolli m\u00eb i perspektiv\u00eb n\u00eb k\u00ebt\u00eb moment p\u00ebr autentifikimin \u00ebsht\u00eb OpenID Connect, nd\u00ebrsa protokolli i autorizimit (ofrimi i qasjes) \u00ebsht\u00eb OAuth 2.0. IdentityServer4 implementon k\u00ebto dy protokolle. Ai \u00ebsht\u00eb optimizuar p\u00ebr t\u00eb zgjidhur problemet tipike t\u00eb siguris\u00eb. OpenID Connect \u00ebsht\u00eb nj\u00eb protokoll dhe standard i autentifikimit, ai nuk ofron","canonical_url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sq_AL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47IdentityServer4. \u041e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u043f\u043e\u043d\u044f\u0442\u0438\u044f. OpenID Connect, OAuth 2.0 \u0438 JWT | ProHoster","og:description":"\u042d\u0442\u0438\u043c \u043f\u043e\u0441\u0442\u043e\u043c \u044f \u0445\u043e\u0447\u0443 \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u0435\u0442\u043a\u0443 \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u043e\u0441\u0432\u044f\u0449\u0435\u043d\u043d\u0443\u044e IdentityServer4. \u041d\u0430\u0447\u043d\u0435\u043c \u043c\u044b \u0441 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u043f\u043e\u043d\u044f\u0442\u0438\u0439. \u0421\u0430\u043c\u044b\u043c \u043f\u0435\u0440\u0441\u043f\u0435\u043a\u0442\u0438\u0432\u043d\u044b\u043c \u043d\u0430 \u0442\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u043e\u043c\u0435\u043d\u0442 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f OpenID Connect, \u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u043e\u043c \u0430\u0432\u0442\u043e\u0440\u0438\u0437\u0430\u0446\u0438\u0438 (\u043f\u0440\u0435\u0434\u043e\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u0434\u043e\u0441\u0442\u0443\u043f\u0430) \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f OAuth 2.0. IdentityServer4 \u0440\u0435\u0430\u043b\u0438\u0437\u0443\u0435\u0442 \u044d\u0442\u0438 \u0434\u0432\u0430 \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b\u0430. \u041e\u043d \u043e\u043f\u0442\u0438\u043c\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u043d \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0442\u0438\u043f\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u043e\u0441\u0442\u0438. OpenID Connect \u2014 \u044d\u0442\u043e \u043f\u0440\u043e\u0442\u043e\u043a\u043e\u043b \u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442 \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438, \u043e\u043d \u043d\u0435 \u0434\u0430\u0435\u0442","og:url":"https:\/\/prohoster.info\/sq\/blog\/administrirovanie\/identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-24T19:18:55+00:00","article:modified_time":"2020-03-03T13:14:27+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"71307","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:04:25","updated":"2022-09-27 22:46:39"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/71307","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/comments?post=71307"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/posts\/71307\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media\/71308"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/media?parent=71307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/categories?post=71307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sq\/wp-json\/wp\/v2\/tags?post=71307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}