{"id":30,"date":"2013-08-06T14:23:16","date_gmt":"2013-08-06T18:23:16","guid":{"rendered":"http:\/\/cloud.cnpgc.embrapa.br\/embrapa-auth\/?page_id=30"},"modified":"2013-08-06T14:30:46","modified_gmt":"2013-08-06T18:30:46","slug":"requisicao-http","status":"publish","type":"page","link":"https:\/\/cloud.cnpgc.embrapa.br\/embrapa-auth\/requisicao-http\/","title":{"rendered":"Requisi\u00e7\u00e3o HTTP"},"content":{"rendered":"<p style=\"text-align: justify;\"><span style=\"text-align: justify; font-size: 13px;\">Cada recurso de um WebService pode exigir v\u00e1rios, alguns ou nenhum n\u00edvel de autentica\u00e7\u00e3o.<\/span><\/p>\n<p style=\"text-align: justify;\">O exemplo asseguir mostra uma requisi\u00e7\u00e3o HTTP que submete um novo evento para uma API REST fict\u00edcia do Pandora. Nessa requisi\u00e7\u00e3o podemos ver os tr\u00eas n\u00edveis de autentica\u00e7\u00e3o sendo informados no cabecalho da requisi\u00e7\u00e3o:<\/p>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\r\nPOST http:\/\/api.pandora.cnpgc.embrapa.br\/eventos HTTP\/1.1\r\n...\r\nx-embrapa-auth-timestamp: 1393938240 # 15\/04\/2012 13:04:00\r\n# Credenciais da aplica\u00e7\u00e3o\r\nx-embrapa-auth-application-id: pandora_mobile\r\nx-embrapa-auth-application-signature: GoFqh18rO5tUHCyZG2\r\n# Credenciais do cliente\r\nx-embrapa-auth-client-id: 123\r\nx-embrapa-auth-client-signature: 7XK9OT8ZW34IPRQA\r\n# Credenciais do usu\u00e1rio do sistema\r\nx-embrapa-auth-user-id: brunorighes\r\nx-embrapa-auth-user-signature: 96afea21475837aa03f5acb37677\r\n<\/pre>\n<p style=\"text-align: justify;\">Todos os cabecalhos do protocolo, tem o prefixo &#8220;<strong>x-embrapa-auth<\/strong>&#8220;.<\/p>\n<p style=\"text-align: justify;\">Al\u00e9m do campo de timestamp, cada n\u00edvel de aut\u00eantica\u00e7\u00e3o possui dois campos: o <strong>identificador<\/strong> (<em>id<\/em>) e uma <strong>assinatura<\/strong> (<em>signature<\/em>).<\/p>\n<p style=\"text-align: justify;\">O cabecalho &#8220;<strong>x-embrapa-auth-timestamp<\/strong>&#8221; \u00e9 um <em>UNIX timestamp<\/em> em segundos, que deve informar o instante em que a requisi\u00e7\u00e3o est\u00e1 sendo enviada. Com essa informa\u00e7\u00e3o o servidor \u00e9 capaz de verificar a idade na requisi\u00e7\u00e3o e poder\u00e1 retornar um erro se ela ultrapassar a idade m\u00e1xima tolerada. <span style=\"text-decoration: underline;\">O servidor DEVER\u00c1 estipular um tempo de expira\u00e7\u00e3o de uma requisi\u00e7\u00e3o.<\/span> Recomenda-se definir esse valor entre 5 e 15 minutos, dependendo da velocidade esperada\u00a0da conex\u00e3o. A valida\u00e7\u00e3o do <em>timestamp<\/em> protege o servidor contra <em>replay attacks<\/em>.<\/p>\n<p style=\"text-align: justify;\">O identificador de cada n\u00edvel de autentica\u00e7\u00e3o \u00e9 definido pelos atributos <strong>&#8216;x-embrapa-auth-*-id<\/strong>&#8216;. Ou seja, uma string com um identificador \u00fanico para o cliente, o usu\u00e1rio e a aplica\u00e7\u00e3o. No caso de um usu\u00e1rio, o atributo &#8216;<strong>x-embrapa-auth-user-id<\/strong>&#8216; pode ser, por exemplo, o seu login no sistema, seu ID num\u00e9rico ou seu e-mail.<\/p>\n<p style=\"text-align: justify;\">O atributo de assinatura &#8216;<strong>x-embrapa-auth-*-signature<\/strong>&#8216;, por sua vez, ser\u00e1 o resultado de uma computa\u00e7\u00e3o simples: o <a href=\"http:\/\/pt.wikipedia.org\/wiki\/HMAC\" target=\"_blank\"><strong>HMAC-SHA1<\/strong><\/a>\u00a0do <em>timestamp<\/em> concatenado com o identificador do usu\u00e1rio, cliente ou aplica\u00e7\u00e3o utilizando a senha, chave privada ou token, respectivamente, como <em>secret key<\/em>.<\/p>\n<pre class=\"brush: bash; gutter: false; title: ; notranslate\" title=\"\">\r\nx-embrapa-auth-application-signature: hmac_sha1 (timestamp || application_id, token)\r\nx-embrapa-auth-client-signature: hmac_sha1 (timestamp || client_id, private_key)\r\nx-embrapa-auth-user-signature: hmac_sha1 (timestamp || user_id, password)\r\n<\/pre>\n<p style=\"text-align: justify;\">Com as informa\u00e7\u00f5es p\u00fablicas (<em>timestamp<\/em> e identificadores) o servidor \u00e9 capaz de buscar em sua base de dados as chaves para reproduzir a computa\u00e7\u00e3o <strong>HMAC-SHA1<\/strong> e verificar a validade da assinatura.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cada recurso de um WebService pode exigir v\u00e1rios, alguns ou nenhum n\u00edvel de autentica\u00e7\u00e3o. O exemplo asseguir mostra uma requisi\u00e7\u00e3o HTTP que submete um novo evento para uma API REST [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"open","template":"","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"footnotes":""},"class_list":["post-30","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/cloud.cnpgc.embrapa.br\/embrapa-auth\/wp-json\/wp\/v2\/pages\/30","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloud.cnpgc.embrapa.br\/embrapa-auth\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/cloud.cnpgc.embrapa.br\/embrapa-auth\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/cloud.cnpgc.embrapa.br\/embrapa-auth\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/cloud.cnpgc.embrapa.br\/embrapa-auth\/wp-json\/wp\/v2\/comments?post=30"}],"version-history":[{"count":8,"href":"https:\/\/cloud.cnpgc.embrapa.br\/embrapa-auth\/wp-json\/wp\/v2\/pages\/30\/revisions"}],"predecessor-version":[{"id":42,"href":"https:\/\/cloud.cnpgc.embrapa.br\/embrapa-auth\/wp-json\/wp\/v2\/pages\/30\/revisions\/42"}],"wp:attachment":[{"href":"https:\/\/cloud.cnpgc.embrapa.br\/embrapa-auth\/wp-json\/wp\/v2\/media?parent=30"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}