{"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\/et\/blog\/administrirovanie\/identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt","title":{"rendered":"IdentityServer4. Peamised m\u00f5isted. OpenID Connect, OAuth 2.0 ja JWT","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Selle postitusega soovin alustada artiklite seeriat, mis on p\u00fchendatud IdentityServer4-le. Alustame peamistest m\u00f5istetest.<\/p>\n<p><\/p>\n<p>Praegu on k\u00f5ige perspektiivikam autentimisprotokoll <noindex><a rel=\"nofollow\" href=\"https:\/\/openid.net\/connect\/\">OpenID Connect<\/a><\/noindex>, autoriseerimise (juurdep\u00e4\u00e4su andmise) protokoll on <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> , mis toetab neid kaht protokolli. See on optimeeritud t\u00fc\u00fcpiliste probleemide lahendamiseks <strong>turvalisuse.<\/strong> \u2014 see on autentimisprotokoll ja standard, mis ei anna juurdep\u00e4\u00e4su ressurssidele (Web API), kuid kuna see on v\u00e4lja t\u00f6\u00f6tatud autoriseerimisprotokolli pinnal<\/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> , v\u00f5imaldab see saada kasutaja profiili parameetreid, justkui oleksite saanud juurdep\u00e4\u00e4su ressursile <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/OAuth#OAuth_2.0\">OAuth 2.0<\/a><\/noindex>UserInfo <noindex><a rel=\"nofollow\" href=\"http:\/\/docs.identityserver.io\/en\/latest\/endpoints\/userinfo.html\">(JSON Web Token) on veebistandard, mis m\u00e4\u00e4ratleb viisi kasutajaandmete edastamiseks JSON-formaadis kr\u00fcpteeritud kujul.<\/a><\/noindex>.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/JSON_Web_Token\">JWT<\/a><\/noindex> OAuth 2.0 (RFC 6749)<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc6749\">\u2014 see on autoriseerimisprotokoll ja standard. See v\u00f5imaldab rakendustel p\u00e4\u00e4seda juurde kaitstud ressurssidele, n\u00e4iteks Web API-le.<\/a><\/noindex> Vaadakem, kuidas kaitstud ressursse kutsuda, ja selgitage peamisi samme ja aktsepteeritud terminoloogiat:<\/p><\/blockquote>\n<p>Kliendi rakendus palub kasutajalt luba autoriseerimise l\u00e4biviimiseks tema nimel.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"IdentityServer4. Peamised m\u00f5isted. OpenID Connect, OAuth 2.0 ja 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>\u2014 see on kliendirakendus, mis p\u00f6\u00f6rdub kaitstud ressursside poole omaniku nimel. <strong>Kliendi<\/strong> \u2014 need on k\u00f5ik meie kaitstud teenused <strong>Allikas<\/strong> Kasutaja lubab kliendirakendusel autoriseerimise l\u00e4bi viia tema nimel, n\u00e4iteks sisestades sisselogimise ja parooli. Sisselogimine ja parool on autoriseerimis\u00f5iguse andmise t\u00f5end kliendirakendusele. <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\">Veebi API<\/a><\/noindex>.<\/p>\n<p>\n<\/li>\n<li>\n<p>Kasutaja (ressursi omanik) <strong>\u2014 programm v\u00f5i inimene, kes v\u00f5ib anda juurdep\u00e4\u00e4su kaitstud ressurssidele, n\u00e4iteks sisselogimise (username) ja parooli (password) sisestamise teel;<\/strong> Kliendirakendus k\u00fcsib juurdep\u00e4\u00e4su m\u00e4rki<\/p>\n<p>\n<\/li>\n<li>\n<p>esitamata enda kohta teavet ( <code>IdentityServer4<\/code> client_secret<code>client_id<\/code>, <code>), kasutades kasutaja autoriseerimisluba (<\/code>) ja esitades<code>username<\/code>, <code>parool<\/code>grant_type <code>. Seej\u00e4rel kontrollib autoriseerimiserver kliendi ja ressursi omanikku (sisselogimine ja parool) autentimist.<\/code> ja <code>scope<\/code>OAuth 2.0 protokoll t\u00f5endab mitte ainult kasutaja, vaid ka kliendirakenduse, mis p\u00e4\u00e4seb ressurssidele. Selleks on protokollis ette n\u00e4htud sellised parameetrid nagu <\/p>\n<p><\/p>\n<blockquote><p>client_id <strong>client_id<\/strong> ja <strong>), kasutades kasutaja autoriseerimisluba (<\/strong>.<br \/>\n<strong>\u2014 see on kliendirakenduse identifikaator, mida kasutatakse<\/strong> kliendi teabe otsimiseks. <code>IdentityServer4<\/code> on kliendirakenduse parooli analoog ja seda kasutatakse kliendirakenduse autentimiseks.<br \/>\n<strong>), kasutades kasutaja autoriseerimisluba (<\/strong> \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0430\u043d\u0430\u043b\u043e\u0433\u043e\u043c \u043f\u0430\u0440\u043e\u043b\u044f \u0434\u043b\u044f \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0430\u0443\u0442\u0435\u043d\u0442\u0438\u0444\u0438\u043a\u0430\u0446\u0438\u0438 \u043a\u043b\u0438\u0435\u043d\u0442\u0441\u043a\u043e\u0433\u043e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f \u043d\u0430 <code>IdentityServer4<\/code>. <strong>Kliendi saladus peab olema teada ainult rakendusele ja API-le<\/strong>. \u00dclaltoodust l\u00e4htudes j\u00e4reldame, et <strong>IdentityServer4 peab teadma oma kliente<\/strong>.<\/p><\/blockquote>\n<p>\n<\/li>\n<li>\n<p>Kui rakenduse ehtsust on kinnitatud ja autoriseerimise luba on kehtiv, <code>IdentiryServer4<\/code> loob <code>access-token'i<\/code> (ligip\u00e4\u00e4sutoken) rakenduse jaoks ja valikulise v\u00e4rskendust\u00f5e (<code>refresh-token<\/code>). Autoriseerimisprotsess on l\u00f5petatud. Kui p\u00e4ring on kehtetu v\u00f5i volitamata, tagastab autoriseerimiserver vastuse koos vastava veateatega.<\/p>\n<p>\n<\/li>\n<li>\n<p>Kliendirakendus k\u00fcsib andmeid kaitstud Web API-lt, esitades samas ligip\u00e4\u00e4sutokeni autoriseerimiseks. Kui serveri ressursside vastuskood <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> v\u00f5i <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_HTTP_status_codes\">498<\/a><\/noindex>, siis on autoriseerimiseks kasutatud ligip\u00e4\u00e4sutoken kehtetu v\u00f5i aegunud.<\/p>\n<p>\n<\/li>\n<li>\n<p>Kui token on kehtiv, <code>Veebi API<\/code> tagastab andmed rakendusele.<\/p>\n<p>\n<\/li>\n<\/ol>\n<p><\/p>\n<h4 id=\"_tipy-tokenov_\"><em>Tokenite t\u00fc\u00fcbid<\/em><\/h4>\n<p><\/p>\n<p>Registritud <code>IdentityServer4<\/code> klientidele lubatakse k\u00fcsida <code>IdentityServer4<\/code> <code>identity<\/code>-tokenit, <code>access<\/code>-tokenit ja <code>v\u00e4rskenda<\/code>-tokenit.<\/p>\n<p><\/p>\n<ul>\n<li><strong>identity-token (identifitseerimistoken)<\/strong> on autentsuse protsessi tulemus. Sisaldab kasutaja identifikaatorit ja teavet selle kohta, kuidas ja millal kasutaja autentimiseks l\u00e4bib. Saate laiendada oma andmetega.<\/li>\n<li><strong>access-token (ligip\u00e4\u00e4sutoken)<\/strong> edastatakse kaitstud API-le ja kasutatakse selle poolt autoriseerimiseks (ligip\u00e4\u00e4su lubamiseks) oma andmetele.<\/li>\n<li><strong>refresh-token (v\u00e4rskendustoken)<\/strong> on valikuline parameeter, mille autoriseerimiserver v\u00f5ib tagastada vastuseks ligip\u00e4\u00e4sutokeni p\u00e4ringule.<\/li>\n<\/ul>\n<p><\/p>\n<p>Tutvustame veel kahte m\u00f5istet:<\/p>\n<p><\/p>\n<p><strong>Authenticatation Server Url<\/strong> on l\u00f5pp-punkt, mille kaudu p\u00e4\u00e4seb juurde ligip\u00e4\u00e4suv\u00f5tmele. K\u00f5ik p\u00e4ringud ligip\u00e4\u00e4suv\u00f5tme v\u00e4ljastamiseks ja uuendamiseks saadetakse sellele URL-ile.<\/p>\n<p><\/p>\n<p><strong>Resource Url<\/strong> on kaitstud ressursi URL, millele tuleb p\u00f6\u00f6rduda, et sellele ligi p\u00e4\u00e4seda, edastades selle kaudu ligip\u00e4\u00e4suv\u00f5tme autoriseerimise p\u00e4ises.<\/p>\n<p><\/p>\n<h4 id=\"_zapros-klyucha-dostupa_\"><em>Ligip\u00e4\u00e4suv\u00f5tme p\u00e4rimine<\/em><\/h4>\n<p><\/p>\n<p>Ligip\u00e4\u00e4suv\u00f5tme p\u00e4rimiseks teeb klient <code>POST<\/code> p\u00e4ringu l\u00f5pp-punktile <code>IdentityServer4<\/code> j\u00e4rgmise p\u00e4isega<\/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>ja edastades j\u00e4rgmised parameetrid:<\/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>parool<\/code>, <code>client_id<\/code> ja <code>), kasutades kasutaja autoriseerimisluba (<\/code> olid eelnevalt k\u00e4sitletud. Uurime \u00fclej\u00e4\u00e4nud parameetreid:<\/p>\n<p><\/p>\n<p><strong>. Seej\u00e4rel kontrollib autoriseerimiserver kliendi ja ressursi omanikku (sisselogimine ja parool) autentimist.<\/strong> \u2014 mandaatide v\u00f5i volituste t\u00fc\u00fcp. Volituse t\u00fc\u00fcp s\u00f5ltub rakenduse poolt kasutatavast autoriseerimismeetodist ja sellest, milliseid volitust\u00fc\u00fcpe API toetab. Meie puhul on see <code>parool<\/code>, vastavalt spetsifikatsioonile <code>OAuth 2.0<\/code> vastab ressursiomaniku juurdep\u00e4\u00e4suv\u00f5imaluste mandaatidele (autoriseerimine kasutajanime ja parooli abil).<\/p>\n<p><\/p>\n<p>Protokoll <code>OAuth 2.0<\/code> m\u00e4\u00e4ratleb j\u00e4rgmised volitust\u00fc\u00fcbid, mis n\u00f5uavad <strong>kohustuslikku kasutajate kaasamise<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li><strong>autoriseerimiskood (authorization code)<\/strong>. See on \u00fcks levinumaid autoriseerimist\u00fc\u00fcpe, kuna see sobib h\u00e4sti serveripoolsete rakenduste jaoks, kus rakenduse l\u00e4htekood ja kliendi saladus ei ole kolmandate isikute k\u00e4tte saadavad;<\/li>\n<li><strong>kaudne (implicit)<\/strong>. Kaudset autoriseerimist\u00fc\u00fcp on kasutatakse mobiil- ja veebirakendustes, kus kliendi saladuse konfidentsiaalsust ei saa tagada;<\/li>\n<\/ul>\n<p><\/p>\n<p>Ja volitust\u00fc\u00fcbid, mis <strong>v\u00f5ivad toimuda ilma interaktiivse kasutajate kaasamiseta<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li><strong>ressursiomaniku andmed (resource owner)<\/strong>. Seda autoriseerimist\u00fc\u00fcpi tuleks kasutada ainult siis, kui kliendirakendus naudib kasutaja usaldust ja kasutaja v\u00f5ib rahulikult oma kasutajanime ja parooli sisestada. Seda autoriseerimist\u00fc\u00fcpi tuleks kasutada ainult siis, kui teised variandid pole saadaval. See autoriseerimist\u00fc\u00fcp on mugav ettev\u00f5tte klientidele, kes on oma s\u00fcsteemis juba kasutanud kasutaja mandaatide andmeid ja soovivad minna \u00fcle <code>OAuth 2.0<\/code>.<\/li>\n<li><strong>kliendi mandaatide<\/strong>. Kasutatakse rakenduse juurdep\u00e4\u00e4suks API-le. See v\u00f5ib olla kasulik n\u00e4iteks siis, kui rakendus soovib v\u00e4rskendada oma registreerimise teavet teenuses v\u00f5i URI suunamisteavet, v\u00f5i juurdep\u00e4\u00e4su muudele teabele, mis on rakenduse kontol teenuses API kaudu talletatud.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>scope<\/strong> \u2014 see on valikuline parameeter. See m\u00e4\u00e4ratleb n\u00e4htavuse. Serveri tagastatud ligip\u00e4\u00e4su token annab ligip\u00e4\u00e4su ainult nendele teenustele, mis kuuluvad sellesse valdkonda. St saame mitu teenust \u00fchendada \u00fche ulatuse alla ja kui klient saab ligip\u00e4\u00e4suv\u00f5tme sellele ulatusele, saadakse ligip\u00e4\u00e4s k\u00f5igile nendele teenustele. Samuti v\u00f5ib ulatus olla kasutatud autoriseerimis\u00f5iguste piiramiseks (n\u00e4iteks lugemis- v\u00f5i kirjutamis\u00f5igus)<\/p>\n<p>Allikas: <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 5.0.1.1 - 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.\" \/>\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\/et\/blog\/administrirovanie\/identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/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. P\u00f5him\u00f5isted. OpenID Connect, OAuth 2.0 ja JWT | ProHoster","description":"Selle postitusega soovin avada artiklite seeria IdentityServer4 kohta.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/administrirovanie\/identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","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.","og:url":"https:\/\/prohoster.info\/et\/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","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/71307","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=71307"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/71307\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media\/71308"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=71307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=71307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=71307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}