{"id":36104,"date":"2024-08-21T13:59:19","date_gmt":"2024-08-21T12:59:19","guid":{"rendered":"https:\/\/developers.ila.cegid.com\/valuekeep\/\/"},"modified":"2024-12-20T18:46:11","modified_gmt":"2024-12-20T17:46:11","slug":"26204","status":"publish","type":"valuekeep","link":"https:\/\/developers.ila.cegid.com\/es\/valuekeep\/documentacion-api-es\/web-api-es\/article\/26204","title":{"rendered":"\u00bfC\u00f3mo funciona la autorizaci\u00f3n OAUTH 2.0?"},"content":{"rendered":"<section class=\"av_textblock_section \"  itemscope=\"itemscope\" itemtype=\"https:\/\/schema.org\/CreativeWork\" ><div class='avia_textblock  '   itemprop=\"text\" ><p class=\"MsoNormal\"><span lang=\"ES\" style=\"font-size: 11.5pt; line-height: 107%; color: #333333;\">El OAuth 2.0 es un protocolo est\u00e1ndar de autorizaci\u00f3n que permite que aplicaciones accedan de modo limitado a la cuenta de un usuario en un servicio Web (HTTP), como la Web API Valuekeep CMMS.<\/span><\/p>\n<p class=\"MsoNormal\"><span lang=\"ES\" style=\"font-size: 11.5pt; line-height: 107%; color: #333333;\">El protocolo delega la autenticaci\u00f3n del usuario al servicio que detiene la cuenta del usuario y autoriza el acceso de aplicaciones externas a esta cuenta del usuario. El protocolo ofrece flujos de autorizaci\u00f3n para aplicaciones Web, aplicaciones de escritorio y aplicaciones mobile.<\/span><\/p>\n<p class=\"MsoNormal\"><span lang=\"ES\" style=\"font-size: 11.5pt; line-height: 107%; color: #333333;\">A continuaci\u00f3n, se describe el funcionamiento b\u00e1sico del protocolo en la perspectiva del desarrollador de una aplicaci\u00f3n.<\/span><\/p>\n<h2 id=\"OAuth_Roles\" class=\"toc_anchors\" style=\"margin: 12pt 0in 12pt 0in;\"><a rel=\"noopener noreferrer\" name=\"_Toc63678393\"><\/a><span lang=\"ES\" style=\"color: #333333;\">OAuth Roles<\/span><\/h2>\n<p class=\"MsoNormal\"><span lang=\"ES\" style=\"font-size: 11.5pt; line-height: 107%; color: #333333;\">El protocolo define 4 roles (perfiles):<\/span><\/p>\n<p class=\"sty6gk1zlcls\" style=\"text-indent: -0.25in; margin: 0in 0in 0in 0.5in;\"><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">1.<span style=\"font: 7pt 'Times New Roman';\">\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><b><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">Resource owner<\/span><\/b><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">: es el usuario que autoriza el acceso de la aplicaci\u00f3n a su cuenta. Este acceso es limitado al \u00e1mbito de la<br \/>\nautorizaci\u00f3n concedida por el usuario.<\/span><\/p>\n<p class=\"styjx3rgbcls\" style=\"text-indent: -0.25in; margin: 0in 0in 0in 0.5in;\"><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">2.<span style=\"font: 7pt 'Times New Roman';\">\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><b><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">Client<\/span><\/b><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">: es la aplicaci\u00f3n que desea acceder a la cuenta del usuario.<\/span><\/p>\n<p class=\"stycgaj2qcls\" style=\"text-indent: -0.25in; margin: 0in 0in 0in 0.5in;\"><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">3.<span style=\"font: 7pt 'Times New Roman';\">\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><b><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">Resource server<\/span><\/b><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">: corresponde al servidor que aloja las cuentas del usuario.<\/span><\/p>\n<p class=\"styqrjciicls\" style=\"text-indent: -0.25in; margin: 0in 0in 0in 0.5in;\"><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">4.<span style=\"font: 7pt 'Times New Roman';\">\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><b><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">Authorization server<\/span><\/b><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">: es el servidor que comprueba la identidad del usuario y asigna tokens de autorizaci\u00f3n al cliente (la<br \/>\naplicaci\u00f3n).<\/span><\/p>\n<p class=\"MsoNormal\"><span lang=\"ES\" style=\"font-size: 11.5pt; line-height: 107%; color: #333333;\">Del punto de vista del desarrollador de una aplicaci\u00f3n, la Web API que desea consumir cumple el perfil de resource server y el de<br \/>\nauthorization server. Por ello, suele combinarse los dos perfiles y llamarle Service (servicio) o simplemente API.<\/span><\/p>\n<h2 id=\"Flujo_genricode_autorizacin\" class=\"toc_anchors\" style=\"margin: 12pt 0in 12pt 0in;\"><a rel=\"noopener noreferrer\" name=\"_Toc63678394\"><\/a><span lang=\"ES\" style=\"color: #333333;\">Flujo gen\u00e9rico de autorizaci\u00f3n<\/span><\/h2>\n<p class=\"MsoNormal\"><span lang=\"ES\" style=\"font-size: 11.5pt; line-height: 107%; color: #333333;\">T\u00edpicamente el flujo de autorizaci\u00f3n de una aplicaci\u00f3n externa<br \/>\nsigue los siguientes pasos:<\/span><\/p>\n<p class=\"sty8nrjabcls\" style=\"text-indent: -0.25in; margin: 0in 0in 0in 0.5in;\"><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">1.<span style=\"font: 7pt 'Times New Roman';\">\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">La aplicaci\u00f3n pide autorizaci\u00f3n para acceder a los recursos del usuario.<\/span><\/p>\n<p class=\"styi6kilscls\" style=\"text-indent: -0.25in; margin: 0in 0in 0in 0.5in;\"><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">2.<span style=\"font: 7pt 'Times New Roman';\">\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">Si el usuario ya ha autorizado la solicitud, la aplicaci\u00f3n recibe un authorization grant.<\/span><\/p>\n<p class=\"stynlpth5cls\" style=\"text-indent: -0.25in; margin: 0in 0in 0in 0.5in;\"><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">3.<span style=\"font: 7pt 'Times New Roman';\">\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">La aplicaci\u00f3n pide al authorization server un access token, presentando la identidad del usuario y el authorization grant.<\/span><\/p>\n<p class=\"styl19bnacls\" style=\"text-indent: -0.25in; margin: 0in 0in 0in 0.5in;\"><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">4.<span style=\"font: 7pt 'Times New Roman';\">\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">Si la identidad de la aplicaci\u00f3n est\u00e1 autenticada y el authorization grant es v\u00e1lido, el authorization server asignar\u00e1 un access token a la aplicaci\u00f3n y el flujo de autorizaci\u00f3n es finalizado.<\/span><\/p>\n<p class=\"stygndr6qcls\" style=\"text-indent: -0.25in; margin: 0in 0in 0in 0.5in;\"><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">5.<span style=\"font: 7pt 'Times New Roman';\">\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">La aplicaci\u00f3n pide un recurso espec\u00edfico al resource server y presenta el access token que obtuve anteriormente.<\/span><\/p>\n<p class=\"sty49d4kqcls\" style=\"text-indent: -0.25in; margin: 0in 0in 0in 0.5in;\"><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">6.<span style=\"font: 7pt 'Times New Roman';\">\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">Si el access token es v\u00e1lido, el resource server devolver\u00e1 el recurso pedido a la aplicaci\u00f3n.<\/span><\/p>\n<p class=\"sty0o6u1lcls\" style=\"text-indent: -0.25in; margin: 0in 0in 0in 0.5in;\"><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">7.<span style=\"font: 7pt 'Times New Roman';\">\u00a0\u00a0\u00a0\u00a0\u00a0 <\/span><\/span><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">En realidad, el flujo real de autenticaci\u00f3n depende del tipo de authorization grant usado, sin embargo, este es el flujo conceptual normal del OAuth. A continuaci\u00f3n, se discuten los diversos authorization grants disponibles.<\/span><\/p>\n<h2 id=\"AuthorizationGrant_Client_credentials_grant\" class=\"toc_anchors\" style=\"margin: 12pt 0in 12pt 0in;\"><a rel=\"noopener noreferrer\" name=\"_Toc63678395\"><\/a><span lang=\"ES\" style=\"color: #333333;\">Authorization Grant: Client credentials grant<\/span><\/h2>\n<p class=\"MsoNormal\"><span lang=\"ES\" style=\"font-size: 11.5pt; line-height: 107%; color: #333333;\">El tipo de grant usado depende del m\u00e9todo de autorizaci\u00f3n que la aplicaci\u00f3n desea usar y, por supuesto, de los m\u00e9todos soportados por la Web API. Para trabajar con la Web API del Valuekeep CMMS deben usar el m\u00e9todo de autorizaci\u00f3n Client Credentials.<\/span><\/p>\n<h2 id=\"Refresh_Token\" class=\"toc_anchors\" style=\"margin: 12pt 0in 12pt 0in;\"><a rel=\"noopener noreferrer\" name=\"_Toc63678396\"><\/a><span lang=\"ES\" style=\"color: #333333;\">Refresh Token<\/span><\/h2>\n<p class=\"MsoNormal\"><span class=\"size\"><span lang=\"ES\" style=\"color: #333333;\">Cuando un access token expira, su uso para realizar solicitudes a la API resultar\u00e1 en el error \u201cInvalid Token Error\u201d. En este momento, si un refresh token se ha incluido al generar el access token, puede ser usado para hacer un nuevo token de acceso al servidor.<\/span><\/span><\/p>\n<p class=\"MsoNormal\"><span class=\"size\"><span lang=\"ES\" style=\"color: #333333;\">Ejemplo de una solicitud de ese tipo:<\/span><\/span><\/p>\n<div style=\"border: none; border-left: solid #cccccc 1.5pt; padding: 0in 0in 0in 2pt; background: whitesmoke; margin-left: 18.75pt; margin-right: 0.75pt;\">\n<p class=\"styl9ogsrcls\" style=\"text-indent: -0.25in; background: whitesmoke; border: none; padding: 0in; margin: 0.75pt 0in 0.75pt 0.25in;\"><span lang=\"ES\" style=\"font-size: 11.5pt; color: #333333;\">1.<span style=\"font: 7pt 'Times New Roman';\"><br \/>\n<\/span><\/span><span lang=\"ES\" style=\"color: black;\"><a href=\"https:\/\/myserver.com\/v1\/oauth\/token?grant_type=refresh_token&amp;client_id=%7bClientId%7d&amp;client_secret=%7bClientSecret%7d&amp;refresh_token=%7bRefreshToken%7d%E2%80%8B\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/myserver.com\/v1\/oauth\/token?grant_type=refresh_token&amp;client_id={ClientId}&amp;client_secret={ClientSecret}&amp;refresh_token={RefreshToken}%E2%80%8B<\/a><\/span><\/p>\n<\/div>\n<div><\/div>\n<\/div><\/section>\n","protected":false},"excerpt":{"rendered":"","protected":false},"featured_media":0,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","format":"standard","tags":[840],"videos_tax":[],"post-type":[],"categoria-valuekeep":[997],"class_list":["post-36104","valuekeep","type-valuekeep","status-publish","format-standard","hentry","tag-oauth","categoria-valuekeep-web-api-es"],"_links":{"self":[{"href":"https:\/\/developers.ila.cegid.com\/es\/wp-json\/wp\/v2\/valuekeep\/36104","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/developers.ila.cegid.com\/es\/wp-json\/wp\/v2\/valuekeep"}],"about":[{"href":"https:\/\/developers.ila.cegid.com\/es\/wp-json\/wp\/v2\/types\/valuekeep"}],"replies":[{"embeddable":true,"href":"https:\/\/developers.ila.cegid.com\/es\/wp-json\/wp\/v2\/comments?post=36104"}],"version-history":[{"count":0,"href":"https:\/\/developers.ila.cegid.com\/es\/wp-json\/wp\/v2\/valuekeep\/36104\/revisions"}],"wp:attachment":[{"href":"https:\/\/developers.ila.cegid.com\/es\/wp-json\/wp\/v2\/media?parent=36104"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/developers.ila.cegid.com\/es\/wp-json\/wp\/v2\/tags?post=36104"},{"taxonomy":"videos_tax","embeddable":true,"href":"https:\/\/developers.ila.cegid.com\/es\/wp-json\/wp\/v2\/videos_tax?post=36104"},{"taxonomy":"post-type","embeddable":true,"href":"https:\/\/developers.ila.cegid.com\/es\/wp-json\/wp\/v2\/post-type?post=36104"},{"taxonomy":"categoria-valuekeep","embeddable":true,"href":"https:\/\/developers.ila.cegid.com\/es\/wp-json\/wp\/v2\/categoria-valuekeep?post=36104"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}