{"id":902,"date":"2016-09-28T08:12:31","date_gmt":"2016-09-28T08:12:31","guid":{"rendered":"http:\/\/general.sio57.info\/wp\/?p=902"},"modified":"2016-09-28T08:21:01","modified_gmt":"2016-09-28T08:21:01","slug":"ldap-et-active-directory","status":"publish","type":"post","link":"https:\/\/general.sio57.info\/wp\/?p=902","title":{"rendered":"LDAP"},"content":{"rendered":"<h1>Concepts<\/h1>\n<p>Dans le monde de l&rsquo;informatique, un annuaire est un syst\u00e8me de stockage de donn\u00e9es, d\u00e9riv\u00e9 des bases de donn\u00e9es hi\u00e9rarchis\u00e9es, permettant en particulier de conserver les donn\u00e9es p\u00e9rennes, c&rsquo;est-\u00e0-dire les donn\u00e9es n&rsquo;\u00e9tant que peu mises \u00e0 jour (historiquement, sur une base annuelle, d&rsquo;o\u00f9 le nom), comme les coordonn\u00e9es des personnes, des partenaires, des clients et des fournisseurs d&rsquo;une entreprise, les adresses email.<\/p>\n<p>La recherche peut se faire selon de multiples crit\u00e8res et les donn\u00e9es peuvent \u00eatre utilis\u00e9es par des logiciels clients comme des applications serveurs. En outre, certaines versions de service d&rsquo;annuaires savent g\u00e9rer les droits sur les donn\u00e9es mais aussi les services propos\u00e9s sur les machines clientes par une authentification gr\u00e2ce \u00e0 un couple login \/ mot de passe. Aujourd&rsquo;hui ces donn\u00e9es sont centralis\u00e9es sur une ou plusieurs machines et les donn\u00e9es transf\u00e8rent entre les machines via des protocoles r\u00e9seaux.<\/p>\n<p><!--more--><\/p>\n<h2>Diff\u00e9rence entre annuaire et base de donn\u00e9es<\/h2>\n<p>Les annuaires v\u00e9rifient les caract\u00e9ristiques suivantes :<\/p>\n<ul>\n<li>un annuaire est pr\u00e9vu pour \u00eatre plus sollicit\u00e9 en lecture qu&rsquo;en \u00e9criture. Cela signifie qu&rsquo;un annuaire est con\u00e7u pour \u00eatre plus souvent consult\u00e9 que mis \u00e0 jour.<\/li>\n<li>les donn\u00e9es sont stock\u00e9es de mani\u00e8re hi\u00e9rarchique dans l&rsquo;annuaire, tandis que les bases de donn\u00e9es dites \u201crelationnelles\u201d stockent les enregistrements de fa\u00e7on tabulaire.<\/li>\n<li>les annuaires doivent \u00eatre compacts et reposer sur un protocole r\u00e9seau l\u00e9ger<\/li>\n<li>Un annuaire doit comporter des m\u00e9canismes permettant de rechercher facilement une information et d&rsquo;organiser les r\u00e9sultats<\/li>\n<li>les annuaires doivent pouvoir \u00eatre r\u00e9partis. Cela signifie qu&rsquo;un serveur d&rsquo;annuaire doit comporter des m\u00e9canismes permettant de coop\u00e9rer, c&rsquo;est-\u00e0-dire d&rsquo;\u00e9tendre la recherche sur des serveur tiers si jamais aucun enregistrement n&rsquo;est trouv\u00e9<\/li>\n<li>Un annuaire doit \u00eatre capable de g\u00e9rer l&rsquo;authentification des utilisateurs ainsi que les droits de ceux-ci pour la consultation ou la modification de donn\u00e9es<\/li>\n<\/ul>\n<p>Ainsi, un annuaire est g\u00e9n\u00e9ralement une application se basant sur une base de donn\u00e9es afin d&rsquo;y stocker des enregistrements, mais surtout un ensemble de services permettant de retrouver facilement les enregistrements \u00e0 l&rsquo;aide de requ\u00eates simples. Une base de donn\u00e9es par contre n&rsquo;est pas forc\u00e9ment un annuaire\u2026.<\/p>\n<h2>Histoire<\/h2>\n<p>Avant de parler de LDAP il faut parler de son pr\u00e9curseur le protocole X500. Les normes X500 officielles sont d\u00e9finies par le CCITT (CCITT Recommandations of the X500 series : The Directory).<\/p>\n<p>X500 pr\u00e9sente les concepts de base concernant la s\u00e9curit\u00e9, les protocoles de r\u00e9plication de donn\u00e9es, la gestion du sch\u00e9ma d&rsquo;un arbre, etc\u2026<\/p>\n<p>Directory Access Protocol (DAP) est un protocole standard \u00e0 l&rsquo;initiative de ITU-T et de l&rsquo;ISO\u00a0pour acc\u00e9der \u00e0 un service d&rsquo;annuaire X.500.<\/p>\n<h3>LDAP (1993)<\/h3>\n<p>D\u00e9velopp\u00e9 en 1993 par l&rsquo;universit\u00e9 du Michigan, LDAP a \u00e9t\u00e9 initialement con\u00e7u pour \u00eatre une alternative l\u00e9g\u00e8re (d&rsquo;o\u00f9 son nom de Lightweight Directory Access Protocol) pour acc\u00e9der aux annuaires X.500<\/p>\n<p>Aujourd\u2019hui, les travaux sur LDAP sont men\u00e9s au sein d&rsquo;IETF (Internet Engineering Task Force). LDAP en est d\u00e9j\u00e0 \u00e0 sa troisi\u00e8me version du protocole (LDAPv3).<\/p>\n<p>Il existe une RFC pour chaque version de LDAP, constituant un document de r\u00e9f\u00e9rence :<\/p>\n<ul>\n<li><a href=\"http:\/\/www.ietf.org\/rfc\/rfc1487.txt\">RFC 1487<\/a>pour LDAP v.1 standard<\/li>\n<li><a href=\"http:\/\/www.ietf.org\/rfc\/rfc1777.txt\">RFC 1777<\/a>pour LDAP v.2 standard (1994)<\/li>\n<li><a href=\"http:\/\/www.ietf.org\/rfc\/rfc2251.txt\">RFC 2251<\/a>pour LDAP v.3 standard (1997)<\/li>\n<\/ul>\n<h1>Protocole LDAP<\/h1>\n<p>LDAP est un protocole d&rsquo;annuaire standard et extensible. Il fournit :<\/p>\n<ul>\n<li>le protocole permettant d&rsquo;acc\u00e9der \u00e0 l&rsquo;information contenue dans l&rsquo;annuaire,<\/li>\n<li>un mod\u00e8le d&rsquo;information d\u00e9finissant le type de donn\u00e9es contenues dans l&rsquo;annuaire,<\/li>\n<li>un mod\u00e8le de nommage d\u00e9finissant comment l&rsquo;information est organis\u00e9e et r\u00e9f\u00e9renc\u00e9e,<\/li>\n<li>un mod\u00e8le fonctionnel qui d\u00e9finit comment on acc\u00e8de \u00e0 l&rsquo;information ,<\/li>\n<li>un mod\u00e8le de s\u00e9curit\u00e9 qui d\u00e9finit comment donn\u00e9es et acc\u00e8s sont prot\u00e9g\u00e9s,<\/li>\n<li>un mod\u00e8le de duplication qui d\u00e9finit comment la base est r\u00e9partie entre serveurs,<\/li>\n<li>des APIs pour d\u00e9velopper des applications clientes,<\/li>\n<li>LDIF, un format d&rsquo;\u00e9change de donn\u00e9es.<\/li>\n<\/ul>\n<p>Le protocole d\u00e9finit comment s&rsquo;\u00e9tablit la communication client-serveur. Il fournit \u00e0 l&rsquo;utilisateur des commandes pour se connecter ou se d\u00e9connecter, pour rechercher, comparer, cr\u00e9er, modifier ou effacer des entr\u00e9es. Des m\u00e9canismes de chiffrement (SSL\u00a0ou TLS) et d&rsquo;authentification (SASL), coupl\u00e9s \u00e0 des m\u00e9canismes de r\u00e8gles d&rsquo;acc\u00e8s (ACL) permettent de prot\u00e9ger les transactions et l&rsquo;acc\u00e8s aux donn\u00e9es.<\/p>\n<p>Contrairement \u00e0 d&rsquo;autres protocoles d&rsquo;Internet, comme\u00a0HTTP,\u00a0SMTP\u00a0ou NNTP, le dialogue LDAP ne se fait pas en\u00a0ASCII\u00a0mais utilise le format de codage Basic Encoding Rule (BER).<\/p>\n<p>&nbsp;<\/p>\n<h2>Mod\u00e8le d&rsquo;information<\/h2>\n<p>Les serveurs LDAP sont con\u00e7us pour stocker une grande quantit\u00e9 de donn\u00e9es mais de faible volume et pour acc\u00e9der en lecture tr\u00e8s rapidement \u00e0 celles-ci gr\u00e2ce au mod\u00e8le hi\u00e9rarchique.<\/p>\n<h3>Le Directory Information Tree<\/h3>\n<p>Les donn\u00e9es LDAP sont structur\u00e9es dans une arborescence hi\u00e9rarchique qu&rsquo;on peut comparer au syst\u00e8me de fichier Unix. Cet arbre (qui correpond \u00e0 la d\u00e9finition math\u00e9matique du terme) est appel\u00e9\u00a0<em>Directory Information Tree<\/em>\u00a0(DIT) et comporte une racine ou suffixe.<\/p>\n<p>Chaque n\u0153ud de l&rsquo;arbre correspond \u00e0 une entr\u00e9e de l&rsquo;annuaire ou\u00a0<em>directory service entry<\/em>\u00a0(DSE). Le sch\u00e9ma suivant donne un exemple d&rsquo;arborescence :<\/p>\n<p>dc=org<br \/>\n|<br \/>\ndc=example<br \/>\n\/\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 \\<br \/>\nou=people\u00a0\u00a0\u00a0\u00a0 ou=groups<br \/>\n|\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 |<br \/>\nuid=john\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 cn=dev<\/p>\n<p>Ce mod\u00e8le est en fait repris de X500, mais contrairement \u00e0 ce dernier, con\u00e7u pour rendre un service d&rsquo;annuaire mondial (ce que le\u00a0DNS\u00a0fait par exemple pour les noms de machines de l&rsquo;Internet), l&rsquo;espace de nommage d&rsquo;un annuaire LDAP n&rsquo;est pas inscrit dans un contexte global.<\/p>\n<p>Les entr\u00e9es correspondent \u00e0 des objets abstraits ou issus du monde r\u00e9el, comme une personne, une imprimante, ou des param\u00e8tres de configuration. Elles contiennent un certain nombre de champs appel\u00e9s attributs dans lesquelles sont stock\u00e9es des valeurs. Chaque serveur poss\u00e8de une entr\u00e9e sp\u00e9ciale, appel\u00e9e root directory specific entry (rootDSE) qui contient la description de l&rsquo;arbre et de son contenu.<\/p>\n<h3>Le sch\u00e9ma<\/h3>\n<p>L&rsquo;ensemble des d\u00e9finitions relatives aux objets que sait g\u00e9rer un serveur LDAP s&rsquo;appelle le sch\u00e9ma. Le sch\u00e9ma d\u00e9crit les classes d&rsquo;objets, leurs types d&rsquo;attributs et leur syntaxe.<\/p>\n<p>Il existe deux objets abstraits particuliers : les aliases et les referrals qui permettent \u00e0 une entr\u00e9e de l&rsquo;annuaire de pointer vers une autre entr\u00e9e du m\u00eame ou d&rsquo;un autre annuaire. L&rsquo;attribut aliasObjectName de l&rsquo;objet alias a pour valeur le DN de l&rsquo;entr\u00e9e point\u00e9e. L&rsquo;attribut ref de l&rsquo;objet referral a pour valeur l&rsquo;URL\u00a0LDAP de l&rsquo;entr\u00e9e d\u00e9sign\u00e9e.<\/p>\n<h3>Les attributs<\/h3>\n<p>Une entr\u00e9e de l&rsquo;annuaire contient une suite de couples types d&rsquo;attributs &#8211; valeurs d&rsquo;attributs. Les attributs sont caract\u00e9ris\u00e9s par :<\/p>\n<ul>\n<li>Un nom qui l&rsquo;identifie<\/li>\n<li>Un Object Identifier (OID) qui l&rsquo;identifie \u00e9galement<\/li>\n<li>S&rsquo;il est mono ou multi-valu\u00e9<\/li>\n<li>Une syntaxe et des r\u00e8gles de comparaison<\/li>\n<li>Un indicateur d&rsquo;usage<\/li>\n<li>Un format ou une limite de taille de valeur qui lui est associ\u00e9e<\/li>\n<\/ul>\n<p>Les attributs d\u00e9crivent g\u00e9n\u00e9ralement des caract\u00e9ristiques de l&rsquo;objet, ce sont des attributs dits normaux qui sont accessibles aux utilisateurs. Mais <em>d&rsquo;autres attributs sont dits op\u00e9rationnels car ils ne servent qu&rsquo;au serveur pour administrer les donn\u00e9es<\/em>.<\/p>\n<p>La syntaxe indique le type de donn\u00e9es associ\u00e9es \u00e0 l&rsquo;attribut et la mani\u00e8re dont l&rsquo;annuaire doit comparer les valeurs lors d&rsquo;une recherche.<\/p>\n<p>Certains serveurs LDAP respectent les standards X500 de hi\u00e9rarchisation des attributs, qui permettent de d\u00e9crire un attribut comme \u00e9tant un sous-type d&rsquo;un attribut super-type et d&rsquo;h\u00e9riter ainsi de ses caract\u00e9ristiques. Ces attributs super-types peuvent \u00eatre utilis\u00e9s comme crit\u00e8re de recherche g\u00e9n\u00e9rique qui porte sur tous ses sous attributs.<\/p>\n<h3>Les OIDs<\/h3>\n<p>(m\u00eame principe que dans SNMP)<\/p>\n<p>Les objets et leurs attributs sont normalis\u00e9s par le RFC2256 (<a href=\"http:\/\/www.ietf.org\/rfc\/rfc2256.txt\">http:\/\/www.ietf.org\/rfc\/rfc2256.txt<\/a>) de sorte \u00e0 assurer l&rsquo;interop\u00e9rabilit\u00e9 entre les logiciels. Ils sont issus du sch\u00e9ma de X500, plus des ajouts du standard LDAP ou d\u2019autres consortiums industriels. Ils sont tous r\u00e9f\u00e9renc\u00e9s par un object identifier (OID) unique dont la liste est tenue \u00e0 jour par l&rsquo;Internet Assigned Numbers Authority (IANA). Il est possible de modifier le sch\u00e9ma en rajoutant des attributs \u00e0 un objet (d\u00e9conseill\u00e9) ou en cr\u00e9ant un nouvel objet (mieux) et d&rsquo;obtenir un OID pour cet objet aupr\u00e8s de l&rsquo;IANA (encore mieux).<\/p>\n<p>Un OID est une s\u00e9quence de nombres entiers s\u00e9par\u00e9s par des points. Les OID sont allou\u00e9s de mani\u00e8re hi\u00e9rarchique de telle mani\u00e8re que seule l&rsquo;autorit\u00e9 qui a d\u00e9l\u00e9gation sur la hi\u00e9rachie \u201c1.2.3\u201d peut d\u00e9finir la signification de l&rsquo;objet \u201c1.2.3.4\u201d.<\/p>\n<h3>Le Distinguish Name<\/h3>\n<p>Chaque entr\u00e9e est r\u00e9f\u00e9renc\u00e9e de mani\u00e8re unique dans le DIT par son\u00a0<em>distinguished name<\/em>\u00a0(DN). Le DN repr\u00e9sente le nom de l&rsquo;entr\u00e9e sous la forme du chemin d&rsquo;acc\u00e8s \u00e0 celle-ci depuis le sommet de l&rsquo;arbre. On peut comparer le DN au path d&rsquo;un fichier Unix. Par exemple, le DN de John correspondant \u00e0 l&rsquo;arbre donn\u00e9 pr\u00e9c\u00e9demment en exemple est :<\/p>\n<p>uid=john,ou=people,dc=example,dc=org<\/p>\n<p>Le DN repr\u00e9sente le chemin absolu d&rsquo;acc\u00e8s \u00e0 l&rsquo;entr\u00e9e. Comme pour le syst\u00e8me de fichier Unix, on peut utiliser un relative distinguished names (RDNs) pour d\u00e9signer l&rsquo;entr\u00e9e depuis une position d\u00e9termin\u00e9e de l&rsquo;arbre. Par exemple, \u00e0 partir de la position dc=example, dc=org de la figure 1, on peut employer les RDNs suivants :<\/p>\n<p>ou=people<br \/>\nou=groups<br \/>\ncn=dev,ou=groups<br \/>\nuid=john, ou=people<\/p>\n<p>&nbsp;<\/p>\n<h3>LDIF<\/h3>\n<p>LDAP Data Interchange Format (LDIF) permet de repr\u00e9senter les donn\u00e9es LDAP sous format texte standardis\u00e9, il est utilis\u00e9 pour afficher ou modifier les donn\u00e9es de la base. Il a vocation \u00e0 donner une lisibilit\u00e9 des donn\u00e9es pour le commun des mortels.<\/p>\n<p>LDIF est utilis\u00e9 dans deux optiques :<\/p>\n<ul>\n<li>faire des imports\/exports de base<\/li>\n<li>faire des modifications sur des entr\u00e9es.<\/li>\n<\/ul>\n<p>La syntaxe est un nom d&rsquo;attribut suivi de : suivi de la valeur (uid: john), le premier attribut d&rsquo;une entr\u00e9e \u00e9tant le DN (dn: uid=john,ou=people,dc=example,dc=org). Le format utilis\u00e9 est l&rsquo;ASCII, les donn\u00e9es binaires \u00e9tant cod\u00e9s en base 64.<\/p>\n<h2>Mod\u00e8le fonctionnel<\/h2>\n<h3>Op\u00e9rations de base<\/h3>\n<p>Les op\u00e9rations de base permettent d&rsquo;acc\u00e9der au serveur ou de modifier la structure de l&rsquo;arbre et\/ou les entr\u00e9es de l&rsquo;annuaire. Elles jouent un r\u00f4le analogue aux commandes de manipulation de fichiers d&rsquo;Unix (cp, mv, rm\u2026).<\/p>\n<ul>\n<li><em>Search<\/em>: recherche dans l&rsquo;annuaire d&rsquo;objets \u00e0 partir de crit\u00e8res<\/li>\n<li><em>Compare<\/em>: comparaison du contenu de deux objets<\/li>\n<li><em>Add<\/em>: ajout d&rsquo;une entr\u00e9e<\/li>\n<li><em>Modify<\/em>: modification du contenu d&rsquo;une entr\u00e9e<\/li>\n<li><em>Delete<\/em>: suppression d&rsquo;un objet<\/li>\n<li><em>Rename (Modify DN)<\/em>: modification du DN d&rsquo;une entr\u00e9e<\/li>\n<li><em>Bind<\/em>: connexion au serveur<\/li>\n<li><em>Unbind<\/em>: d\u00e9connexion<\/li>\n<li><em>Abandon<\/em>: abandon d&rsquo;une op\u00e9ration en cours<\/li>\n<li><em>Extended<\/em>: op\u00e9rations \u00e9tendues (v3)<\/li>\n<\/ul>\n<p>Les commandes\u00a0<em>search<\/em>\u00a0et\u00a0<em>compare<\/em>\u00a0se font sous la forme d&rsquo;une requ\u00eate compos\u00e9e de 8 param\u00e8tres :<\/p>\n<ul>\n<li><em>base object<\/em>: endroit de l&rsquo;arbre o\u00f9 doit commencer la recherche<\/li>\n<li><em>scope<\/em>: la profondeur de la recherche<\/li>\n<li><em>derefAliases<\/em>: si on suit les liens ou pas<\/li>\n<li><em>size limit<\/em>: nombre de r\u00e9ponses limite<\/li>\n<li><em>time limit<\/em>: temps maxi allou\u00e9 pour la recherche<\/li>\n<li><em>attrOnly<\/em>: renvoie ou pas la valeur des attributs en plus de leur type<\/li>\n<li><em>search filter<\/em>: le filtre de recherche<\/li>\n<li><em>list of attributes<\/em>: la liste des attributs que l&rsquo;on souhaite connaitre<\/li>\n<\/ul>\n<p>Il n&rsquo;existe pas de fonction read dans LDAP. Cette fonction est simul\u00e9e par la fonction search avec un search scope \u00e9gal \u00e0 base.<\/p>\n<p>Le filtre de recherche s&rsquo;exprime suivant une syntaxe sp\u00e9cifique dont la forme g\u00e9n\u00e9rale est :<\/p>\n<p>(&lt; operator(&lt; search operation)(&lt; search operation)&#8230;))<\/p>\n<p>Ce filtre d\u00e9crit une ou plusieurs conditions exprim\u00e9es sous forme d&rsquo;expressions r\u00e9guli\u00e8res sens\u00e9es d\u00e9signer un ou plusieurs objets de l&rsquo;annuaire, sur lesquels on veut appliquer l&rsquo;op\u00e9ration voulue. Les op\u00e9rateurs de recherche disponibles sont<\/p>\n<ul>\n<li>\u00c9galit\u00e9 : =<\/li>\n<li>Approximation : ~=<\/li>\n<li>Comparaison = &lt;, &gt;, &lt;=, &gt;=<\/li>\n<li>Pr\u00e9sence : =*<\/li>\n<li>Sous-cha\u00eene : *<em>&lt;expression&gt;<\/em>*<\/li>\n<li>ET, OU : (&amp;(&lt;expression&gt;) (&lt;expression&gt;))<\/li>\n<li>N\u00e9gation : !(&lt;expression&gt;)<\/li>\n<\/ul>\n<p>A lire Active Directory<\/p>\n<h1><\/h1>\n","protected":false},"excerpt":{"rendered":"<p>Concepts Dans le monde de l&rsquo;informatique, un annuaire est un syst\u00e8me de stockage de donn\u00e9es, d\u00e9riv\u00e9 des bases de donn\u00e9es hi\u00e9rarchis\u00e9es, permettant en particulier de conserver les donn\u00e9es p\u00e9rennes, c&rsquo;est-\u00e0-dire les donn\u00e9es n&rsquo;\u00e9tant que peu mises \u00e0 jour (historiquement, sur une base annuelle, d&rsquo;o\u00f9 le nom), comme les coordonn\u00e9es des personnes, des partenaires, des clients [&hellip;]<\/p>\n","protected":false},"author":4,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[59,71,25,40,39],"tags":[122],"class_list":["post-902","post","type-post","status-publish","format-standard","hentry","category-7-application","category-7-application-supervision","category-cours","category-sisr4","category-windows","tag-ldap"],"_links":{"self":[{"href":"https:\/\/general.sio57.info\/wp\/index.php?rest_route=\/wp\/v2\/posts\/902","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/general.sio57.info\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/general.sio57.info\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/general.sio57.info\/wp\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/general.sio57.info\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=902"}],"version-history":[{"count":3,"href":"https:\/\/general.sio57.info\/wp\/index.php?rest_route=\/wp\/v2\/posts\/902\/revisions"}],"predecessor-version":[{"id":908,"href":"https:\/\/general.sio57.info\/wp\/index.php?rest_route=\/wp\/v2\/posts\/902\/revisions\/908"}],"wp:attachment":[{"href":"https:\/\/general.sio57.info\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=902"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/general.sio57.info\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=902"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/general.sio57.info\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=902"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}