{"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\/fr\/blog\/administrirovanie\/identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt","title":{"rendered":"IdentityServer4. Concepts de base. OpenID Connect, OAuth 2.0 et JWT","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Avec cet article, je souhaite ouvrir une s\u00e9rie d'articles d\u00e9di\u00e9s \u00e0 IdentityServer4. Nous commencerons par les concepts de base.<\/p>\n<p><\/p>\n<p>Le protocole d'authentification le plus prometteur actuellement est <noindex><a rel=\"nofollow\" href=\"https:\/\/openid.net\/connect\/\">OpenID Connect<\/a><\/noindex>, et le protocole d'autorisation (d'acc\u00e8s) est <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> met en \u0153uvre ces deux protocoles. Il est optimis\u00e9 pour r\u00e9soudre <strong>des probl\u00e8mes typiques<\/strong> de s\u00e9curit\u00e9.<\/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 c'est un protocole et une norme d'authentification, il ne donne pas acc\u00e8s aux ressources (Web API), mais \u00e9tant donn\u00e9 qu'il est d\u00e9velopp\u00e9 au-dessus du protocole d'autorisation <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/OAuth#OAuth_2.0\">OAuth 2.0<\/a><\/noindex>, il permet d'obtenir les param\u00e8tres du profil utilisateur comme si vous aviez acc\u00e8s \u00e0 la ressource <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) est une norme web qui d\u00e9finit comment transmettre des donn\u00e9es utilisateur au format JSON de mani\u00e8re s\u00e9curis\u00e9e.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/tools.ietf.org\/html\/rfc6749\">OAuth 2.0 (RFC 6749)<\/a><\/noindex> \u2014 est un protocole et une norme d'autorisation. Il permet aux applications d'acc\u00e9der \u00e0 des ressources prot\u00e9g\u00e9es, par exemple, des Web API.<\/p><\/blockquote>\n<p>Examinons le diagramme d'acc\u00e8s \u00e0 une ressource prot\u00e9g\u00e9e et comprenons les principales \u00e9tapes et la terminologie accept\u00e9e :<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"IdentityServer4. Concepts de base. OpenID Connect, OAuth 2.0 et 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>Le client demande \u00e0 l'utilisateur la permission de s'authentifier en son nom. <strong>Client<\/strong> \u2014 c'est l'application cliente qui acc\u00e8de aux ressources prot\u00e9g\u00e9es au nom du propri\u00e9taire des ressources. <strong>Ressource<\/strong> \u2014 ce sont tous nos services prot\u00e9g\u00e9s <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>L'utilisateur permet \u00e0 l'application cliente de s'authentifier en son nom, par exemple, en saisissant son identifiant et son mot de passe. L'identifiant et le mot de passe serviront de donneurs d'autorisation pour l'application cliente. <strong>Utilisateur (propri\u00e9taire de la ressource)<\/strong> \u2014 un programme ou une personne qui peut accorder l'acc\u00e8s aux ressources prot\u00e9g\u00e9es, par exemple, en saisissant un identifiant (username) et un mot de passe (password) ;<\/p>\n<p>\n<\/li>\n<li>\n<p>L'application cliente demande un jeton d'acc\u00e8s \u00e0 <code>IdentityServer4<\/code> en fournissant des informations sur elle-m\u00eame (<code>client_id<\/code>, <code>client_secret<\/code>), en fournissant la permission d'autorisation de l'utilisateur (<code>username<\/code>, <code>password<\/code>) et en fournissant <code>grant_type<\/code> et <code>scope<\/code>. Ensuite, le serveur d'autorisation v\u00e9rifie l'authenticit\u00e9 du client et les identifiants du propri\u00e9taire de la ressource (identifiant et mot de passe). <\/p>\n<p><\/p>\n<blockquote><p>Le protocole OAuth 2.0 authentifie non seulement l'utilisateur, mais aussi l'application cliente acc\u00e9dant aux ressources. Pour cela, le protocole pr\u00e9voit des param\u00e8tres tels que <strong>client_id<\/strong> et <strong>client_secret<\/strong>.<br \/>\n<strong>client_id<\/strong> \u2014 c'est l'identifiant de l'application cliente, utilis\u00e9 <code>IdentityServer4<\/code> pour rechercher des informations sur le client.<br \/>\n<strong>client_secret<\/strong> est l'\u00e9quivalent d'un mot de passe pour l'application cliente et est utilis\u00e9 pour l'authentification de l'application cliente sur <code>IdentityServer4<\/code>. <strong>Le secret du client doit \u00eatre connu uniquement de l'application et de l'API<\/strong>. Au regard de ce qui pr\u00e9c\u00e8de, nous concluons que <strong>IdentityServer4 doit conna\u00eetre ses clients<\/strong>.<\/p><\/blockquote>\n<p>\n<\/li>\n<li>\n<p>Si l'authenticit\u00e9 de l'application est confirm\u00e9e et si la permission d'autorisation est valide, <code>IdentiryServer4<\/code> g\u00e9n\u00e8re <code>un token d'acc\u00e8s<\/code> (access token) pour l'application et un jeton de renouvellement facultatif (<code>refresh-token<\/code>). Le processus d'autorisation est termin\u00e9. Si la demande est invalide ou non autoris\u00e9e, le serveur d'autorisation renvoie un code avec un message d'erreur appropri\u00e9.<\/p>\n<p>\n<\/li>\n<li>\n<p>L'application cliente demande des donn\u00e9es \u00e0 l'API Web prot\u00e9g\u00e9e, en fournissant le token d'acc\u00e8s pour l'autorisation. Si le code de r\u00e9ponse du serveur de ressources <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> ou <noindex><a rel=\"nofollow\" href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_HTTP_status_codes\">498<\/a><\/noindex>, alors le token d'acc\u00e8s utilis\u00e9 pour l'authentification est invalide ou expir\u00e9.<\/p>\n<p>\n<\/li>\n<li>\n<p>Si le token est valide, <code>Web API<\/code> il fournit les donn\u00e9es \u00e0 l'application.<\/p>\n<p>\n<\/li>\n<\/ol>\n<p><\/p>\n<h4 id=\"_tipy-tokenov_\"><em>Types de tokens<\/em><\/h4>\n<p><\/p>\n<p>Aux clients enregistr\u00e9s il est permis de demander <code>IdentityServer4<\/code> un identity-token, <code>IdentityServer4<\/code> <code>identity<\/code>-token, <code>un access<\/code>-token et <code>un refresh<\/code>-token.<\/p>\n<p><\/p>\n<ul>\n<li><strong>identity-token (token d'identification)<\/strong> \u2014 r\u00e9sultat du processus d'authentification. Il contient l'identifiant de l'utilisateur et des informations sur la mani\u00e8re et le moment o\u00f9 l'utilisateur s'authentifie. Peut \u00eatre enrichi avec vos propres donn\u00e9es.<\/li>\n<li><strong>access-token (token d'acc\u00e8s)<\/strong> \u2014 est transmis \u00e0 l'API prot\u00e9g\u00e9e et utilis\u00e9 par celle-ci pour l'autorisation (permission d'acc\u00e8s) \u00e0 ses donn\u00e9es.<\/li>\n<li><strong>refresh-token (token de renouvellement)<\/strong> \u2014 un param\u00e8tre optionnel que le serveur d'autorisation peut renvoyer en r\u00e9ponse \u00e0 la demande du token d'acc\u00e8s.<\/li>\n<\/ul>\n<p><\/p>\n<p>Introduisons encore deux concepts :<\/p>\n<p><\/p>\n<p><strong>Authenticatation Server Url<\/strong> \u2014 point final pour obtenir la cl\u00e9 d'acc\u00e8s. Toutes les demandes d'octroi et de renouvellement des cl\u00e9s d'acc\u00e8s seront dirig\u00e9es vers cette URL.<\/p>\n<p><\/p>\n<p><strong>Resource Url<\/strong> \u2014 URL du recurso prot\u00e9g\u00e9 auquel il faut acc\u00e9der, en transmettant la cl\u00e9 d'acc\u00e8s dans l'en-t\u00eate d'autorisation.<\/p>\n<p><\/p>\n<h4 id=\"_zapros-klyucha-dostupa_\"><em>Demande de cl\u00e9 d'acc\u00e8s<\/em><\/h4>\n<p><\/p>\n<p>Pour demander la cl\u00e9 d'acc\u00e8s, le client effectue un <code>POST<\/code> requ\u00eate au point final <code>IdentityServer4<\/code> avec l'en-t\u00eate suivant<\/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>et en transmettant les param\u00e8tres suivants :<\/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> et <code>client_secret<\/code> ont \u00e9t\u00e9 discut\u00e9s ci-dessus. Analyserons les autres param\u00e8tres :<\/p>\n<p><\/p>\n<p><strong>grant_type<\/strong> \u2014 type de grant ou type de permission d'autorisation. Le type de permission d'autorisation d\u00e9pend de la m\u00e9thode de demande d'autorisation utilis\u00e9e par l'application, ainsi que des types de permissions pris en charge par l'API. Dans notre cas, il aura la valeur <code>password<\/code>, ce qui conform\u00e9ment \u00e0 la sp\u00e9cification <code>OAuth 2.0<\/code> correspond au grant de credentials d'acc\u00e8s du propri\u00e9taire de la ressource (authentification par identifiant et mot de passe).<\/p>\n<p><\/p>\n<p>Protocole <code>OAuth 2.0<\/code> d\u00e9finit les types de grants suivants n\u00e9cessitant <strong>une interaction obligatoire avec les utilisateurs<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li><strong>code d'autorisation (authorization code)<\/strong>. C'est l'un des types de permission d'autorisation les plus r\u00e9pandus, car il convient bien aux applications c\u00f4t\u00e9 serveur, o\u00f9 le code source de l'application et le secret client ne sont pas accessibles aux tiers;<\/li>\n<li><strong>implicite (implicit)<\/strong>. Le type implicite de permission d'autorisation est utilis\u00e9 par des applications mobiles et web, o\u00f9 la confidentialit\u00e9 du secret client ne peut pas \u00eatre garantie;<\/li>\n<\/ul>\n<p><\/p>\n<p>Et les types de grants qui <strong>peuvent \u00eatre ex\u00e9cut\u00e9s sans interaction active avec les utilisateurs<\/strong>:<\/p>\n<p><\/p>\n<ul>\n<li><strong>credentials du propri\u00e9taire de la ressource (resource owner)<\/strong>. Ce type d'autorisation ne doit \u00eatre utilis\u00e9 que lorsque l'application cliente jouit de la confiance de l'utilisateur et que l'utilisateur est \u00e0 l'aise avec la saisie de son identifiant et de son mot de passe. Ce type d'autorisation doit \u00eatre utilis\u00e9 uniquement lorsque d'autres options ne sont pas disponibles. Ce type d'autorisation est pratique pour les clients d'entreprise qui ont d\u00e9j\u00e0 utilis\u00e9 les identifiants de l'utilisateur dans leur syst\u00e8me et souhaitent passer \u00e0 <code>OAuth 2.0<\/code>.<\/li>\n<li><strong>les identifiants du client<\/strong>. Ils sont utilis\u00e9s lorsque l'application acc\u00e8de \u00e0 l'API. Cela peut \u00eatre utile, par exemple, lorsque l'application souhaite mettre \u00e0 jour ses propres informations d'enregistrement sur le service ou l'URI de redirection, ou acc\u00e9der \u00e0 d'autres informations stock\u00e9es dans le compte de l'application sur le service, via l'API du service.<\/li>\n<\/ul>\n<p><\/p>\n<p><strong>scope<\/strong> \u2014 c'est un param\u00e8tre facultatif. Il d\u00e9finit la port\u00e9e. Le jeton d'acc\u00e8s renvoy\u00e9 par le serveur garantira l'acc\u00e8s uniquement aux services qui entrent dans cette port\u00e9e. Autrement dit, nous pouvons regrouper plusieurs services sous une seule port\u00e9e et si le client obtient la cl\u00e9 d'acc\u00e8s \u00e0 cette port\u00e9e, il obtient acc\u00e8s \u00e0 tous ces services. La port\u00e9e peut \u00e9galement \u00eatre utilis\u00e9e pour limiter les droits d'autorisation (par exemple, acc\u00e8s en lecture ou en \u00e9criture)<\/p>\n<p>Source : <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\/fr\/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=\"fr_FR\" \/>\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\/fr\/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. Concepts de base. OpenID Connect, OAuth 2.0 et JWT | ProHoster","description":"Dans ce post, je souhaite ouvrir une s\u00e9rie d'articles consacr\u00e9s \u00e0 IdentityServer4.","canonical_url":"https:\/\/prohoster.info\/fr\/blog\/administrirovanie\/identityserver4-osnovnye-ponyatiya-openid-connect-oauth-2-0-i-jwt","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"fr_FR","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\/fr\/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\/fr\/wp-json\/wp\/v2\/posts\/71307","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/comments?post=71307"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/posts\/71307\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media\/71308"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/media?parent=71307"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/categories?post=71307"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/fr\/wp-json\/wp\/v2\/tags?post=71307"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}