{"id":11260,"date":"2021-06-22T00:00:43","date_gmt":"2021-06-22T07:00:43","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=11260"},"modified":"2025-06-13T20:08:49","modified_gmt":"2025-06-14T03:08:49","slug":"oauth-2-oidc-fundamentals-authentication-authorization","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/oauth-2-oidc-fundamentals-authentication-authorization\/","title":{"rendered":"Fundamentos do OAuth 2.0 e do OIDC para autentica\u00e7\u00e3o e autoriza\u00e7\u00e3o [Parte 1 de 3]"},"content":{"rendered":"<p><strong>Desenvolvedores e arquitetos<\/strong> simplesmente n\u00e3o \u00e9 poss\u00edvel criar aplicativos modernos sem se deparar com problemas de autoriza\u00e7\u00e3o e autentica\u00e7\u00e3o. <\/p>\n<p><a href=\"https:\/\/oauth.net\/2\/\" target=\"_blank\" rel=\"noopener\">OAuth 2.0<\/a>\u00a0<span style=\"font-weight: 400\">\u00e9 um padr\u00e3o do setor para \"autoriza\u00e7\u00e3o delegada\", que \u00e9 a capacidade de fornecer a um aplicativo ou cliente acesso a dados ou recursos oferecidos por outro aplicativo ou servi\u00e7o. O OAuth 2.0 concentra-se na autoriza\u00e7\u00e3o e n\u00e3o \u00e9 prescritivo quanto \u00e0 autentica\u00e7\u00e3o.<\/span>\u00a0<a href=\"https:\/\/openid.net\/connect\/\" target=\"_blank\" rel=\"noopener\">Conex\u00e3o OpenID (OIDC)<\/a> adiciona uma camada de autentica\u00e7\u00e3o baseada em padr\u00f5es sobre o OAuth 2.0.<\/p>\n<p>Para colocar isso em contexto, <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/authentication-users.html?ref=blog\" target=\"_blank\" rel=\"noopener\">O Couchbase Sync Gateway oferece suporte a v\u00e1rias formas de autentica\u00e7\u00e3o de cliente<\/a>. <em>Clientes<\/em> podem ser clientes do Couchbase Lite que sincronizam os dados com o Sync Gateway pela Internet usando uma interface baseada em websocket. <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/sync-using-app.html?ref=blog\" target=\"_blank\" rel=\"noopener\">protocolo de replica\u00e7\u00e3o<\/a>ou podem ser front-end da Web ou aplicativos m\u00f3veis que acessam o Sync Gateway por meio do <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/rest-api.html?ref=blog\" target=\"_blank\" rel=\"noopener\">Ponto de extremidade REST p\u00fablico<\/a>. Um dos mecanismos de autentica\u00e7\u00e3o de cliente mais populares do Couchbase Sync Gateway \u00e9 o OIDC.<\/p>\n<p>Nesta postagem, abordaremos os fundamentos do OAuth 2.0 e do OIDC para autentica\u00e7\u00e3o e autoriza\u00e7\u00e3o. Discutirei dois fluxos comuns, a saber, o <a href=\"https:\/\/openid.net\/specs\/openid-connect-implicit-1_0.html\" target=\"_blank\" rel=\"noopener\">Fluxo impl\u00edcito<\/a> e o <a href=\"https:\/\/openid.net\/specs\/openid-connect-core-1_0.html\" target=\"_blank\" rel=\"noopener\">Fluxo do c\u00f3digo de autoriza\u00e7\u00e3o<\/a>. Espera-se que uma compreens\u00e3o b\u00e1sica dos fluxos forne\u00e7a a voc\u00ea informa\u00e7\u00f5es suficientes para entender como usar a autentica\u00e7\u00e3o baseada em OIDC no contexto da autentica\u00e7\u00e3o do cliente do Sync Gateway. Mais informa\u00e7\u00f5es sobre isso em uma futura postagem no blog, portanto, fique atento!<\/p>\n<p>Para entender o OIDC, primeiro precisamos entender o OAuth 2.0. Isso porque, como uma estrutura de autentica\u00e7\u00e3o, o OIDC foi desenvolvido com base no OAuth 2.0.<\/p>\n<h2>Uma cartilha do OAuth 2.0<\/h2>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/oauth.net\/2\/\" target=\"_blank\" rel=\"noopener\">OAuth 2.0<\/a> \u00e9 um padr\u00e3o do setor para autoriza\u00e7\u00e3o delegada, e h\u00e1 uma s\u00e9rie de <a href=\"https:\/\/en.wikipedia.org\/wiki\/List_of_OAuth_providers\" target=\"_blank\" rel=\"noopener\">Provedores OAuth<\/a> no mercado.<\/p>\n<p>Por exemplo, considere o bot\u00e3o \"Fazer login com o Facebook\" que aciona v\u00e1rios aplicativos da Web e m\u00f3veis. Ele \u00e9 implementado usando o OAuth 2.0.<\/p>\n<p>Aqui est\u00e1 um <em>simplificado<\/em> vis\u00e3o do que acontece nos bastidores. Descrevo a seguir o que \u00e9 chamado de <a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc6749#section-1.3.1\" target=\"_blank\" rel=\"noopener\">Fluxo do c\u00f3digo de autoriza\u00e7\u00e3o<\/a>. H\u00e1 tamb\u00e9m uma alternativa, o \"fluxo impl\u00edcito\", que \u00e9 mais comum quando usado no contexto do OIDC.<\/p>\n<h3>Pr\u00e9-requisitos<\/h3>\n<p>&nbsp;<\/p>\n<p>Primeiro, o aplicativo\/cliente deve ser registrado no servidor de autoriza\u00e7\u00e3o. O processo de registro resulta na gera\u00e7\u00e3o de um <code>id_cliente<\/code> e um <code>segredo_do_cliente<\/code> que deve ser configurado no aplicativo\/cliente que solicita a autentica\u00e7\u00e3o.<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/05\/oauth2-auth-code.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-11246\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/05\/oauth2-auth-code.png\" alt=\"OAuth2 Authorization Flow\" width=\"800\" height=\"425\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/05\/oauth2-auth-code.png 800w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/05\/oauth2-auth-code-300x159.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/05\/oauth2-auth-code-768x408.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/05\/oauth2-auth-code-20x11.png 20w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>Quando o usu\u00e1rio (a.k.a., <a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc6749\" target=\"_blank\" rel=\"noopener\">\"Propriet\u00e1rio do recurso\"<\/a> no discurso do OAuth 2.0) clica no bot\u00e3o <em>Fa\u00e7a login com o Facebook<\/em> em seu aplicativo favorito, o aplicativo envia um <em>Solicita\u00e7\u00e3o de autoriza\u00e7\u00e3o<\/em> para o URL de login do servidor de autoriza\u00e7\u00e3o. Em nosso exemplo, o servidor de autoriza\u00e7\u00e3o \u00e9 o Facebook. A Solicita\u00e7\u00e3o de autoriza\u00e7\u00e3o inclui v\u00e1rios par\u00e2metros. Para ser breve, n\u00e3o estou incluindo a lista completa de par\u00e2metros que pode ser encontrada em <a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc6749#section-4.1.1\" target=\"_blank\" rel=\"noopener\">RFC6749<\/a>. No m\u00ednimo, a solicita\u00e7\u00e3o deve incluir os seguintes par\u00e2metros:\n<ul>\n<li><code>id_cliente<\/code> que identifica de forma exclusiva o aplicativo para o servidor de autoriza\u00e7\u00e3o<\/li>\n<li><code>tipo de resposta<\/code> que deve ser especificado como <code>c\u00f3digo<\/code> indicando que o cliente espera um C\u00f3digo de Autoriza\u00e7\u00e3o<\/li>\n<li><code>request_uri<\/code> que especifica o URL para o qual o Authorization Server deve redirecionar o controle ap\u00f3s a autentica\u00e7\u00e3o<\/li>\n<\/ul>\n<\/li>\n<li>O servidor de autoriza\u00e7\u00e3o (Facebook) solicita que o usu\u00e1rio digite seu nome de usu\u00e1rio e senha e (opcionalmente) responda a v\u00e1rias perguntas de seguran\u00e7a necess\u00e1rias para autenticar o usu\u00e1rio.<\/li>\n<li>Depois de autenticado, o usu\u00e1rio recebe (opcionalmente) um \"formul\u00e1rio de consentimento de recurso\" que lista o conjunto de recursos do Facebook (como o perfil p\u00fablico do usu\u00e1rio) aos quais o aplicativo deseja ter acesso.\n<ul>\n<li>O conjunto de recursos apresentados no formul\u00e1rio de consentimento \u00e9 especificado por meio de um <code>escopo<\/code> na Solicita\u00e7\u00e3o de Autoriza\u00e7\u00e3o inicial para o Servidor de Autoriza\u00e7\u00e3o.<\/li>\n<\/ul>\n<\/li>\n<li>Depois que o usu\u00e1rio autoriza o acesso aos recursos solicitados, ele \u00e9 redirecionado de volta ao aplicativo com um C\u00f3digo de autoriza\u00e7\u00e3o.\n<ul>\n<li>O URL para o qual o servidor de autoriza\u00e7\u00e3o redireciona o usu\u00e1rio \u00e9 especificado por meio do par\u00e2metro <code>redirect_uri<\/code> que tamb\u00e9m est\u00e1 inclu\u00eddo na Solicita\u00e7\u00e3o de autoriza\u00e7\u00e3o inicial.<\/li>\n<\/ul>\n<\/li>\n<li>Em seguida, o aplicativo\/cliente troca o c\u00f3digo de autoriza\u00e7\u00e3o com o Authorization Server por um <em>token de acesso<\/em> (ou <em>token de atualiza\u00e7\u00e3o<\/em>), passando o <code>id_cliente<\/code> e <code>segredo_do_cliente<\/code> como parte da solicita\u00e7\u00e3o.<\/li>\n<li>O aplicativo pode ent\u00e3o acessar os recursos solicitados no Facebook usando o token de acesso.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Ficou confuso? N\u00e3o se preocupe, pois voltaremos a falar sobre isso no contexto do OIDC.<\/p>\n<h2>O que \u00e9 o OpenID Connect (OIDC)?<\/h2>\n<p>&nbsp;<\/p>\n<p>O principal objetivo do OAuth 2.0 \u00e9 <a href=\"https:\/\/tools.ietf.org\/id\/draft-barnes-oauth-model-01.html\" target=\"_blank\" rel=\"noopener\">autoriza\u00e7\u00e3o delegada<\/a>. Em outras palavras, como vimos anteriormente, o objetivo principal do OAuth 2.0 \u00e9 conceder a um aplicativo acesso aos dados de propriedade de outro aplicativo.<\/p>\n<p>O OAuth 2.0 n\u00e3o se concentra na autentica\u00e7\u00e3o e, portanto, qualquer implementa\u00e7\u00e3o de autentica\u00e7\u00e3o que use o OAuth 2.0 n\u00e3o \u00e9 padr\u00e3o. \u00c9 a\u00ed que entra o OpenID Connect (OIDC). O OIDC acrescenta uma camada de autentica\u00e7\u00e3o baseada em padr\u00f5es sobre o OAuth 2.0.<\/p>\n<p>O servidor de autoriza\u00e7\u00e3o nos fluxos do OAuth 2.0 agora assume a fun\u00e7\u00e3o de <em>Servidor de identidade<\/em> (ou <em>Provedor OIDC<\/em>). O protocolo subjacente \u00e9 quase id\u00eantico ao OAuth 2.0, exceto pelo fato de que o Identity Server fornece um <em>Token de identidade<\/em> (Token de identidade) para o aplicativo solicitante. O token de identidade \u00e9 uma forma padr\u00e3o de codificar as declara\u00e7\u00f5es sobre a autentica\u00e7\u00e3o do usu\u00e1rio. Falaremos mais sobre tokens de identidade posteriormente.<\/p>\n<p>Descreverei aqui dois fluxos OIDC populares: Fluxo Impl\u00edcito e Fluxo de C\u00f3digo de Autoriza\u00e7\u00e3o.<\/p>\n<h3>Pr\u00e9-requisitos<\/h3>\n<p>&nbsp;<\/p>\n<p>Para ambos os fluxos, o aplicativo\/cliente deve ser registrado no servidor de autoriza\u00e7\u00e3o. O processo de registro resulta na gera\u00e7\u00e3o de um <code>id_cliente<\/code> e um <code>segredo_do_cliente<\/code> que deve ser configurado no aplicativo\/cliente que solicita a autentica\u00e7\u00e3o.<\/p>\n<h3>Fluxo impl\u00edcito do OIDC<\/h3>\n<p>&nbsp;<\/p>\n<p>A OIDC <a href=\"https:\/\/openid.net\/specs\/openid-connect-core-1_0.html#ImplicitFlowAuth\" target=\"_blank\" rel=\"noopener\">Fluxo impl\u00edcito<\/a> \u00e9 o mais simples dos dois e \u00e9 recomendado para uso na autentica\u00e7\u00e3o de cliente do Couchbase Lite com o Sync Gateway, sobre o qual falaremos mais em minha pr\u00f3xima postagem no blog.<\/p>\n<p>Mais uma vez, usaremos <em>Fa\u00e7a login com o Facebook<\/em> como um exemplo para ilustrar o fluxo.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/05\/oidc-implicit.png\" alt=\"OIDC Implicit Flow\" \/><\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>Quando o usu\u00e1rio clica no bot\u00e3o <em>Fa\u00e7a login com o Facebook<\/em> em seu aplicativo favorito, o aplicativo envia uma solicita\u00e7\u00e3o de autentica\u00e7\u00e3o para o URL de login do servidor de autoriza\u00e7\u00e3o ou servidor de identidade. Em nosso exemplo, o servidor de autoriza\u00e7\u00e3o \u00e9 o Facebook.\n<ul>\n<li>A solicita\u00e7\u00e3o de autentica\u00e7\u00e3o inclui v\u00e1rios par\u00e2metros. Por quest\u00f5es de brevidade, n\u00e3o estou incluindo a lista completa de todos os par\u00e2metros que <a href=\"https:\/\/openid.net\/specs\/openid-connect-core-1_0.html#ImplicitAuthRequest\" target=\"_blank\" rel=\"noopener\">pode ser encontrado na especifica\u00e7\u00e3o OIDC<\/a>. No m\u00ednimo, a solicita\u00e7\u00e3o deve incluir os seguintes par\u00e2metros:\n<ul>\n<li><code>id_cliente<\/code> que identifica de forma exclusiva o aplicativo para o servidor de autoriza\u00e7\u00e3o<\/li>\n<li><code>tipo de resposta<\/code> que deve ser especificado como <code>id_token<\/code> indicando que o cliente espera um ID Token.<\/li>\n<li><code>escopo<\/code> que <strong>deve<\/strong> cont\u00eam o <code>openid<\/code> valor de escopo, al\u00e9m de uma lista opcional de recursos aos quais o aplicativo est\u00e1 solicitando acesso<\/li>\n<li><code>request_uri<\/code> que especifica o URL para o qual a autoriza\u00e7\u00e3o deve redirecionar o controle ap\u00f3s a autentica\u00e7\u00e3o<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>O servidor de identidade (Facebook) solicita que o usu\u00e1rio digite seu nome de usu\u00e1rio e senha e (opcionalmente) responda a v\u00e1rias perguntas de seguran\u00e7a necess\u00e1rias para autenticar o usu\u00e1rio.<\/li>\n<li>Depois de autenticado, o usu\u00e1rio recebe (opcionalmente) um \"formul\u00e1rio de consentimento de recurso\" que lista o conjunto de recursos do Facebook (como o perfil p\u00fablico do usu\u00e1rio) aos quais o aplicativo deseja ter acesso.\n<ul>\n<li>O conjunto de recursos apresentados no formul\u00e1rio de consentimento \u00e9 especificado por meio do par\u00e2metro <code>escopo<\/code> que foi inclu\u00eddo na solicita\u00e7\u00e3o de autentica\u00e7\u00e3o inicial para o servidor de autoriza\u00e7\u00e3o.<\/li>\n<\/ul>\n<\/li>\n<li>Depois que o usu\u00e1rio autoriza o acesso aos recursos solicitados, ele \u00e9 redirecionado de volta ao aplicativo com uma mensagem <a href=\"https:\/\/openid.net\/specs\/openid-connect-core-1_0.html#ImplicitIDToken\" target=\"_blank\" rel=\"noopener\">Token de identidade<\/a> e, opcionalmente, um token de acesso\n<ul>\n<li>O URL para o qual o servidor de autentica\u00e7\u00e3o redireciona o usu\u00e1rio \u00e9 especificado por meio do par\u00e2metro <code>redirect_uri<\/code> que tamb\u00e9m est\u00e1 inclu\u00eddo na solicita\u00e7\u00e3o de autentica\u00e7\u00e3o inicial.<\/li>\n<\/ul>\n<\/li>\n<li>Em seguida, o aplicativo valida o token de identidade de acordo com os crit\u00e9rios especificados no <a href=\"https:\/\/openid.net\/specs\/openid-connect-core-1_0.html#ImplicitIDTValidation\" target=\"_blank\" rel=\"noopener\">Especifica\u00e7\u00f5es da OIDC<\/a> e recupera a identidade do usu\u00e1rio autenticado.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h3>Fluxo do c\u00f3digo de autoriza\u00e7\u00e3o OIDC<\/h3>\n<p>&nbsp;<\/p>\n<p>A OIDC <a href=\"https:\/\/openid.net\/specs\/openid-connect-core-1_0.html#CodeFlowAuth\" target=\"_blank\" rel=\"noopener\">Fluxo do c\u00f3digo de autoriza\u00e7\u00e3o<\/a> \u00e9 muito semelhante ao fluxo do c\u00f3digo de autoriza\u00e7\u00e3o do OAuth 2.0 descrito anteriormente.<\/p>\n<p>Mais uma vez, usaremos <em>Fa\u00e7a login com o Facebook<\/em> como um exemplo para ilustrar o fluxo.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/05\/oidc-authflow.png\" alt=\"OIDC Auth code flow\" \/><\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li>Quando o usu\u00e1rio clica no bot\u00e3o <em>Fa\u00e7a login com o Facebook<\/em> em seu aplicativo favorito, o aplicativo envia uma solicita\u00e7\u00e3o de autentica\u00e7\u00e3o para o URL de login do Authorization Server ou Identity Server. Em nosso exemplo, o servidor de autoriza\u00e7\u00e3o \u00e9 o Facebook.\n<ul>\n<li>A solicita\u00e7\u00e3o de autentica\u00e7\u00e3o inclui v\u00e1rios par\u00e2metros. Por motivos de brevidade, n\u00e3o estou incluindo a lista completa de todos os par\u00e2metros que podem ser encontrados em <a href=\"https:\/\/openid.net\/specs\/openid-connect-core-1_0.html#ImplicitAuthRequest\" target=\"_blank\" rel=\"noopener\">Especifica\u00e7\u00f5es da OIDC<\/a>. No m\u00ednimo, a solicita\u00e7\u00e3o deve incluir os seguintes par\u00e2metros:\n<ul>\n<li><code>id_cliente<\/code> que identifica de forma exclusiva o aplicativo para o servidor de autoriza\u00e7\u00e3o<\/li>\n<li><code>tipo de resposta<\/code> que deve ser especificado como <code>c\u00f3digo<\/code> indicando que o cliente espera um C\u00f3digo de Autoriza\u00e7\u00e3o.<\/li>\n<li><code>escopo<\/code> que <strong>deve<\/strong> cont\u00eam o <code>openid<\/code> valor de escopo, al\u00e9m de uma lista opcional de recursos aos quais o aplicativo est\u00e1 solicitando acesso<\/li>\n<li><code>request_uri<\/code> que especifica o URL para o qual a autoriza\u00e7\u00e3o deve redirecionar o controle ap\u00f3s a autentica\u00e7\u00e3o<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>O servidor de identidade (Facebook) solicita que o usu\u00e1rio digite seu nome de usu\u00e1rio e senha e (opcionalmente) responda a v\u00e1rias perguntas de seguran\u00e7a necess\u00e1rias para autenticar o usu\u00e1rio.<\/li>\n<li>Depois de autenticado, o usu\u00e1rio recebe (opcionalmente) um \"formul\u00e1rio de consentimento de recurso\" que lista o conjunto de recursos do Facebook (como o perfil p\u00fablico do usu\u00e1rio) aos quais o aplicativo deseja ter acesso.\n<ul>\n<li>O conjunto de recursos apresentados no formul\u00e1rio de consentimento \u00e9 especificado por meio do par\u00e2metro <code>escopo<\/code> que tamb\u00e9m \u00e9 inclu\u00eddo na solicita\u00e7\u00e3o de autentica\u00e7\u00e3o inicial para o servidor de autoriza\u00e7\u00e3o.<\/li>\n<\/ul>\n<\/li>\n<li>Depois que o usu\u00e1rio autoriza o acesso aos recursos solicitados, ele \u00e9 redirecionado de volta ao aplicativo com uma mensagem <a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc6749#section-1.3.1\" target=\"_blank\" rel=\"noopener\">C\u00f3digo de autoriza\u00e7\u00e3o<\/a>\n<ul>\n<li>O URL para o qual o servidor de autoriza\u00e7\u00e3o redireciona o usu\u00e1rio \u00e9 especificado por meio do par\u00e2metro <code>redirect_uri<\/code> que tamb\u00e9m est\u00e1 inclu\u00eddo na Solicita\u00e7\u00e3o de autoriza\u00e7\u00e3o inicial.<\/li>\n<\/ul>\n<\/li>\n<li>Em seguida, o aplicativo\/cliente troca o c\u00f3digo de autoriza\u00e7\u00e3o com o Authorization Server por um <a href=\"https:\/\/openid.net\/specs\/openid-connect-core-1_0.html#ImplicitIDToken\" target=\"_blank\" rel=\"noopener\">Token de identidade<\/a> e um token de acesso opaco, passando o <code>id_cliente<\/code> e <code>segredo_do_cliente<\/code> como parte da solicita\u00e7\u00e3o.<\/li>\n<li>Em seguida, o aplicativo valida o token de identidade de acordo com os crit\u00e9rios especificados no <a href=\"https:\/\/openid.net\/specs\/openid-connect-core-1_0.html#ImplicitIDTValidation\" target=\"_blank\" rel=\"noopener\">Especifica\u00e7\u00f5es da OIDC<\/a> e recupera a identidade do usu\u00e1rio autenticado.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2>Token da Web JSON (JWT)<\/h2>\n<p>&nbsp;<\/p>\n<p>Um elemento-chave do OIDC \u00e9 o token de identidade, que \u00e9 um token de seguran\u00e7a que codifica as declara\u00e7\u00f5es de autentica\u00e7\u00e3o sobre um usu\u00e1rio em um formato padr\u00e3o conhecido como <a href=\"https:\/\/datatracker.ietf.org\/doc\/html\/rfc7519\" target=\"_blank\" rel=\"noopener\">Token da Web JSON (JWT)<\/a>. O JWT \u00e9 assinado digitalmente.<\/p>\n<p>Uma \"reivindica\u00e7\u00e3o\" \u00e9 uma afirma\u00e7\u00e3o sobre o usu\u00e1rio. Aqui est\u00e1 um exemplo de um JWT que tem um conjunto t\u00edpico de declara\u00e7\u00f5es.<\/p>\n<pre class=\"lang:js decode:true\" title=\"Exemplo de JWT\">{\r\n  \"sub\": \"AItOawmwtWwcT0k51BayewNvutrJUqsvl6qs7A4\",\r\n  \"name\": \"Priya Rajagopal\",\r\n  \"email\": \"priya.rajagopal@example.com\",\r\n  \"iss\": \"https:\/\/pk-demo.okta.com\/OAuth 2.0\/default\",\r\n  \"aud\": \"WuRuBAgABMP7_w4K9L-40Jhh\",\r\n  \"iat\": 1622246311,\r\n  \"exp\": 1624838311,\r\n  \"amr\": [\r\n    \"pwd\"\r\n  ]\r\n}\r\n<\/pre>\n<p>&nbsp;<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li><code>submarino<\/code> \u00e9 o usu\u00e1rio ao qual o JWT se refere<\/li>\n<li><code>iss<\/code> \u00e9 o emissor do JWT que tamb\u00e9m assina o JWT<\/li>\n<li><code>aud<\/code> \u00e9 para quem o token se destina<\/li>\n<li><code>iat<\/code> \u00e9 o registro de data e hora emitido<\/li>\n<li><code>exp<\/code> \u00e9 o registro de data e hora da expira\u00e7\u00e3o<\/li>\n<li><code>amr<\/code> refere-se ao m\u00e9todo de autentica\u00e7\u00e3o usado para emitir o token<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h2>Mais recursos<\/h2>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/jwt.io\/\" target=\"_blank\" rel=\"noopener\">jwt.io<\/a> \u00e9 muito \u00fatil para decodificar e verificar um JWT.<\/p>\n<p>O <a href=\"https:\/\/www.oauth.com\/playground\/index.html\" target=\"_blank\" rel=\"noopener\">Playground do OIDC e do OAuth<\/a> da Okta \u00e9 um \u00f3timo recurso para experimentar os fluxos sem implement\u00e1-los de fato.<\/p>\n<h2>O que vem a seguir<\/h2>\n<p>&nbsp;<\/p>\n<p>Nesta postagem, descrevemos os fundamentos dos fluxos do OpenID Connect (OIDC) e do OAuth 2.0. Na postagem da pr\u00f3xima semana, discutiremos a autentica\u00e7\u00e3o baseada em OIDC no contexto da autentica\u00e7\u00e3o do cliente do Sync Gateway. Fique ligado!<\/p>\n<p>Se tiver d\u00favidas ou coment\u00e1rios, deixe um coment\u00e1rio abaixo ou envie-me um e-mail <a href=\"mailto:priya.rajagopal@couchbase.com\">priya.rajagopal@couchbase.com<\/a>. O <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/forums\/?ref=blog\" target=\"_blank\" rel=\"noopener\">F\u00f3runs do Couchbase<\/a> s\u00e3o outro bom lugar para entrar em contato com perguntas.<br \/>\n&nbsp;<\/p>\n<p><em>Fique por dentro das demais postagens desta s\u00e9rie sobre autentica\u00e7\u00e3o e autoriza\u00e7\u00e3o:<\/p>\n<ul>\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/oauth-2-oidc-fundamentals-authentication-authorization\/?ref=blog\" rel=\"noopener\" target=\"_blank\">Fundamentos do OAuth 2.0 e do OIDC para autentica\u00e7\u00e3o e autoriza\u00e7\u00e3o [Parte 1]<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/oidc-implicit-flow-client-authentication-couchbase-sync-gateway\/?ref=blog\" rel=\"noopener\" target=\"_blank\">Fluxo impl\u00edcito de OIDC para autentica\u00e7\u00e3o de cliente no Couchbase Sync Gateway [Parte 2]<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\/?ref=blog\" rel=\"noopener\" target=\"_blank\">Fluxo de c\u00f3digo de autoriza\u00e7\u00e3o OIDC para autentica\u00e7\u00e3o de cliente no Couchbase Sync Gateway [Parte 3]<\/a><\/li>\n<\/ul>\n<\/ul>\n<p><\/em><br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<\/p>","protected":false},"excerpt":{"rendered":"<p>Developers and architects simply can&#8217;t build modern applications without running into issues of authorization and authentication. OAuth 2.0\u00a0is an industry standard for \u201cdelegated authorization\u201d which is the ability to provide an application or client access to data or features offered [&hellip;]<\/p>","protected":false},"author":1423,"featured_media":11261,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,7667,1810,1813,2366],"tags":[9266,9250,1261,2251,9234,1713],"ppma_author":[8948],"class_list":["post-11260","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-lite","category-couchbase-mobile","category-security","category-sync-gateway","tag-authorization-code-flow","tag-implicit-flow","tag-json","tag-jwt","tag-oidc","tag-openid-connect"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>OAuth 2.0 &amp; OIDC Fundamentals for Authentication &amp; Authorization [Part 1 of 3]<\/title>\n<meta name=\"description\" content=\"Discover how to implement implicit and authorization code flows for user authentication and authorization using OAuth 2.0 and OIDC alongside Couchbase.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/pt\/oauth-2-oidc-fundamentals-authentication-authorization\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OAuth 2.0 &amp; OIDC Fundamentals for Authentication &amp; Authorization [Part 1 of 3]\" \/>\n<meta property=\"og:description\" content=\"Discover how to implement implicit and authorization code flows for user authentication and authorization using OAuth 2.0 and OIDC alongside Couchbase.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/oauth-2-oidc-fundamentals-authentication-authorization\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-06-22T07:00:43+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:08:49+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/feature.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Priya Rajagopal, Senior Director, Product Management\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@rajagp\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Priya Rajagopal, Senior Director, Product Management\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/\"},\"author\":{\"name\":\"Priya Rajagopal, Senior Director, Product Management\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c\"},\"headline\":\"OAuth 2.0 &amp; OIDC Fundamentals for Authentication &amp; Authorization [Part 1 of 3]\",\"datePublished\":\"2021-06-22T07:00:43+00:00\",\"dateModified\":\"2025-06-14T03:08:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/\"},\"wordCount\":1818,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/feature.png\",\"keywords\":[\"Authorization Code Flow\",\"Implicit Flow\",\"JSON\",\"jwt\",\"OIDC\",\"OpenID Connect\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Lite\",\"Couchbase Mobile\",\"Security\",\"Sync Gateway\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/\",\"name\":\"OAuth 2.0 &amp; OIDC Fundamentals for Authentication &amp; Authorization [Part 1 of 3]\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/feature.png\",\"datePublished\":\"2021-06-22T07:00:43+00:00\",\"dateModified\":\"2025-06-14T03:08:49+00:00\",\"description\":\"Discover how to implement implicit and authorization code flows for user authentication and authorization using OAuth 2.0 and OIDC alongside Couchbase.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/feature.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/feature.png\",\"width\":1200,\"height\":628,\"caption\":\"Learn more about using various OIDC and OAuth 2.0 authentication flows with Couchbase Sync Gateway\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OAuth 2.0 &amp; OIDC Fundamentals for Authentication &amp; Authorization [Part 1 of 3]\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c\",\"name\":\"Priya Rajagopal, Senior Director, Product Management\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4b50a54778b979d8c345b036ab138734\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g\",\"caption\":\"Priya Rajagopal, Senior Director, Product Management\"},\"description\":\"Priya Rajagopal is a Senior Director of Product Management at Couchbase responsible for developer platforms for the cloud and the edge. She has been professionally developing software for over 20 years in several technical and product leadership positions, with 10+ years focused on mobile technologies. As a TISPAN IPTV standards delegate, she was a key contributor to the IPTV standards specifications. She has 22 patents in the areas of networking and platform security.\",\"sameAs\":[\"https:\/\/x.com\/rajagp\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/priya-rajagopalcouchbase-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Fundamentos do OAuth 2.0 e do OIDC para autentica\u00e7\u00e3o e autoriza\u00e7\u00e3o [Parte 1 de 3]","description":"Descubra como implementar fluxos de c\u00f3digo impl\u00edcitos e de autoriza\u00e7\u00e3o para autentica\u00e7\u00e3o e autoriza\u00e7\u00e3o de usu\u00e1rios usando o OAuth 2.0 e o OIDC junto com o Couchbase.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/pt\/oauth-2-oidc-fundamentals-authentication-authorization\/","og_locale":"pt_BR","og_type":"article","og_title":"OAuth 2.0 &amp; OIDC Fundamentals for Authentication &amp; Authorization [Part 1 of 3]","og_description":"Discover how to implement implicit and authorization code flows for user authentication and authorization using OAuth 2.0 and OIDC alongside Couchbase.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/oauth-2-oidc-fundamentals-authentication-authorization\/","og_site_name":"The Couchbase Blog","article_published_time":"2021-06-22T07:00:43+00:00","article_modified_time":"2025-06-14T03:08:49+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/feature.png","type":"image\/png"}],"author":"Priya Rajagopal, Senior Director, Product Management","twitter_card":"summary_large_image","twitter_creator":"@rajagp","twitter_misc":{"Written by":"Priya Rajagopal, Senior Director, Product Management","Est. reading time":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/"},"author":{"name":"Priya Rajagopal, Senior Director, Product Management","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c"},"headline":"OAuth 2.0 &amp; OIDC Fundamentals for Authentication &amp; Authorization [Part 1 of 3]","datePublished":"2021-06-22T07:00:43+00:00","dateModified":"2025-06-14T03:08:49+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/"},"wordCount":1818,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/feature.png","keywords":["Authorization Code Flow","Implicit Flow","JSON","jwt","OIDC","OpenID Connect"],"articleSection":["Best Practices and Tutorials","Couchbase Lite","Couchbase Mobile","Security","Sync Gateway"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/","url":"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/","name":"Fundamentos do OAuth 2.0 e do OIDC para autentica\u00e7\u00e3o e autoriza\u00e7\u00e3o [Parte 1 de 3]","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/feature.png","datePublished":"2021-06-22T07:00:43+00:00","dateModified":"2025-06-14T03:08:49+00:00","description":"Descubra como implementar fluxos de c\u00f3digo impl\u00edcitos e de autoriza\u00e7\u00e3o para autentica\u00e7\u00e3o e autoriza\u00e7\u00e3o de usu\u00e1rios usando o OAuth 2.0 e o OIDC junto com o Couchbase.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/feature.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/06\/feature.png","width":1200,"height":628,"caption":"Learn more about using various OIDC and OAuth 2.0 authentication flows with Couchbase Sync Gateway"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"OAuth 2.0 &amp; OIDC Fundamentals for Authentication &amp; Authorization [Part 1 of 3]"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"Blog do Couchbase","description":"Couchbase, o banco de dados NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c","name":"Priya Rajagopal, Diretora S\u00eanior, Gerenciamento de Produtos","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/4b50a54778b979d8c345b036ab138734","url":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","caption":"Priya Rajagopal, Senior Director, Product Management"},"description":"Priya Rajagopal \u00e9 diretora s\u00eanior de gerenciamento de produtos da Couchbase, respons\u00e1vel pelas plataformas de desenvolvedor para a nuvem e a borda. Ela desenvolve software profissionalmente h\u00e1 mais de 20 anos em v\u00e1rios cargos t\u00e9cnicos e de lideran\u00e7a de produtos, com mais de 10 anos de foco em tecnologias m\u00f3veis. Como delegada de padr\u00f5es de IPTV da TISPAN, ela foi uma das principais colaboradoras das especifica\u00e7\u00f5es de padr\u00f5es de IPTV. Ela tem 22 patentes nas \u00e1reas de rede e seguran\u00e7a de plataforma.","sameAs":["https:\/\/x.com\/rajagp"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/priya-rajagopalcouchbase-com\/"}]}},"authors":[{"term_id":8948,"user_id":1423,"is_guest":0,"slug":"priya-rajagopalcouchbase-com","display_name":"Priya Rajagopal, Senior Director, Product Management","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g","author_category":"","last_name":"Rajagopal, Senior Director, Product Management","first_name":"Priya","job_title":"","user_url":"","description":"Priya Rajagopal \u00e9 diretora s\u00eanior de gerenciamento de produtos da Couchbase, respons\u00e1vel pelas plataformas de desenvolvedor para a nuvem e a borda. Ela desenvolve software profissionalmente h\u00e1 mais de 20 anos em v\u00e1rios cargos t\u00e9cnicos e de lideran\u00e7a de produtos, com mais de 10 anos de foco em tecnologias m\u00f3veis. Como delegada de padr\u00f5es de IPTV da TISPAN, ela foi uma das principais colaboradoras das especifica\u00e7\u00f5es de padr\u00f5es de IPTV. Ela tem 22 patentes nas \u00e1reas de rede e seguran\u00e7a de plataforma."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/11260","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/1423"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=11260"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/11260\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/11261"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=11260"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=11260"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=11260"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=11260"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}