{"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\/nl\/blog\/administrirovanie\/identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt","title":{"rendered":"IdentityServer4. Basisconcepten. OpenID Connect, OAuth 2.0 en JWT","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Met deze post wil ik een reeks artikelen openen over IdentityServer4. We beginnen met de basisconcepten.<\/p>\n<p><\/p>\n<p>Op dit moment is het meest veelbelovende authenticatieprotocol <noindex><a rel=\"nofollow\" href=\"https:\/\/openid.net\/connect\/\">OpenID Connect<\/a><\/noindex>, terwijl het autorisatieprotocol (toegang verlenen) is <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> deze twee protocollen implementeert. Het is geoptimaliseerd voor het oplossen van <strong>typische beveiligingsproblemen.<\/strong> Dit is een protocol en standaard voor authenticatie; het biedt geen toegang tot middelen (Web API), maar omdat het is ontwikkeld bovenop het autorisatieprotocol,<\/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> biedt het de mogelijkheid om gebruikersprofielparameters te verkrijgen alsof je toegang hebt gekregen tot de bron. <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) is een webstandaard die een manier definieert om gebruikersgegevens in JSON-formaat versleuteld te verzenden.<\/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\">is een protocol en standaard voor autorisatie. Het stelt applicaties in staat toegang te krijgen tot beschermde middelen, zoals Web API.<\/a><\/noindex> Laten we naar het diagram kijken van het aanvragen van toegang tot een beschermd middel en de belangrijkste stappen en gebruikte terminologie bespreken:<\/p><\/blockquote>\n<p>De client vraagt de gebruiker om toestemming om autorisatie aan te vragen namens hem.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"IdentityServer4. Basisconcepten. OpenID Connect, OAuth 2.0 en 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>Dit is de clientapplicatie die toegang vraagt tot beschermde middelen namens de eigenaar van de middelen. <strong>Klant<\/strong> Dit zijn al onze beveiligde diensten. <strong>Hulpbron<\/strong> De gebruiker staat de clientapplicatie toe om autorisatie aan te vragen namens hem, bijvoorbeeld door zijn gebruikersnaam en wachtwoord in te voeren. De gebruikersnaam en het wachtwoord zullen de autorisatiegrant zijn voor de clientapplicatie. <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>De gebruiker (eigenaar van de middelen) <strong>is een programma of persoon die toegang kan verlenen tot beschermde middelen, bijvoorbeeld door een gebruikersnaam (username) en wachtwoord (password) in te voeren;<\/strong> De clientapplicatie vraagt toegangstoken aan bij<\/p>\n<p>\n<\/li>\n<li>\n<p>door zijn eigen informatie te verstrekken ( <code>IdentityServer4<\/code> client_secret<code>client_id<\/code>, <code>), toestemming voor autorisatie van de gebruiker te geven (<\/code>) en het verstrekken van<code>username<\/code>, <code>password<\/code>grant_type <code>. Vervolgens controleert de autorisatieserver de authenticiteit van de client en de gegevens van de eigenaar van de middelen (gebruikersnaam en wachtwoord).<\/code> en <code>scope<\/code>Het OAuth 2.0-protocol voert authentificatie uit, niet alleen voor de gebruiker, maar ook voor de clientapplicatie die toegang heeft tot de middelen. Hiervoor voorziet het protocol in parameters zoals <\/p>\n<p><\/p>\n<blockquote><p>client_id <strong>client_id<\/strong> en <strong>), toestemming voor autorisatie van de gebruiker te geven (<\/strong>.<br \/>\n<strong>dit is de identificatie van de clientapplicatie, gebruikt<\/strong> voor het opzoeken van informatie over de client. <code>IdentityServer4<\/code> .<br \/>\n<strong>), toestemming voor autorisatie van de gebruiker te geven (<\/strong> is het equivalent van een wachtwoord voor de clienttoepassing en wordt gebruikt voor de authenticatie van de clienttoepassing op <code>IdentityServer4<\/code>. <strong>De clientsecret moet alleen bekend zijn bij de toepassing en de API<\/strong>. Op basis van het bovenstaande kunnen we concluderen dat <strong>IdentityServer4 op de hoogte moet zijn van zijn klanten<\/strong>.<\/p><\/blockquote>\n<p>\n<\/li>\n<li>\n<p>Als de echtheid van de toepassing is bevestigd en de autorisatie is geldig, <code>IdentityServer4<\/code> cre\u00ebert <code>access-token<\/code> (toegangstoken) voor de toepassing en een optionele vernieuwingssleutel (<code>refresh-token<\/code>). Het autorisatieproces is voltooid. Als het verzoek ongeldig of ongeautoriseerd is, retourneert de autorisatieserver een code met een bijbehorend foutbericht.<\/p>\n<p>\n<\/li>\n<li>\n<p>De clienttoepassing vraagt om gegevens van de beveiligde Web API, waarbij het toegangstoken wordt verstrekt voor autorisatie. Als de serverresponscode <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> of <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_HTTP_status_codes\">498<\/a><\/noindex>, is het toegangstoken dat wordt gebruikt voor authenticatie ongeldig of verlopen.<\/p>\n<p>\n<\/li>\n<li>\n<p>Als het token geldig is, <code>Web API<\/code> geeft het gegevens aan de toepassing.<\/p>\n<p>\n<\/li>\n<\/ol>\n<p><\/p>\n<h4 id=\"_tipy-tokenov_\"><em>Token types<\/em><\/h4>\n<p><\/p>\n<p>Geregistreerde <code>IdentityServer4<\/code> klanten mogen aanvragen bij <code>IdentityServer4<\/code> <code>identity<\/code>-token, <code>access<\/code>-token en <code>Vernieuw afbeeldingen<\/code>-token.<\/p>\n<p><\/p>\n<ul>\n<li><strong>identity-token (identificatie-token)<\/strong> \u2014 resultaat van het authenticatieproces. Bevat de gebruikersidentificatie en informatie over hoe en wanneer de gebruiker zich authenticeert. Kan met eigen gegevens worden uitgebreid.<\/li>\n<li><strong>access-token (toegangstoken)<\/strong> \u2014 wordt overgedragen aan de beveiligde API en door deze gebruikt voor autorisatie (toegangstoestemming) tot zijn gegevens.<\/li>\n<li><strong>refresh-token (vernieuwtoken)<\/strong> \u2014 een optionele parameter die de autorisatieserver kan retourneren in reactie op een aanvraag voor een toegangstoken.<\/li>\n<\/ul>\n<p><\/p>\n<p>Laten we nog twee begrippen introduceren:<\/p>\n<p><\/p>\n<p><strong>Authentication Server URL<\/strong> \u2014 het eindpunt voor het verkrijgen van de toegangssleutel. Alle verzoeken voor het verstrekken en vernieuwen van toegangssleutels zullen naar dit URL worden gericht.<\/p>\n<p><\/p>\n<p><strong>Resource URL<\/strong> \u2014 het URL-adres van de beveiligde bron waarmee moet worden omgegaan om toegang te krijgen, waarbij de toegangssleutel in de autorisatieheader wordt doorgegeven.<\/p>\n<p><\/p>\n<h4 id=\"_zapros-klyucha-dostupa_\"><em>Aanvraag voor toegangssleutel<\/em><\/h4>\n<p><\/p>\n<p>Voor de aanvraag van de toegangssleutel doet de client <code>PUT<\/code> een verzoek aan het eindpunt <code>IdentityServer4<\/code> met de volgende 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>en de volgende parameters doorgeeft:<\/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> en <code>), toestemming voor autorisatie van de gebruiker te geven (<\/code> waren hierboven besproken. Laten we de overige parameters behandelen:<\/p>\n<p><\/p>\n<p><strong>. Vervolgens controleert de autorisatieserver de authenticiteit van de client en de gegevens van de eigenaar van de middelen (gebruikersnaam en wachtwoord).<\/strong> \u2014 type van een grant of type autorisatie. Het type autorisatie hangt af van de door de applicatie gebruikte methode voor het aanvragen van autorisatie, evenals van welke typen autorisatie door de API worden ondersteund. In ons geval zal het de waarde hebben <code>password<\/code>, wat volgens de specificatie <code>OAuth 2.0<\/code> overeenkomt met de grant van toegangselementen van de resource-eigenaar (autorisatie per gebruikersnaam en wachtwoord).<\/p>\n<p><\/p>\n<p>Protocol <code>OAuth 2.0<\/code> definieert de volgende soorten grants die vereisen <strong>verplichte interactie met gebruikers<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li><strong>autorisatiecode (authorization code)<\/strong>. Dit is een van de meest voorkomende vormen van autorisatie, aangezien het goed geschikt is voor server-side applicaties, waarbij de broncode van de applicatie en de clientsecret niet toegankelijk zijn voor derden;<\/li>\n<li><strong>impliciet (implicit)<\/strong>. Het impliciete type autorisatie wordt gebruikt door mobiele en webapplicaties, waarbij de vertrouwelijkheid van de clientsecret niet kan worden gegarandeerd;<\/li>\n<\/ul>\n<p><\/p>\n<p>En de types grants die <strong>kunnen worden uitgevoerd zonder interactieve interactie met gebruikers<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li><strong>gegevens van de resource-eigenaar (resource owner)<\/strong>. Dit type autorisatie moet alleen worden gebruikt wanneer de clientapplicatie het vertrouwen van de gebruiker heeft en de gebruiker zich op zijn gemak voelt om zijn gebruikersnaam en wachtwoord in te voeren. Dit type autorisatie moet alleen worden gebruikt wanneer andere opties niet beschikbaar zijn. Dit type autorisatie is handig voor zakelijke klanten die binnen hun systeem al gebruik hebben gemaakt van de gebruikersreferenties en willen overstappen naar <code>OAuth 2.0<\/code>.<\/li>\n<li><strong>klantgegevens<\/strong>. Deze worden gebruikt wanneer een applicatie toegang wil krijgen tot de API. Dit kan bijvoorbeeld nuttig zijn wanneer de applicatie haar eigen registratiedetails op de service of de URI voor omleiding wil bijwerken, of toegang wil krijgen tot andere informatie die is opgeslagen in het account van de applicatie op de service via de API van de service.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>scope<\/strong> \u2014 dit is een optionele parameter. Het definieert de reikwijdte. De toegangstoken, geretourneerd door de server, biedt alleen toegang tot de diensten die binnen deze reikwijdte vallen. Dat wil zeggen, we kunnen meerdere diensten onder \u00e9\u00e9n scope samenvoegen en als de klant een toegangscode voor deze scope ontvangt, krijgt hij toegang tot al deze diensten. De scope kan ook worden gebruikt om de machtigingen te beperken (bijvoorbeeld lees- of schrijfrechten).<\/p>\n<p>Bron: <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\/nl\/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=\"nl_NL\" \/>\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\/nl\/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. Basisconcepten. OpenID Connect, OAuth 2.0 en JWT | ProHoster","description":"Met deze post wil ik een reeks artikelen over IdentityServer4 openen.","canonical_url":"https:\/\/prohoster.info\/nl\/blog\/administrirovanie\/identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"nl_NL","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\/nl\/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\/nl\/wp-json\/wp\/v2\/posts\/71307","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/comments?post=71307"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/posts\/71307\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media\/71308"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/media?parent=71307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/categories?post=71307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/nl\/wp-json\/wp\/v2\/tags?post=71307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}