{"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\/ro\/blog\/administrirovanie\/identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt","title":{"rendered":"IdentityServer4. No\u021biuni de baz\u0103. OpenID Connect, OAuth 2.0 \u0219i JWT","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Prin aceast\u0103 postare vreau s\u0103 deschid o serie de articole dedicate IdentityServer4. Vom \u00eencepe cu conceptele de baz\u0103.<\/p>\n<p><\/p>\n<p>Cel mai promi\u021b\u0103tor protocol de autentificare \u00een acest moment este <noindex><a rel=\"nofollow\" href=\"https:\/\/openid.net\/connect\/\">OpenID Connect<\/a><\/noindex>, iar protocolul de autorizare (acordarea accesului) este <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> implementarea acestor dou\u0103 protocoale. Este optimizat pentru a rezolva <strong>problemele tipice<\/strong> de securitate.<\/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 acesta este un protocol \u0219i standard de autentificare, nu ofer\u0103 acces la resurse (Web API), dar deoarece este dezvoltat deasupra protocolului de autorizare <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/OAuth#OAuth_2.0\">OAuth 2.0<\/a><\/noindex>, permite ob\u021binerea parametrilor profilului utilizatorului ca \u0219i cum a\u021bi primit acces la resurse <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) reprezint\u0103 un standard web care define\u0219te modul de transmitere a datelor despre utilizator \u00eentr-un format JSON \u00eentr-o form\u0103 criptat\u0103.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc6749\">OAuth 2.0 (RFC 6749)<\/a><\/noindex> \u2014 acesta este un protocol \u0219i standard de autorizare. Permite aplica\u021biilor s\u0103 ob\u021bin\u0103 acces la resurse protejate, cum ar fi Web API.<\/p><\/blockquote>\n<p>S\u0103 ne uit\u0103m la diagrama de acces la o resurs\u0103 protejat\u0103 \u0219i s\u0103 analiz\u0103m pa\u0219ii principali \u0219i terminologia acceptat\u0103:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"IdentityServer4. No\u021biuni de baz\u0103. OpenID Connect, OAuth 2.0 \u0219i 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>Clientul solicit\u0103 utilizatorului permisiunea de a trece la autentificare \u00een numele s\u0103u. <strong>Clientului<\/strong> \u2014 aceasta este aplica\u021bia client care solicit\u0103 acces la resursele protejate \u00een numele proprietarului resurselor. <strong>Resurs\u0103<\/strong> \u2014 acestea sunt toate serviciile noastre protejate <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>Utilizatorul permite aplica\u021biei client s\u0103 treac\u0103 la autentificare \u00een numele s\u0103u, de exemplu, introduc\u00e2nd un nume de utilizator \u0219i o parol\u0103. Numele de utilizator \u0219i parola vor constitui un grant de autorizare pentru aplica\u021bia client. <strong>Utilizator (proprietarul resursei)<\/strong> \u2014 este un program sau o persoan\u0103 care poate oferi acces la resursele protejate, de exemplu, prin introducerea numelui de utilizator (username) \u0219i a parolei (password);<\/p>\n<p>\n<\/li>\n<li>\n<p>Aplica\u021bia client solicit\u0103 un token de acces la <code>IdentityServer4<\/code> prin furnizarea de informa\u021bii despre sine (<code>client_id<\/code>, <code>client_secret<\/code>), acord\u00e2nd permisiunea de autorizare din partea utilizatorului (<code>username<\/code>, <code>parola<\/code>) \u0219i furniz\u00e2nd <code>grant_type<\/code> \u0219i <code>scope<\/code>. Apoi, serverul de autorizare verific\u0103 autenticitatea clientului \u0219i datele proprietarului resursei (numele de utilizator \u0219i parola). <\/p>\n<p><\/p>\n<blockquote><p>Protocolul OAuth 2.0 efectueaz\u0103 autentificarea nu doar a utilizatorului, ci \u0219i a aplica\u021biei client care acceseaz\u0103 resursele. \u00cen acest scop, protocolul prevede parametrii precum <strong>client_id<\/strong> \u0219i <strong>client_secret<\/strong>.<br \/>\n<strong>client_id<\/strong> \u2014 acesta este identificatorul aplica\u021biei client, folosit <code>IdentityServer4<\/code> pentru a c\u0103uta informa\u021bii despre client.<br \/>\n<strong>client_secret<\/strong> este echivalentul parolei pentru aplica\u021bia client \u0219i este utilizat pentru autentificarea aplica\u021biei client pe <code>IdentityServer4<\/code>. <strong>Secretul clientului trebuie s\u0103 fie cunoscut doar aplica\u021biei \u0219i API-ului<\/strong>. Av\u00e2nd \u00een vedere cele de mai sus, concluzion\u0103m c\u0103 <strong>IdentityServer4 trebuie s\u0103 fie con\u0219tient de clien\u021bii s\u0103i<\/strong>.<\/p><\/blockquote>\n<p>\n<\/li>\n<li>\n<p>Dac\u0103 autenticitatea aplica\u021biei este confirmat\u0103 \u0219i autorizarea este valid\u0103, <code>IdentiryServer4<\/code> creeaz\u0103 <code>access-token<\/code> (token de acces) pentru aplica\u021bie \u0219i o cheie op\u021bional\u0103 de actualizare (<code>refresh-token<\/code>). Procesul de autorizare este finalizat. Dac\u0103 cererea este invalid\u0103 sau neautorizat\u0103, serverul de autorizare returneaz\u0103 un cod cu un mesaj de eroare corespunz\u0103tor.<\/p>\n<p>\n<\/li>\n<li>\n<p>Aplica\u021bia client acceseaz\u0103 date de la un Web API protejat, furniz\u00e2nd tokenul de acces pentru autorizare. Dac\u0103 codul r\u0103spunsului serverului de resurse <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> sau <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_HTTP_status_codes\">498<\/a><\/noindex>, atunci tokenul de acces folosit pentru autentificare este invalid sau expirat.<\/p>\n<p>\n<\/li>\n<li>\n<p>Dac\u0103 tokenul este valid, <code>Web API<\/code> ofer\u0103 date aplica\u021biei.<\/p>\n<p>\n<\/li>\n<\/ol>\n<p><\/p>\n<h4 id=\"_tipy-tokenov_\"><em>Tipuri de tokenuri<\/em><\/h4>\n<p><\/p>\n<p>Clien\u021bilor \u00eenregistra\u021bi le este permis s\u0103 solicite <code>IdentityServer4<\/code> -token, <code>IdentityServer4<\/code> <code>identity<\/code>access <code>-token \u0219i<\/code>refresh <code>-token.<\/code>identity-token (token de identitate)<\/p>\n<p><\/p>\n<ul>\n<li><strong>\u2014 rezultatul procesului de autentificare. Con\u021bine identificatorul utilizatorului \u0219i informa\u021bii despre cum \u0219i c\u00e2nd utilizatorul se autentific\u0103. Poate fi extins cu datele proprii.<\/strong> access-token (token de acces)<\/li>\n<li><strong>\u2014 se transmite c\u0103tre API-ul protejat \u0219i este utilizat de acesta pentru autorizarea (permisiunea de acces) la datele sale.<\/strong> refresh-token (token de actualizare)<\/li>\n<li><strong>\u2014 un parametru op\u021bional, pe care serverul de autorizare \u00eel poate returna ca r\u0103spuns la cererea de token de acces.<\/strong> S\u0103 introducem dou\u0103 concepte suplimentare:<\/li>\n<\/ul>\n<p><\/p>\n<p>Authenticatation Server Url<\/p>\n<p><\/p>\n<p><strong>\u2014 punctul final pentru ob\u021binerea cheii de acces. Toate cererile pentru furnizarea \u0219i re\u00eennoirea cheilor de acces vor fi direc\u021bionate c\u0103tre aceast\u0103 adres\u0103 URL.<\/strong> Resource Url<\/p>\n<p><\/p>\n<p><strong>\u2014 adresa URL a resursei protejate, la care trebuie s\u0103 se fac\u0103 referire pentru a ob\u021bine accesul, trec\u00e2nd cheia de acces \u00een antetul de autorizare.<\/strong> Cerere de cheie de acces<\/p>\n<p><\/p>\n<h4 id=\"_zapros-klyucha-dostupa_\"><em>Pentru a solicita o cheie de acces, clientul face<\/em><\/h4>\n<p><\/p>\n<p>o cerere c\u0103tre punctul final <code>POST<\/code> cu urm\u0103torul antet <code>IdentityServer4<\/code> 'Content-Type': 'application\/x-www-form-urlencoded',\n'Accept': 'application\/json',\n'Expect': '100-continue'<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">\u0219i transmit\u00e2nd urm\u0103torii parametri:<\/code><\/pre>\n<p><\/p>\n<p>'grant_type' : 'password',\n'username' : login,\n'password' : password,\n'scope' : 'scope',\n'client_id' : 'client_id',\n'client_secret' : '{client_secret}'<\/p>\n<p><\/p>\n<pre><code class=\"plaintext\">a fost discutat mai sus. Vom analiza ceilal\u021bi parametri:<\/code><\/pre>\n<p><\/p>\n<p><code>username<\/code>, <code>parola<\/code>, <code>client_id<\/code> \u0219i <code>client_secret<\/code> au fost discutate mai sus. S\u0103 analiz\u0103m celelalte parametrii:<\/p>\n<p><\/p>\n<p><strong>grant_type<\/strong> \u2014 tipul de grant sau tipul de permisiune pentru autorizare. Tipul permisiunii pentru autorizare depinde de metoda de solicitare a autoriz\u0103rii utilizat\u0103 de aplica\u021bie, precum \u0219i de tipurile de permisiune acceptate de API. \u00cen cazul nostru, acesta va avea valoarea <code>parola<\/code>, conform specifica\u021biei <code>OAuth 2.0<\/code> corespondent\u0103 grantului de acreditive ale proprietarului resursei (autorizare prin utilizarea numelui de utilizator \u0219i a parolei).<\/p>\n<p><\/p>\n<p>Protocolul <code>OAuth 2.0<\/code> define\u0219te urm\u0103toarele tipuri de granturi care necesit\u0103 <strong>interac\u021biune obligatorie cu utilizatorii<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li><strong>cod de autorizare (authorization code)<\/strong>. Este unul dintre cele mai r\u0103sp\u00e2ndite tipuri de permisiune pentru autorizare, deoarece se potrive\u0219te bine aplica\u021biilor server-side, unde codul surs\u0103 al aplica\u021biei \u0219i secretul clientului nu sunt accesibile ter\u021bilor;<\/li>\n<li><strong>implicit (implicit)<\/strong>. Tipul implicit de permisiune pentru autorizare este utilizat de aplica\u021biile mobile \u0219i web, unde confiden\u021bialitatea secretului clientului nu poate fi garantat\u0103;<\/li>\n<\/ul>\n<p><\/p>\n<p>\u0218i tipurile de granturi care <strong>pot fi efectuate f\u0103r\u0103 interac\u021biune interactiv\u0103 cu utilizatorii<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li><strong>acreditivul proprietarului resursei (resource owner)<\/strong>. Acest tip de permisiune ar trebui utilizat doar \u00een cazul \u00een care aplica\u021bia client are \u00eencrederea utilizatorului \u0219i utilizatorul este confortabil s\u0103 \u00ee\u0219i introduc\u0103 numele de utilizator \u0219i parola. Acest tip de permisiune ar trebui utilizat doar atunci c\u00e2nd alte op\u021biuni nu sunt disponibile. Acest tip de permisiune este convenabil pentru clien\u021bii corporate care, \u00een cadrul sistemului lor, au folosit deja acreditivele utilizatorului \u0219i doresc s\u0103 treac\u0103 la <code>OAuth 2.0<\/code>.<\/li>\n<li><strong>acreditivele clientului<\/strong>. Sunt utilizate atunci c\u00e2nd aplica\u021bia acceseaz\u0103 API-ul. Aceasta poate fi util\u0103, de exemplu, atunci c\u00e2nd aplica\u021bia dore\u0219te s\u0103 \u00ee\u0219i actualizeze informa\u021biile de \u00eenregistrare pe serviciu sau URI-ul de redirec\u021bionare, sau s\u0103 acceseze alte informa\u021bii stocate \u00een contul aplica\u021biei pe serviciu, prin intermediul API-ului serviciului.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>scope<\/strong> \u2014 este un parametru op\u021bional. Acesta define\u0219te domeniul de vizibilitate. Tokenul de acces returnat de server va oferi acces doar la serviciile care fac parte din acest domeniu. Adic\u0103, putem combina mai multe servicii sub un singur scope \u0219i, dac\u0103 clientul prime\u0219te o cheie de acces pentru acest scope, el prime\u0219te acces la toate aceste servicii. De asemenea, scope-ul poate fi folosit pentru a restric\u021biona drepturile de autorizare (de exemplu, acces la citire sau scriere)<\/p>\n<p>Sursa: <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.2 - 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\/ro\/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.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\/ro\/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. Conceptualizarea principal\u0103. OpenID Connect, OAuth 2.0 \u0219i JWT | ProHoster","description":"Prin aceast\u0103 postare vreau s\u0103 deschid o serie de articole dedicate IdentityServer4.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\/ro\/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\/ro\/wp-json\/wp\/v2\/posts\/71307","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=71307"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/71307\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/71308"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=71307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=71307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=71307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}