{"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\/da\/blog\/administrirovanie\/identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt","title":{"rendered":"IdentityServer4. Grundl\u00e6ggende begreber. OpenID Connect, OAuth 2.0 og JWT","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Med dette indl\u00e6g vil jeg \u00e5bne en r\u00e6kke artikler dedikeret til IdentityServer4. Lad os begynde med de grundl\u00e6ggende begreber.<\/p>\n<p><\/p>\n<p>Den mest lovende autentifikationsprotokol p\u00e5 nuv\u00e6rende tidspunkt er <noindex><a rel=\"nofollow\" href=\"https:\/\/openid.net\/connect\/\">OpenID Connect<\/a><\/noindex>, og autorisationsprotokollen (adgangsgivende) er <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> som implementerer disse to protokoller. Den er optimeret til at l\u00f8se <strong>typiske sikkerhedsproblemer.<\/strong> sikkerhed.<\/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 det er en protokol og standard for autentifikation, den giver ikke adgang til ressourcer (Web API), men da den er udviklet oven p\u00e5 autorisationsprotokollen, <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/OAuth#OAuth_2.0\">OAuth 2.0<\/a><\/noindex>giver den mulighed for at f\u00e5 brugerprofilparametre, som om du havde f\u00e5et adgang til ressourcen <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) repr\u00e6senterer en webstandard, der definerer m\u00e5den at overf\u00f8re brugerdata i JSON-format p\u00e5 i krypteret form.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc6749\">OAuth 2.0 (RFC 6749)<\/a><\/noindex> \u2014 det er en protokol og standard for autorisation. Den giver applikationer adgang til beskyttede ressourcer, s\u00e5som Web API.<\/p><\/blockquote>\n<p>Lad os tage et kig p\u00e5 diagrammet for adgang til en beskyttet ressource og forst\u00e5 de grundl\u00e6ggende trin og den accepterede terminologi:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"IdentityServer4. Grundl\u00e6ggende begreber. OpenID Connect, OAuth 2.0 og 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>Klienten beder brugeren om tilladelse til at gennemg\u00e5 autorisation p\u00e5 hans vegne. <strong>Kunde<\/strong> \u2014 det er en klientapplikation, der henvender sig til beskyttede ressourcer p\u00e5 vegne af ejer af ressourcerne. <strong>Platformen<\/strong> \u2014 det er alle vores beskyttede tjenester <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>Brugeren tillader klientapplikationen at gennemg\u00e5 autorisation p\u00e5 hans vegne, for eksempel ved at indtaste brugernavn og password. Brugernavnet og passwordet vil fungere som autorisationstilladelse for klientapplikationen. <strong>Bruger (ejer af ressourcen)<\/strong> \u2014 programmet eller personen, der kan give adgang til beskyttede ressourcer, for eksempel ved at indtaste brugernavn (username) og password (password);<\/p>\n<p>\n<\/li>\n<li>\n<p>Klientapplikationen anmoder om en adgangstoken hos <code>IdentityServer4<\/code> ved at give oplysninger om sig selv (<code>client_id<\/code>, <code>client_secret<\/code>), give tilladelse til autorisation fra brugeren (<code>brugernavn<\/code>, <code>adgangskode<\/code>) og give <code>grant_type<\/code> og <code>scope<\/code>. Derefter kontrollerer autorisationsserveren klientens legitimationsoplysninger og ejerens ressourcers legitimationsoplysninger (brugernavn og password). <\/p>\n<p><\/p>\n<blockquote><p>OAuth 2.0 protokollen udf\u00f8rer autentifikation ikke kun af brugeren, men ogs\u00e5 af klientapplikationen, der f\u00e5r adgang til ressourcerne. Til dette form\u00e5l forudser protokollen parametre som <strong>client_id<\/strong> og <strong>client_secret<\/strong>.<br \/>\n<strong>client_id<\/strong> \u2014 det er identifikatoren for klientapplikationen, der anvendes <code>IdentityServer4<\/code> til at finde oplysninger om klienten.<br \/>\n<strong>client_secret<\/strong> er en analog til adgangskoden for klientapplikationen og anvendes til autentificering af klientapplikationen p\u00e5 <code>IdentityServer4<\/code>. <strong>Klienthemmeligheden skal kun v\u00e6re kendt af applikationen og API'et<\/strong>. Baseret p\u00e5 det ovenst\u00e5ende konkluderer vi, at <strong>IdentityServer4 skal v\u00e6re bekendt med sine kunder<\/strong>.<\/p><\/blockquote>\n<p>\n<\/li>\n<li>\n<p>Hvis applikationens legitimitet er bekr\u00e6ftet, og autorisationstilladelsen er gyldig, <code>IdentiryServer4<\/code> opretter <code>access-token<\/code> (adgangstoken) til applikationen og en valgfri refresh-token (<code>refresh-token<\/code>). Autorisationsprocessen er afsluttet. Hvis anmodningen er ugyldig eller uautoriseret, returnerer autorisationsserveren en kode med den relevante fejlmeddelelse.<\/p>\n<p>\n<\/li>\n<li>\n<p>Klientapplikationen anmoder om data fra det beskyttede Web API, idet den giver adgangstokenet til autorisation. Hvis serverens ressourcedekodning, <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> eller <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_HTTP_status_codes\">498<\/a><\/noindex>, s\u00e5 er adgangstokenet, der anvendes til autentificering, ugyldigt eller udl\u00f8bet.<\/p>\n<p>\n<\/li>\n<li>\n<p>Hvis token er gyldigt, <code>Web API<\/code> giver det data til applikationen.<\/p>\n<p>\n<\/li>\n<\/ol>\n<p><\/p>\n<h4 id=\"_tipy-tokenov_\"><em>Typer af tokens<\/em><\/h4>\n<p><\/p>\n<p>Registrerede <code>IdentityServer4<\/code> kunder kan anmode om <code>IdentityServer4<\/code> <code>identity<\/code>-token, <code>access<\/code>-token og <code>refresh<\/code>-token.<\/p>\n<p><\/p>\n<ul>\n<li><strong>identity-token (identitetstoken)<\/strong> \u2014 resultatet af autentificeringsprocessen. Det indeholder bruger-ID'et og information om, hvordan og hvorn\u00e5r brugeren blev autentificeret. Det kan udvides med egne data.<\/li>\n<li><strong>access-token (adgangstoken)<\/strong> \u2014 sendes til det beskyttede API og bruges af det til at autorisere (give adgang) til sine data.<\/li>\n<li><strong>refresh-token (opdateringstoken)<\/strong> \u2014 et valgfrit parameter, som autorisationsserveren kan returnere som svar p\u00e5 en anmodning om adgangstoken.<\/li>\n<\/ul>\n<p><\/p>\n<p>Lad os introducere to yderligere begreber:<\/p>\n<p><\/p>\n<p><strong>Authenticatation Server Url<\/strong> \u2014 slutpunktet for at modtage adgangsn\u00f8glen. Alle anmodninger om tildeling og fornyelse af adgangsn\u00f8gler vil blive sendt til denne URL.<\/p>\n<p><\/p>\n<p><strong>Resource Url<\/strong> \u2014 URL'en for den beskyttede ressource, man skal kontakte for at f\u00e5 adgang til den, ved at sende adgangsn\u00f8glen i autorisationsheaderen.<\/p>\n<p><\/p>\n<h4 id=\"_zapros-klyucha-dostupa_\"><em>Anmodning om adgangsn\u00f8gle<\/em><\/h4>\n<p><\/p>\n<p>For at anmode om en adgangsn\u00f8gle foretager klienten <code>POST<\/code> anmodning til slutpunktet <code>IdentityServer4<\/code> med f\u00f8lgende header<\/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>og sender de f\u00f8lgende parametre:<\/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>brugernavn<\/code>, <code>adgangskode<\/code>, <code>client_id<\/code> og <code>client_secret<\/code> blev diskuteret ovenfor. Lad os gennemg\u00e5 de \u00f8vrige parametre:<\/p>\n<p><\/p>\n<p><strong>grant_type<\/strong> \u2014 grant type or authorization grant type. The authorization grant type depends on the method used by the application for the authorization request, as well as what types of grants are supported by the API. In our case, it will be set to <code>adgangskode<\/code>, which according to the specification <code>OAuth 2.0<\/code> corresponds to the resource owner's credentials grant (authorization by username and password).<\/p>\n<p><\/p>\n<p>Protokol <code>OAuth 2.0<\/code> defines the following types of grants that require <strong>mandatory interaction with users<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li><strong>authorization code<\/strong>. It is one of the most common types of authorization grants, as it is well-suited for server-side applications, where the application's source code and client secret are not available to outsiders;<\/li>\n<li><strong>implicit<\/strong>. The implicit authorization grant type is used by mobile and web applications where the confidentiality of the client secret cannot be guaranteed;<\/li>\n<\/ul>\n<p><\/p>\n<p>And the types of grants that <strong>can be executed without interactive user interaction<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li><strong>resource owner credentials.<\/strong>This type of authorization should only be used when the client application is trusted by the user and the user is comfortable entering their username and password. This type of grant should only be used when no other options are available. This type of grant is convenient for corporate clients who have already used user credentials within their system and want to switch to <code>OAuth 2.0<\/code>.<\/li>\n<li><strong>client credentials.<\/strong>Used when an application accesses the API. This can be useful, for example, when the application wants to update its own registration details on the service or redirect URI, or access other information stored in the application's account on the service through the service's API.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>scope<\/strong> \u2014 dette er en valgfri parameter. Den definerer synlighedsomr\u00e5det. Adgangstokenet, der returneres af serveren, vil kun give adgang til de tjenester, der ligger inden for dette omr\u00e5de. Dvs. vi kan samle flere tjenester under \u00e9n scope, og hvis klienten f\u00e5r en adgangsn\u00f8gle til denne scope, f\u00e5r han adgang til alle disse tjenester. Scope kan ogs\u00e5 bruges til at begr\u00e6nse autorisationsrettigheder (f.eks. l\u00e6se- eller skrivetilgang)<\/p>\n<p>Kilde: <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.3 - 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\/da\/blog\/administrirovanie\/identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"da_DK\" \/>\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\/da\/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. Grundl\u00e6ggende begreber. OpenID Connect, OAuth 2.0 og JWT | ProHoster","description":"Med dette indl\u00e6g vil jeg \u00e5bne en r\u00e6kke artikler dedikeret til IdentityServer4.","canonical_url":"https:\/\/prohoster.info\/da\/blog\/administrirovanie\/identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"da_DK","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\/da\/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\/da\/wp-json\/wp\/v2\/posts\/71307","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/comments?post=71307"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/posts\/71307\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media\/71308"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/media?parent=71307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/categories?post=71307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/da\/wp-json\/wp\/v2\/tags?post=71307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}