{"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\/es\/blog\/administrirovanie\/identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt","title":{"rendered":"IdentityServer4. Conceptos b\u00e1sicos. OpenID Connect, OAuth 2.0 y JWT","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Con este post, quiero abrir una serie de art\u00edculos dedicados a IdentityServer4. Comenzaremos con los conceptos b\u00e1sicos.<\/p>\n<p><\/p>\n<p>El protocolo de autenticaci\u00f3n m\u00e1s prometedor en la actualidad es <noindex><a rel=\"nofollow\" href=\"https:\/\/openid.net\/connect\/\">OpenID Connect<\/a><\/noindex>, y el protocolo de autorizaci\u00f3n (provisi\u00f3n de acceso) es <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> implementa estos dos protocolos. Est\u00e1 optimizado para resolver <strong>problemas t\u00edpicos<\/strong> de seguridad.<\/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 es un protocolo y est\u00e1ndar de autenticaci\u00f3n, no otorga acceso a recursos (Web API), pero dado que est\u00e1 dise\u00f1ado sobre un protocolo de autorizaci\u00f3n <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/OAuth#OAuth_2.0\">OAuth 2.0<\/a><\/noindex>, permite obtener los par\u00e1metros del perfil del usuario como si hubieras accedido al recurso <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) es un est\u00e1ndar web que define la forma de transmitir datos del usuario en formato JSON de manera encriptada.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc6749\">OAuth 2.0 (RFC 6749)<\/a><\/noindex> \u2014 es un protocolo y est\u00e1ndar de autorizaci\u00f3n. Permite a las aplicaciones acceder a recursos protegidos, como Web API.<\/p><\/blockquote>\n<p>Veamos el diagrama de acceso a un recurso protegido y analicemos los pasos principales y la terminolog\u00eda adoptada:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"IdentityServer4. Conceptos b\u00e1sicos. OpenID Connect, OAuth 2.0 y 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>El cliente solicita al usuario permiso para autorizar en su nombre. <strong>Cliente<\/strong> \u2014 es la aplicaci\u00f3n cliente que accede a los recursos protegidos en nombre del propietario de los recursos. <strong>El recurso<\/strong> \u2014 son todos nuestros servicios protegidos <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>El usuario permite a la aplicaci\u00f3n cliente autorizar en su nombre, por ejemplo, ingresando su nombre de usuario y contrase\u00f1a. El nombre de usuario y la contrase\u00f1a servir\u00e1n como el grant de autorizaci\u00f3n para la aplicaci\u00f3n cliente. <strong>User (propietario de recursos)<\/strong> \u2014 es el programa o persona que puede otorgar acceso a recursos protegidos, por ejemplo, ingresando el nombre de usuario (username) y la contrase\u00f1a (password);<\/p>\n<p>\n<\/li>\n<li>\n<p>La aplicaci\u00f3n cliente solicita un token de acceso a <code>IdentityServer4<\/code> proporcionando informaci\u00f3n sobre s\u00ed misma (<code>client_id<\/code>, <code>client_secret<\/code>), otorgando permiso de autorizaci\u00f3n por parte del usuario (<code>username<\/code>, <code>password<\/code>) y presentando <code>grant_type<\/code> y <code>scope<\/code>. Luego, el servidor de autorizaci\u00f3n verifica la autenticidad del cliente y las credenciales del propietario de recursos (nombre de usuario y contrase\u00f1a). <\/p>\n<p><\/p>\n<blockquote><p>El protocolo OAuth 2.0 no solo autentica al usuario, sino tambi\u00e9n a la aplicaci\u00f3n cliente que accede a los recursos. Para ello, el protocolo contempla par\u00e1metros como <strong>client_id<\/strong> y <strong>client_secret<\/strong>.<br \/>\n<strong>client_id<\/strong> \u2014 es el identificador de la aplicaci\u00f3n cliente utilizado <code>IdentityServer4<\/code> para buscar informaci\u00f3n sobre el cliente.<br \/>\n<strong>client_secret<\/strong> es un equivalente de la contrase\u00f1a para la aplicaci\u00f3n cliente y se utiliza para autenticar la aplicaci\u00f3n cliente en <code>IdentityServer4<\/code>. <strong>el secreto del cliente debe ser conocido solo por la aplicaci\u00f3n y la API<\/strong>. A partir de lo anterior, concluimos que <strong>IdentityServer4 debe conocer a sus clientes<\/strong>.<\/p><\/blockquote>\n<p>\n<\/li>\n<li>\n<p>Si la autenticidad de la aplicaci\u00f3n se confirma y el permiso de autorizaci\u00f3n es v\u00e1lido, <code>IdentiryServer4<\/code> crea <code>un token de acceso<\/code> para la aplicaci\u00f3n y un token de actualizaci\u00f3n opcional (<code>refresh-token<\/code>). El proceso de autorizaci\u00f3n ha finalizado. Si la solicitud es inv\u00e1lida o no autorizada, el servidor de autorizaci\u00f3n devuelve un c\u00f3digo con el mensaje de error correspondiente.<\/p>\n<p>\n<\/li>\n<li>\n<p>La aplicaci\u00f3n cliente solicita datos a la API web protegida, proporcionando el token de acceso para la autorizaci\u00f3n. Si el c\u00f3digo de respuesta del servidor de recursos <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> o <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_HTTP_status_codes\">498<\/a><\/noindex>, el token de acceso utilizado para la autenticaci\u00f3n es inv\u00e1lido o ha expirado.<\/p>\n<p>\n<\/li>\n<li>\n<p>Si el token es v\u00e1lido, <code>Web API<\/code> proporciona los datos a la aplicaci\u00f3n.<\/p>\n<p>\n<\/li>\n<\/ol>\n<p><\/p>\n<h4 id=\"_tipy-tokenov_\"><em>Tipos de tokens<\/em><\/h4>\n<p><\/p>\n<p>Se permite a los clientes registrados solicitar <code>IdentityServer4<\/code> identity <code>IdentityServer4<\/code> <code>-token,<\/code>access <code>-token y<\/code>refresh <code>-token.<\/code>identity-token (token de identificaci\u00f3n)<\/p>\n<p><\/p>\n<ul>\n<li><strong>es el resultado del proceso de autenticaci\u00f3n. Contiene el identificador del usuario y la informaci\u00f3n sobre c\u00f3mo y cu\u00e1ndo el usuario se autentica. Se puede ampliar con datos propios.<\/strong> access-token (token de acceso)<\/li>\n<li><strong>se transmite a la API protegida y se utiliza para autorizar (dar acceso) a sus datos.<\/strong> refresh-token (token de actualizaci\u00f3n)<\/li>\n<li><strong>es un par\u00e1metro opcional que el servidor de autorizaci\u00f3n puede devolver en respuesta a la solicitud del token de acceso.<\/strong> Introduzcamos otros dos conceptos:<\/li>\n<\/ul>\n<p><\/p>\n<p>Authenticatation Server Url<\/p>\n<p><\/p>\n<p><strong>es el punto final para obtener el token de acceso. Todas las solicitudes para otorgar y renovar los tokens de acceso se dirigir\u00e1n a esta URL.<\/strong> Resource Url<\/p>\n<p><\/p>\n<p><strong>es la URL del recurso protegido al que se debe acceder, pasando el token de acceso en el encabezado de autorizaci\u00f3n.<\/strong> Solicitud del token de acceso<\/p>\n<p><\/p>\n<h4 id=\"_zapros-klyucha-dostupa_\"><em>Para solicitar el token de acceso, el cliente realiza<\/em><\/h4>\n<p><\/p>\n<p>una solicitud al punto final <code>POST<\/code> con el siguiente encabezado <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\">y pasando los siguientes par\u00e1metros:<\/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\">fueron discutidos anteriormente. Revisemos los dem\u00e1s par\u00e1metros:<\/code><\/pre>\n<p><\/p>\n<p><code>username<\/code>, <code>password<\/code>, <code>client_id<\/code> y <code>client_secret<\/code> fueron analizados anteriormente. Vamos a examinar los otros par\u00e1metros:<\/p>\n<p><\/p>\n<p><strong>grant_type<\/strong> \u2014 tipo de concesi\u00f3n o tipo de autorizaci\u00f3n. El tipo de autorizaci\u00f3n depende del m\u00e9todo de solicitud de autorizaci\u00f3n utilizado por la aplicaci\u00f3n, as\u00ed como de los tipos de autorizaci\u00f3n admitidos por la API. En nuestro caso, tendr\u00e1 el valor <code>password<\/code>, que seg\u00fan la especificaci\u00f3n <code>OAuth 2.0<\/code> corresponde a la concesi\u00f3n de credenciales de acceso del propietario del recurso (autenticaci\u00f3n por nombre de usuario y contrase\u00f1a).<\/p>\n<p><\/p>\n<p>Protocolo <code>OAuth 2.0<\/code> define los siguientes tipos de concesiones que requieren <strong>interacci\u00f3n obligatoria con los usuarios<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li><strong>c\u00f3digo de autorizaci\u00f3n (authorization code)<\/strong>. Es uno de los tipos de autorizaci\u00f3n m\u00e1s comunes, ya que se adapta bien a aplicaciones del lado del servidor (server-side applications), donde el c\u00f3digo fuente de la aplicaci\u00f3n y el secreto del cliente no est\u00e1n disponibles para terceros;<\/li>\n<li><strong>impl\u00edcito (implicit)<\/strong>. El tipo de autorizaci\u00f3n impl\u00edcito se utiliza en aplicaciones m\u00f3viles y web, donde la privacidad del secreto del cliente no puede garantizarse;<\/li>\n<\/ul>\n<p><\/p>\n<p>Y los tipos de autorizaciones que <strong>se pueden llevar a cabo sin interacci\u00f3n interactiva con los usuarios<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li><strong>credenciales del propietario del recurso (resource owner)<\/strong>. Este tipo de autorizaci\u00f3n debe usarse solo cuando la aplicaci\u00f3n cliente goza de la confianza del usuario y el usuario est\u00e1 c\u00f3modo ingresando su nombre de usuario y contrase\u00f1a. Este tipo de autorizaci\u00f3n debe usarse solo cuando no hay otras opciones disponibles. Este tipo de autorizaci\u00f3n es conveniente para clientes empresariales que ya han utilizado las credenciales del usuario dentro de su sistema y desean pasar a <code>OAuth 2.0<\/code>.<\/li>\n<li><strong>credenciales del cliente<\/strong>. Se utilizan cuando la aplicaci\u00f3n accede a la API. Esto puede ser \u00fatil, por ejemplo, cuando la aplicaci\u00f3n desea actualizar su propia informaci\u00f3n de registro en el servicio o URI de redirecci\u00f3n, o acceder a otra informaci\u00f3n almacenada en la cuenta de la aplicaci\u00f3n en el servicio a trav\u00e9s de la API del servicio.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>scope<\/strong> \u2014 es un par\u00e1metro opcional. Define el \u00e1mbito de visibilidad. El token de acceso devuelto por el servidor proporcionar\u00e1 acceso solo a los servicios que entren en este \u00e1mbito. Es decir, podemos combinar varios servicios bajo un mismo \u00e1mbito y si el cliente obtiene una clave de acceso a este \u00e1mbito, obtiene acceso a todos estos servicios. Adem\u00e1s, el \u00e1mbito puede ser utilizado para restringir los derechos de autorizaci\u00f3n (por ejemplo, acceso de lectura o escritura).<\/p>\n<p>Fuente: <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\/es\/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=\"es_ES\" \/>\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\/es\/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. Conceptos clave. OpenID Connect, OAuth 2.0 y JWT | ProHoster","description":"Con esta publicaci\u00f3n, quiero iniciar una serie de art\u00edculos dedicados a IdentityServer4.","canonical_url":"https:\/\/prohoster.info\/es\/blog\/administrirovanie\/identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"es_ES","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\/es\/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\/es\/wp-json\/wp\/v2\/posts\/71307","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/comments?post=71307"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/posts\/71307\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media\/71308"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/media?parent=71307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/categories?post=71307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/es\/wp-json\/wp\/v2\/tags?post=71307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}