{"id":11496,"date":"2021-07-06T02:59:06","date_gmt":"2021-07-06T09:59:06","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=11496"},"modified":"2025-06-13T23:14:56","modified_gmt":"2025-06-14T06:14:56","slug":"oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\/","title":{"rendered":"OIDC Authorization Code Flow for Client Authentication in Couchbase Sync Gateway [Part 3 of 3]"},"content":{"rendered":"<p><strong>Couchbase Sync Gateway supports<\/strong> <a href=\"https:\/\/openid.net\/connect\/\" rel=\"noopener\" target=\"_blank\">OpenID Connect or OIDC-based client authentication<\/a>. <\/p>\n<p>In this context, <em>clients<\/em> may be Couchbase Lite clients that synchronize data with Sync Gateway over the Internet using <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.8\/sync-using-app.html?ref=blog\" rel=\"noopener\" target=\"_blank\">the websockets-based replication protocol<\/a> or they could be web frontend or mobile apps accessing Sync Gateway through the <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.8\/sync-using-app.html?ref=blog\" rel=\"noopener\" target=\"_blank\">public REST endpoint<\/a>.<\/p>\n<p>In the first blog post in this series, we discussed <a href=\"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/?ref=blog\" rel=\"noopener\" target=\"_blank\">the fundamentals of OIDC and OAuth2 authentication and authorization flows<\/a> and in last week&#8217;s blog post, we learned more in-depth about <a href=\"https:\/\/www.couchbase.com\/blog\/oidc-implicit-flow-client-authentication-couchbase-sync-gateway\/?ref=blog\" rel=\"noopener\" target=\"_blank\">OIDC implicit flow-based Sync Gateway client authentication<\/a>.<\/p>\n<p>In this post, I&#8217;ll introduce you to <a href=\"https:\/\/openid.net\/specs\/openid-connect-core-1_0.html#CodeFlowAuth\" rel=\"noopener\" target=\"_blank\">OIDC authorization code flow-based<\/a> client authentication within the context of Couchbase Sync Gateway replication. <\/p>\n<p>This post assumes familiarity with OIDC and OAuth2 flows for authentication and authorization. If you&#8217;re unfamiliar with the flows or need a refresher, please check out the earlier blog posts linked above.<\/p>\n<h2>Couchbase Sync Gateway OIDC Configuration<\/h2>\n<p>The <a href=\"https:\/\/www.couchbase.com\/products\/sync-gateway\/?ref=blog\" rel=\"noopener\" target=\"_blank\">Couchbase Sync Gateway<\/a> must be configured for OIDC authentication <em>on a per database basis<\/em>.<\/p>\n<p>Below is a basic OIDC config for Authorization Code. Refer to the official Couchbase documentation for <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.8\/configuration-properties.html?ref=blog#databases-this_db-oidc\" rel=\"noopener\" target=\"_blank\">a complete listing of all OIDC config options<\/a>.<\/p>\n<pre>\r\n\"oidc\": {\r\n          \"default_provider\":\"google\",\r\n          \"providers\": {\r\n            \"google\": {\r\n                \"issuer\":\"https:\/\/accounts.google.com\",\r\n                \"client_id\":\"YOUR_CLIENT_ID\",\r\n                \"validation_key\":\"YOUR_CLIENT_SECRET\",\r\n                \"callback_url\":\"https:\/\/SYNC_GATEWAY_ADDRESS:4984\/default\/_oidc_callback\",\r\n                \"register\":true,\r\n                \"username_claim\":\"email\",\r\n                \"disable_session\":false\r\n            }\r\n          }\r\n        }\r\n<\/pre>\n<div class=\"wp-block-spacer\" style=\"height: 15px;\" aria-hidden=\"true\"> <\/div>\n<ul>\n<ul>\n<li><code>issuer<\/code> is the authentication URL corresponding to the OIDC identity provider<\/li>\n<li><code>client_id<\/code> is generated as part of the app registration process with the OIDC provider. The client here refers to the <a href=\"https:\/\/www.couchbase.com\/products\/lite\/?ref=blog\" rel=\"noopener\" target=\"_blank\">Couchbase Lite<\/a> app or web app. Note that the <code>client_id<\/code> does not correspond to the end user of the app who is technically the resource owner.<\/li>\n<li><code>validation_key<\/code> corresponds to the <code>client_secret<\/code> and should be generated as part of the app registration process with the OIDC provider.<\/li>\n<li><code>callback_url<\/code> is the URL to be redirected to on Sync Gateway after the client obtains the identity token (ID token).<\/li>\n<li><code>register<\/code> flag, if set to <code>true<\/code>, will result in the user being automatically created on Sync Gateway following successful ID token validation.<\/li>\n<li><code>username_claim<\/code> corresponds to the JWT claim to be used as the Sync Gateway username. By default, the Sync Gateway username would take the form <code>issuer+subject<\/code> where <code>issuer<\/code> refers to the username <code>prefix<\/code>. The prefix value defaults to the issuer claim and can be configured to use a different claim value via the <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/configuration-properties.html?ref=blog#databases-this_db-oidc-providers-this_provider-user_prefix\" rel=\"noopener\" target=\"_blank\"><code>user_prefix<\/code><\/a> config option.<\/li>\n<li><code>disable_session<\/code>, if set to <code>true<\/code>, can be used to override the automatic session creation by the Sync Gateway following successful authentication.<\/li>\n<\/ul>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px;\" aria-hidden=\"true\"> <\/div>\n<h2>Couchbase Sync Gateway OIDC Discovery<\/h2>\n<p>On startup, the Sync Gateway connects to <a href=\"https:\/\/openid.net\/specs\/openid-connect-discovery-1_0.html#IssuerDiscovery\" rel=\"noopener\" target=\"_blank\">the discovery endpoint associated with the configured OIDC provider\/issuer<\/a> to fetch relevant provider metadata. The <a href=\"https:\/\/openid.net\/specs\/openid-connect-discovery-1_0.html#ProviderConfigurationResponse\" rel=\"noopener\" target=\"_blank\">metadata includes relevant information required for token validation<\/a> such as issuer public keys, supported encryption algorithms used for encoding the claims in the ID token, etc.<\/p>\n<p>The discovery endpoint corresponds to a well-known discovery URL associated with the issuer. If needed, you can override the URL via <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/configuration-properties.html?ref=blog#databases-this_db-oidc-providers-this_provider-discovery_url\" rel=\"noopener\" target=\"_blank\">Sync Gateway discovery_url config option<\/a>.<\/p>\n<h2>OIDC Authorization Code Flow for Client Authentication<\/h2>\n<p>This flow is based on the standard OIDC authorization code flow discussed in <a href=\"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/?ref=blog\" rel=\"noopener\" target=\"_blank\">the OIDC basics blog (part one of the series)<\/a>. <\/p>\n<h3>Authentication<\/h3>\n<div class=\"wp-block-spacer\" style=\"height: 15px;\" aria-hidden=\"true\"> <\/div>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/07\/user-authentication-oidc-couchbase-sync-gateway.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/07\/user-authentication-oidc-couchbase-sync-gateway.png\" alt=\"An example of user authentication using OIDC and Couchbase Sync Gateway\" width=\"800\" height=\"449\" class=\"aligncenter size-full wp-image-11498\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/user-authentication-oidc-couchbase-sync-gateway.png 800w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/user-authentication-oidc-couchbase-sync-gateway-300x168.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/user-authentication-oidc-couchbase-sync-gateway-768x431.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/user-authentication-oidc-couchbase-sync-gateway-20x11.png 20w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px;\" aria-hidden=\"true\"> <\/div>\n<ol>\n<li>When a user logs into the Couchbase Lite client app, the client invokes the <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.8\/rest-api-admin.html?ref=blog#\/auth\/get__db___oidc\" rel=\"noopener\" target=\"_blank\">_oidc REST endpoint<\/a> on Sync Gateway to initiate the OIDC Auth Code flow.<\/li>\n<li>Sync Gateway redirects the client app to the OIDC provider URL.<\/li>\n<li>The client initiates the authorization code flow with the OIDC provider to retrieve the authorization code. This is per standard OIDC flow procedures outlined in <a href=\"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/?ref=blog\" rel=\"noopener\" target=\"_blank\">the OIDC basics blog<\/a>.<\/li>\n<li>The client is redirected to the Sync Gateway with the authorization code. The redirect URL corresponds to <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/rest-api-admin.html?ref=blog#\/auth\/get__db___oidc_callback\" rel=\"noopener\" target=\"_blank\">the OIDC callback REST endpoint<\/a>.<\/li>\n<li>The client app invokes the OIDC callback REST endpoint with the authorization code.<\/li>\n<li>The Sync Gateway exchanges the code for the ID token, the refresh token, and the access token by sending a suitable request to the OIDC provider. The request includes the <code>client_id<\/code> and <code>client_secret<\/code> which were configured on Sync Gateway. This allows the OIDC provider to validate that only trusted clients are able to retrieve the tokens.<\/li>\n<li>Sync Gateway validates the ID token locally. Following successful token validation, a corresponding <code>UserCtx<\/code> object is created.\n<ul>\n<li>The metadata retrieved from the OIDC Provider Discovery URL during startup is used to validate the token in &#8220;offline mode.&#8221;<\/li>\n<li>If this is the first time that the user is authenticating with the Sync Gateway and if a corresponding user does not exist on the server, the Sync Gateway automatically creates a user if the <code>register<\/code> config option is set to <code>true<\/code>.\n<ul>\n<li><strong>Note:<\/strong> The user that is created is not associated with any access grants such as <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.8\/channels.html?ref=blog\" rel=\"noopener\" target=\"_blank\">channels<\/a> or <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.8\/roles.html?ref=blog\" rel=\"noopener\" target=\"_blank\">roles<\/a>, so this auto registration would work for public users with no user-specific access grants. We will discuss a flow later in this post that describes how to create users with user-specific access grants.<\/li>\n<\/ul>\n<\/li>\n<li>A session is created for the user with an idle session timeout of 24 hours. The session is created <strong>ONLY IF<\/strong> the <code>disable_session<\/code> is set to false.<\/li>\n<\/ul>\n<\/li>\n<li>The session ID and refresh tokens are sent back to the client app.<\/li>\n<li>Client app initiates a replication by <a href=\"https:\/\/docs.couchbase.com\/couchbase-lite\/2.8\/swift\/replication.html?ref=blog#lbl-init-repl\" rel=\"noopener\" target=\"_blank\">setting the session ID as the session cookie using the <code>SessionAuthenticator<\/code><\/a>.<\/li>\n<li>Sync Gateway checks the validity of the session to determine if the session has been deleted or has expired.\n<ul>\n<li>If the session is active, the session gets auto-extended to 24 hours if 10% of idle session timeout has elapsed.<\/li>\n<\/ul>\n<\/li>\n<li>Following successful initialization, replication proceeds as usual and document changes on the client app and Sync Gateway side are synchronized.\n<ul>\n<li>If the user is deleted during an active replication, the replication is terminated.<\/li>\n<li>If the access grants associated with the user have changed, then documents that get impacted by the updated access grants won\u2019t be replicated. So for instance, if a user loses access to a channel, then the documents in that channel won\u2019t be pulled.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<div class=\"wp-block-spacer\" style=\"height: 15px;\" aria-hidden=\"true\"> <\/div>\n<h3>Token Refresh<\/h3>\n<p>One of the advantages of the authorization code flow is that in addition to the ID token, a refresh token is also returned to the client app. The client app can use the refresh token to automatically request a new auth code without requiring the end user to reauthenticate with their login credentials.<\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px;\" aria-hidden=\"true\"> <\/div>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/07\/user-token-refresh-openid-connect-authorization-couchbase.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/07\/user-token-refresh-openid-connect-authorization-couchbase.png\" alt=\"An example of user token refresh using OpenID Connect authorization and Couchbase\" width=\"800\" height=\"447\" class=\"aligncenter size-full wp-image-11500\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/user-token-refresh-openid-connect-authorization-couchbase.png 800w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/user-token-refresh-openid-connect-authorization-couchbase-300x168.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/user-token-refresh-openid-connect-authorization-couchbase-768x429.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/user-token-refresh-openid-connect-authorization-couchbase-20x11.png 20w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px;\" aria-hidden=\"true\"> <\/div>\n<ol>\n<li>When the client app wants to refresh the token, it makes a request to the OIDC refresh REST endpoint with the refresh token.<\/li>\n<li>The Sync Gateway exchanges the refresh token for the updated ID token and access token by sending a suitable request to the OIDC provider. The request includes the <code>client_id<\/code> and <code>client_secret<\/code> which were configured on Sync Gateway. This allows the OIDC Provider to validate that only trusted clients are able to retrieve the tokens.<\/li>\n<li>Sync Gateway validates the ID token locally. Following successful token validation, a corresponding <code>UserCtx<\/code> object is created.\n<ul>\n<li>The metadata retrieved from the OIDC provider discovery URL during startup is used to validate the token in &#8220;offline mode.&#8221;\n<li>A new session is created for the user with an idle session timeout of 24 hours. The session is created <strong>ONLY IF<\/strong> the <code>disable_session<\/code> is set to false.\n<\/ul>\n<\/li>\n<li>The session ID and ID tokens are sent back to the client app.<\/li>\n<li>The client app initiates a replication using session ID as the session cookie following the same steps as in the previous flow.<\/li>\n<\/ol>\n<div class=\"wp-block-spacer\" style=\"height: 15px;\" aria-hidden=\"true\"> <\/div>\n<h2>Associating Access Grants to Authenticated Users<\/h2>\n<p>Sync Gateway <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.8\/channels.html?ref=blog\" rel=\"noopener\" target=\"_blank\">channels<\/a> and <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/roles.html\" rel=\"noopener\" target=\"_blank\">roles<\/a> are two key elements of Sync Gateway\u2019s access control mechanism. They define the <em>access grants<\/em> associated with a user, dictating the set of documents that the user has read and write access to.<\/p>\n<p>There are a couple of options to assign access grants to a user:<\/p>\n<ul>\n<ul>\n<li>Dynamic assignment of users to channels or roles by the sync function with the <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/current\/sync-function.html?ref=blog#accessusername-channelname\" rel=\"noopener\" target=\"_blank\">access()<\/a> or <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.8\/sync-function.html?ref=blog#roleusername-rolename\" rel=\"noopener\" target=\"_blank\">role()<\/a> APIs using an <em>access grant document<\/em> which specifies the channels or roles that a user must be assigned to.<\/li>\n<li>Static assignment of grants to users via the admin <a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.8\/rest-api-admin.html?ref=blog#\/user\/put__db___user__name_\" rel=\"noopener\" target=\"_blank\">_user REST API<\/a>.<\/li>\n<\/ul>\n<\/ul>\n<div class=\"wp-block-spacer\" style=\"height: 15px;\" aria-hidden=\"true\"> <\/div>\n<p>As you&#8217;ve seen from the previous flows, the Couchbase Sync Gateway can be configured to automatically create the authenticated user on the Sync Gateway following successful authentication. However, the created user is not associated with any access grants. This works for a public user with public channel access.<\/p>\n<p>But what if you wanted to assign user-specific access grants? This task is typically handled via a backend application server that would be responsible for creating or updating the user. The Sync Gateway is only responsible for OIDC authentication.<\/p>\n<p>Here is a typical flow:<\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px;\" aria-hidden=\"true\"> <\/div>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/07\/user-specific-access-grants-oidc-authorization-couchbase-sync-gateway.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/07\/user-specific-access-grants-oidc-authorization-couchbase-sync-gateway.png\" alt=\"User-specific access grants using OIDC authorization and Couchbase Sync Gateway\" width=\"800\" height=\"435\" class=\"aligncenter size-full wp-image-11499\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/user-specific-access-grants-oidc-authorization-couchbase-sync-gateway.png 800w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/user-specific-access-grants-oidc-authorization-couchbase-sync-gateway-300x163.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/user-specific-access-grants-oidc-authorization-couchbase-sync-gateway-768x418.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/user-specific-access-grants-oidc-authorization-couchbase-sync-gateway-20x11.png 20w\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" \/><\/a><\/p>\n<div class=\"wp-block-spacer\" style=\"height: 15px;\" aria-hidden=\"true\"> <\/div>\n<ol>\n<li>A backend process or app server is responsible for registering users with the OIDC provider.<\/li>\n<li>Subsequent to the registration, the app server creates a corresponding user on Sync Gateway via the <code>_user REST API<\/code> or by adding a suitable access grant document.<\/li>\n<li>Next time the user logs into the app, OIDC authentication proceeds using the authorization code flow procedures described earlier.<\/li>\n<li>Regardless of the type of OIDC flow, once the ID token is validated by the Sync Gateway, the Sync Gateway does not create a user because it already exists.<\/li>\n<li>Replication proceeds as usual using the authenticated user.<\/li>\n<li>If a user is updated on the OIDC Provider, the app server updates the corresponding user on the Sync Gateway via the <code>_user REST API<\/code> or by updating the access grant document.\n<ul>\n<li>If a user is deleted during an active replication, the replication is terminated.<\/li>\n<li>If the access grants associated with the user have changed, then documents that get impacted by the updated access grants won\u2019t be replicated. For instance, if a user loses access to a channel then the documents in that channel won\u2019t be pulled.\n<\/ul>\n<\/li>\n<\/ol>\n<div class=\"wp-block-spacer\" style=\"height: 15px;\" aria-hidden=\"true\"> <\/div>\n<h2>Frequently Asked Question (FAQ)<\/h2>\n<p><em>Which is better: implicit flow or authorization code flow?<\/em><\/p>\n<p>There isn\u2019t a preferred flow from my perspective. The implicit flow is simple and is generally preferred by most of our users. Since mobile apps have a secure store, the ID and access tokens can be securely stored in the local keystore on the device. You can learn more in this blog post about <a href=\"https:\/\/www.couchbase.com\/blog\/oidc-implicit-flow-client-authentication-couchbase-sync-gateway\/?ref=blog\" rel=\"noopener\" target=\"_blank\">how to leverage OIDC implicit flow for Sync Gateway authentication<\/a>.<\/p>\n<p>The advantage of the authorization code flow is that it provides slightly better security. This is because the tokens are granted to the Sync Gateway in exchange for the authorization code only when the OIDC Provider is presented with a valid <code>client_id<\/code> and <code>client_secret<\/code>. This ensures that only authenticated clients get the tokens. Also the refresh tokens allow refreshing of the auth sessions without requiring the end user to enter their credentials every time.<\/p>\n<h2>More Resources<\/h2>\n<p>In this post, we described OIDC authentication support in Sync Gateway. Here are some additional resources you might want to check out:<\/p>\n<ul>\n<ul>\n<li><a href=\"https:\/\/docs.couchbase.com\/tutorials\/openid-connect-implicit-flow\/index.html?ref=blog\" rel=\"noopener\" target=\"_blank\">Tutorial: OIDC Authentication using KeyCloak OIDC provider with Sync Gateway<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.8\/configuration-properties.html?ref=blog#databases-this_db-oidc\" rel=\"noopener\" target=\"_blank\">Documentation: Sync Gateway OIDC Configuration<\/a><\/li>\n<li><a href=\"https:\/\/docs.couchbase.com\/sync-gateway\/2.8\/authentication-users.html?ref=blog\" rel=\"noopener\" target=\"_blank\">Documentation: Sync Gateway Client Authentication<\/a><\/li>\n<\/ul>\n<\/ul>\n<p>If you have questions or feedback, please leave a comment below or email me at <a href=\"mailto:priya.rajagopal@couchbase.com\">priya.rajagopal@couchbase.com<\/a>. The <a href=\"https:\/\/www.couchbase.com\/forums\/?ref=blog\" rel=\"noopener\" target=\"_blank\">Couchbase Forums<\/a> are another good place to reach out with questions.<\/p>\n<h2>Acknowledgements<\/h2>\n<p>I would like to thank Sync Gateway architect <a href=\"https:\/\/github.com\/adamcfraser\" rel=\"noopener\" target=\"_blank\">Adam Fraser<\/a> for his input on this blog post.<br \/>\n&nbsp;<\/p>\n<p><em>Catch up with the rest of the posts in this series on authentication and authorization:<\/p>\n<ul>\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/oauth-2-oidc-fundamentals-authentication-authorization\/?ref=blog\" rel=\"noopener\" target=\"_blank\">OAuth 2.0 &#038; OIDC Fundamentals for Authentication &#038; Authorization [Part 1]<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/oidc-implicit-flow-client-authentication-couchbase-sync-gateway\/?ref=blog\" rel=\"noopener\" target=\"_blank\">OIDC Implicit Flow for Client Authentication in Couchbase Sync Gateway [Part 2]<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\/?ref=blog\" rel=\"noopener\" target=\"_blank\">OIDC Authorization Code Flow for Client Authentication in Couchbase Sync Gateway [Part 3]<\/a><\/li>\n<\/ul>\n<\/ul>\n<p><\/em><br \/>\n&nbsp;<br \/>\n&nbsp;<br \/>\n&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Couchbase Sync Gateway supports OpenID Connect or OIDC-based client authentication. In this context, clients may be Couchbase Lite clients that synchronize data with Sync Gateway over the Internet using the websockets-based replication protocol or they could be web frontend or [&hellip;]<\/p>\n","protected":false},"author":1423,"featured_media":11497,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,7667,1813,2389,9409,2366],"tags":[9266,9267,9250,9234,1713,1962,1909],"ppma_author":[8948],"class_list":["post-11496","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-lite","category-security","category-solutions","category-swift","category-sync-gateway","tag-authorization-code-flow","tag-client-authentication","tag-implicit-flow","tag-oidc","tag-openid-connect","tag-role-based-access-control","tag-swift"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>OIDC Authorization Code Flow for Client Authentication in Couchbase Sync Gateway [Part 3 of 3]<\/title>\n<meta name=\"description\" content=\"Discover how to build and understand OpenID Connect (OIDC) authorization code flow-based client authentication within Couchbase Sync Gateway replication.\" \/>\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\/es\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OIDC Authorization Code Flow for Client Authentication in Couchbase Sync Gateway [Part 3 of 3]\" \/>\n<meta property=\"og:description\" content=\"Discover how to build and understand OpenID Connect (OIDC) authorization code flow-based client authentication within Couchbase Sync Gateway replication.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-07-06T09:59:06+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T06:14:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/openid-connect-authorization-code-flow-client-authentication-couchbase-sync-gateway.jpg\" \/>\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\/jpeg\" \/>\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\\\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\\\/\"},\"author\":{\"name\":\"Priya Rajagopal, Senior Director, Product Management\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/c2da90e57717ee4970c48a87a131ac2c\"},\"headline\":\"OIDC Authorization Code Flow for Client Authentication in Couchbase Sync Gateway [Part 3 of 3]\",\"datePublished\":\"2021-07-06T09:59:06+00:00\",\"dateModified\":\"2025-06-14T06:14:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\\\/\"},\"wordCount\":1843,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2021\\\/07\\\/openid-connect-authorization-code-flow-client-authentication-couchbase-sync-gateway.jpg\",\"keywords\":[\"Authorization Code Flow\",\"Client Authentication\",\"Implicit Flow\",\"OIDC\",\"OpenID Connect\",\"Role Based Access Control (RBAC)\",\"swift\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Lite\",\"Security\",\"Solutions\",\"Swift\",\"Sync Gateway\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\\\/\",\"name\":\"OIDC Authorization Code Flow for Client Authentication in Couchbase Sync Gateway [Part 3 of 3]\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2021\\\/07\\\/openid-connect-authorization-code-flow-client-authentication-couchbase-sync-gateway.jpg\",\"datePublished\":\"2021-07-06T09:59:06+00:00\",\"dateModified\":\"2025-06-14T06:14:56+00:00\",\"description\":\"Discover how to build and understand OpenID Connect (OIDC) authorization code flow-based client authentication within Couchbase Sync Gateway replication.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2021\\\/07\\\/openid-connect-authorization-code-flow-client-authentication-couchbase-sync-gateway.jpg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/1\\\/2021\\\/07\\\/openid-connect-authorization-code-flow-client-authentication-couchbase-sync-gateway.jpg\",\"width\":1200,\"height\":628,\"caption\":\"Learn how OIDC authorization code flow-based client authentication works with Couchbase Sync Gateway\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OIDC Authorization Code Flow for Client Authentication in Couchbase Sync Gateway [Part 3 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\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@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\":\"es\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g4b50a54778b979d8c345b036ab138734\",\"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\\\/es\\\/author\\\/priya-rajagopalcouchbase-com\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"OIDC Authorization Code Flow for Client Authentication in Couchbase Sync Gateway [Part 3 of 3]","description":"Descubre c\u00f3mo construir y entender la autenticaci\u00f3n de cliente basada en flujo de c\u00f3digo de autorizaci\u00f3n de OpenID Connect (OIDC) dentro de la replicaci\u00f3n de Couchbase Sync Gateway.","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\/es\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\/","og_locale":"es_MX","og_type":"article","og_title":"OIDC Authorization Code Flow for Client Authentication in Couchbase Sync Gateway [Part 3 of 3]","og_description":"Discover how to build and understand OpenID Connect (OIDC) authorization code flow-based client authentication within Couchbase Sync Gateway replication.","og_url":"https:\/\/www.couchbase.com\/blog\/es\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\/","og_site_name":"The Couchbase Blog","article_published_time":"2021-07-06T09:59:06+00:00","article_modified_time":"2025-06-14T06:14:56+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/openid-connect-authorization-code-flow-client-authentication-couchbase-sync-gateway.jpg","type":"image\/jpeg"}],"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\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\/"},"author":{"name":"Priya Rajagopal, Senior Director, Product Management","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/c2da90e57717ee4970c48a87a131ac2c"},"headline":"OIDC Authorization Code Flow for Client Authentication in Couchbase Sync Gateway [Part 3 of 3]","datePublished":"2021-07-06T09:59:06+00:00","dateModified":"2025-06-14T06:14:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\/"},"wordCount":1843,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/openid-connect-authorization-code-flow-client-authentication-couchbase-sync-gateway.jpg","keywords":["Authorization Code Flow","Client Authentication","Implicit Flow","OIDC","OpenID Connect","Role Based Access Control (RBAC)","swift"],"articleSection":["Best Practices and Tutorials","Couchbase Lite","Security","Solutions","Swift","Sync Gateway"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\/","url":"https:\/\/www.couchbase.com\/blog\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\/","name":"OIDC Authorization Code Flow for Client Authentication in Couchbase Sync Gateway [Part 3 of 3]","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/openid-connect-authorization-code-flow-client-authentication-couchbase-sync-gateway.jpg","datePublished":"2021-07-06T09:59:06+00:00","dateModified":"2025-06-14T06:14:56+00:00","description":"Descubre c\u00f3mo construir y entender la autenticaci\u00f3n de cliente basada en flujo de c\u00f3digo de autorizaci\u00f3n de OpenID Connect (OIDC) dentro de la replicaci\u00f3n de Couchbase Sync Gateway.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/openid-connect-authorization-code-flow-client-authentication-couchbase-sync-gateway.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/openid-connect-authorization-code-flow-client-authentication-couchbase-sync-gateway.jpg","width":1200,"height":628,"caption":"Learn how OIDC authorization code flow-based client authentication works with Couchbase Sync Gateway"},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/oidc-authorization-code-flow-client-authentication-couchbase-sync-gateway\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"OIDC Authorization Code Flow for Client Authentication in Couchbase Sync Gateway [Part 3 of 3]"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos 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":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@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, Directora de Gesti\u00f3n de Productos","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/secure.gravatar.com\/avatar\/acfb2349788955262cd069497a9e7bdb0e97c26326f2e55811e7c1174e9ef1be?s=96&d=mm&r=g4b50a54778b979d8c345b036ab138734","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 es directora s\u00e9nior de gesti\u00f3n de productos en Couchbase y responsable de las plataformas de desarrollo para la nube y el per\u00edmetro. Lleva m\u00e1s de 20 a\u00f1os dedic\u00e1ndose profesionalmente al desarrollo de software en varios puestos de liderazgo t\u00e9cnico y de producto, con m\u00e1s de 10 a\u00f1os centrados en tecnolog\u00edas m\u00f3viles. Como delegada de est\u00e1ndares IPTV de TISPAN, fue una colaboradora clave en las especificaciones de est\u00e1ndares IPTV. Tiene 22 patentes en las \u00e1reas de redes y seguridad de plataformas.","sameAs":["https:\/\/x.com\/rajagp"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/priya-rajagopalcouchbase-com\/"}]}},"acf":[],"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","0":null,"1":"","2":"","3":"","4":"","5":"","6":"","7":"","8":""}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/11496","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/1423"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=11496"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/11496\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/11497"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=11496"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=11496"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=11496"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=11496"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}