{"id":1127,"date":"2017-05-31T13:31:31","date_gmt":"2017-05-31T20:31:31","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/authentication-authorization-rbac-net\/"},"modified":"2017-05-31T13:31:31","modified_gmt":"2017-05-31T20:31:31","slug":"authentication-authorization-rbac-net","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/ko\/authentication-authorization-rbac-net\/","title":{"rendered":"Authentication and Authorization with RBAC in .NET"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Authentication and authorization are vastly improved in Couchbase Server 5.0. We\u2019ve been blogging about the new RBAC features in the developer preview for a while.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/authentication-authorization-rbac\/\">Authentication and Authorization with RBAC<\/a> &#8211; introduction \/ part 1<\/li>\n\n\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/authentication-authorization-rbac-part-2\/\">Authentication and Authorization with RBAC (Part 2)<\/a> &#8211; managing users<\/li>\n\n\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/new-sdk-authentication\/\">Improved SDK Authentication Methods &#8211; Couchbase 5.0<\/a> &#8211; an introduction featuring Python, Java, PHP, and .NET<\/li>\n\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Now that Couchbase Server 5.0 Beta is released, I\u2019m writing a more in-depth blog post about how to use the Couchbase .NET SDK along with these new features.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>The full code samples used in this blog post are <a href=\"https:\/\/github.com\/couchbaselabs\/blog-source-code\/tree\/master\/Groves\/067RBACandSDK\/src\/rbacsdk\">available for you on Github<\/a>.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Create a bucket<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">As I mentioned in the previous posts, the days of buckets with passwords are gone. The future belongs to users\u2014\u200busers that have specific permission(s) to specific bucket(s).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let\u2019s start by creating a bucket. In the Couchbase UI, login as the Administrator that you created when you installed Couchbase. Go to &#8220;Buckets&#8221; and click &#8220;ADD BUCKET&#8221; (top right). You will see the &#8220;Add Data Bucket&#8221; dialog. Notice that there is no longer a &#8220;password&#8221; field (not even in &#8220;Advanced bucket settings&#8221;).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/wp-content\/uploads\/sites\/5\/2026\/05\/06701-add-new-bucket.png\" alt=\"Add new bucket - no authentication options anymore\"><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Give the bucket a name and some amount of memory, and click &#8220;Add Bucket&#8221;. Now you have a bucket. But, other than an Administrator in the UI, no one can access this bucket yet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Create a user<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In order to get access to this bucket, you must create a user. In Couchbase 5.0, &#8220;users&#8221; are an entirely new feature, bringing richer authentication and authorization features to Couchbase Server.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">While still logged in as an administrator, go to &#8220;Security&#8221; to see a list of users. Click &#8220;ADD USER&#8221; (top right).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/wp-content\/uploads\/sites\/5\/2026\/05\/06702-add-new-user-for-authentication.png\" alt=\"Adding a new user for authentication and authorization\"><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Create a user with whatever name and password you\u2019d like. You can choose which roles the user has, and for which buckets (when applicable). Let\u2019s give this user Data Writer and Data Reader roles, for the bucket that was just created (e.g. &#8220;mybucket&#8221;), but NOT any Query roles.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/wp-content\/uploads\/sites\/5\/2026\/05\/06703-add-data-roles.png\" alt=\"Adding authorization for data read and data write\"><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once the user is added, you can hover over the roles to get a description of what the role means.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/wp-content\/uploads\/sites\/5\/2026\/05\/06704-tool-tip-authorization.gif\" alt=\"Authorization tool tip\"><\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Authentication and authorization with the Couchbase .NET SDK<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Now that we have a bucket and a user, let\u2019s see how to use them with the .NET SDK.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Start by creating a <code>Cluster<\/code> object.<\/p>\n\n\n<p>[crayon highlight decode=&#8221;true&#8221;]<code class=\"language-C#\">var cluster = new Cluster(new ClientConfiguration<br \/>\n{<br \/>\n    Servers = new List&lt;Uri&gt; { new Uri(\"https:\/\/localhost:8091\") }<br \/>\n});<\/code>[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You have a cluster, but your program has not been authenticated yet. Use a <code>PasswordAuthenticator<\/code> object to specify the credentials. Then, use that object with the cluster\u2019s <code>Authenticate<\/code> method. In this example below, I\u2019m using incorrect credentials.<\/p>\n\n\n<p>[crayon highlight decode=&#8221;true&#8221;]<code class=\"language-C#\">var authenticator = new PasswordAuthenticator(\"myuser\", \"wrongpassword\");<br \/>\ncluster.Authenticate(authenticator);<\/code>[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now, if I try to perform an operation like <code>OpenBucket<\/code> on the cluster, an exception is thrown.<\/p>\n\n\n<p>[crayon highlight decode=&#8221;true&#8221;]<code class=\"language-C#\">try<br \/>\n{<br \/>\n    var bucket = cluster.OpenBucket(\"mybucket\");<br \/>\n}<br \/>\ncatch (Exception ex)<br \/>\n{<br \/>\n    Console.WriteLine(\"Error getting bucket.\");<br \/>\n    Console.WriteLine(ex.Message);<br \/>\n}<\/code>[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/wp-content\/uploads\/sites\/5\/2026\/05\/06705-authentication-error.png\" alt=\"Error in authentication\"><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Now, let\u2019s try it again using the correct credentials. Authentication will work. But let\u2019s talk about authorization next.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Remember that I only gave this user Data Writer and Data Reader roles (for mybucket). So, if I authenticate and insert a document now, it works.<\/p>\n\n\n<p>[crayon highlight decode=&#8221;true&#8221;]<code class=\"language-C#\">var cluster = new Cluster(new ClientConfiguration<br \/>\n{<br \/>\n    Servers = new List&lt;Uri&gt; { new Uri(\"https:\/\/localhost:8091\") }<br \/>\n});<br \/>\nvar authenticator = new PasswordAuthenticator(\"myuser\", \"password\");<br \/>\ncluster.Authenticate(authenticator);<br \/>\nvar bucket = cluster.OpenBucket(\"mybucket\");<\/p>\n<p>\/\/ insert a document, this should be allowed<br \/>\nvar result = bucket.Insert(Guid.NewGuid().ToString(), new {foo = \"bar\"});<br \/>\nConsole.WriteLine(\"Insert was successful: \" + result.Success);<\/code>[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/wp-content\/uploads\/sites\/5\/2026\/05\/06706-console-output-authorization.png\" alt=\"Console output when authentication and authorization are valid\"><\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But if I tried to, for instance, execute a <a href=\"https:\/\/www.couchbase.com\/products\/n1ql\/\">N1QL (SQL for JSON) query<\/a>, then it would fail. This is because that user is not authorized to execute queries.<\/p>\n\n\n<p>[crayon highlight decode=&#8221;true&#8221;]<code class=\"language-C#\">var queryResult = bucket.Query&lt;int&gt;(\"SELECT COUNT(1) FROM `\" + bucket.Name + \"`\");<br \/>\nConsole.WriteLine(\"Query was successful: \" + queryResult.Success);<br \/>\nqueryResult.Errors.ForEach(e =&gt; Console.WriteLine(\"Error: \" + e.Message));<\/code>[\/crayon]<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I\u2019m just doing a simple <code>COUNT(1)<\/code> aggregation query. Since that user is not authorized, here\u2019s what\u2019s displayed:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span class=\"image\"><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/wp-content\/uploads\/sites\/5\/2026\/05\/06707-authorization-query.png\" alt=\"No authorization for running a query\"><\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">One more thing<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">If you are worried about the effect this will have on upgrading from Couchbase Server 4.x to Couchbase Server 5.0, then here\u2019s a tip. If you create a user with the same name as the bucket (e.g. a bucket called &#8220;foo&#8221; and a user named &#8220;foo&#8221;), then the older Couchbase .NET APIs that still expect a bucket password will work as before. Just give that user a &#8220;Cluster Admin&#8221; role for now. This is a good temporary fix until you can re-engineer your system to use a regimented approach to role.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Couchbase Server 5.0 is out now in beta! These role-based authentication (RBAC) features make Couchbase a leader in document database security, and I\u2019m personally very pleased that Couchbase is going in this direction. Security is important, but too often overlooked by developers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you have any questions, please <a href=\"https:\/\/www.couchbase.com\/forums\/\">ask away in the Couchbase Forums<\/a>, leave a comment below, or <a href=\"https:\/\/twitter.com\/mgroves\">ping me on Twitter @mgroves<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Authentication and authorization are vastly improved in Couchbase Server 5.0. We\u2019ve been blogging about the new RBAC features in the developer preview for a while. Now that Couchbase Server 5.0 Beta is released, I\u2019m writing a more in-depth blog post about how to use the Couchbase .NET SDK along with these new features. The full [&hellip;]<\/p>\n","protected":false},"author":71,"featured_media":1126,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"_acf":"","footnotes":""},"categories":[33,54,94],"tags":[259,260,261],"ppma_author":[186],"class_list":["post-1127","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dotnet","category-couchbase-server","category-security","tag-authentication","tag-authorization","tag-rbac"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.6 (Yoast SEO v27.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Authentication and Authorization with RBAC in .NET - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Examples of using the Couchbase .NET SDK with the new authentication and authorization features of Couchbase Server 5.0\" \/>\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\/ko\/authentication-authorization-rbac-net\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Authentication and Authorization with RBAC in .NET\" \/>\n<meta property=\"og:description\" content=\"Examples of using the Couchbase .NET SDK with the new authentication and authorization features of Couchbase Server 5.0\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/ko\/authentication-authorization-rbac-net\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-05-31T20:31:31+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/059-Hero-Key-Locks-Security-Authentication-Authorization-e1657658890360-1.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"1125\" \/>\n\t<meta property=\"og:image:height\" content=\"750\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Matthew Groves\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mgroves\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Groves\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/authentication-authorization-rbac-net\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/authentication-authorization-rbac-net\\\/\"},\"author\":{\"name\":\"Matthew Groves\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/3929663e372020321b0152dc4fa65a58\"},\"headline\":\"Authentication and Authorization with RBAC in .NET\",\"datePublished\":\"2017-05-31T20:31:31+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/authentication-authorization-rbac-net\\\/\"},\"wordCount\":719,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/authentication-authorization-rbac-net\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/059-Hero-Key-Locks-Security-Authentication-Authorization-e1657658890360-1.jpeg\",\"keywords\":[\"authentication\",\"authorization\",\"RBAC\"],\"articleSection\":[\".NET\",\"Couchbase Server\",\"Security\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/authentication-authorization-rbac-net\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/authentication-authorization-rbac-net\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/authentication-authorization-rbac-net\\\/\",\"name\":\"Authentication and Authorization with RBAC in .NET - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/authentication-authorization-rbac-net\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/authentication-authorization-rbac-net\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/059-Hero-Key-Locks-Security-Authentication-Authorization-e1657658890360-1.jpeg\",\"datePublished\":\"2017-05-31T20:31:31+00:00\",\"description\":\"Examples of using the Couchbase .NET SDK with the new authentication and authorization features of Couchbase Server 5.0\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/authentication-authorization-rbac-net\\\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/authentication-authorization-rbac-net\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/authentication-authorization-rbac-net\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/059-Hero-Key-Locks-Security-Authentication-Authorization-e1657658890360-1.jpeg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/059-Hero-Key-Locks-Security-Authentication-Authorization-e1657658890360-1.jpeg\",\"width\":1125,\"height\":750},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/authentication-authorization-rbac-net\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Authentication and Authorization with RBAC in .NET\"}]},{\"@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\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"width\":\"1024\",\"height\":\"1024\",\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/3929663e372020321b0152dc4fa65a58\",\"name\":\"Matthew Groves\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=gba51e6aacc53995c323a634e4502ef54\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g\",\"caption\":\"Matthew Groves\"},\"description\":\"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.\",\"sameAs\":[\"https:\\\/\\\/crosscuttingconcerns.com\",\"https:\\\/\\\/x.com\\\/mgroves\"],\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/ko\\\/author\\\/matthew-groves\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Authentication and Authorization with RBAC in .NET - The Couchbase Blog","description":"Examples of using the Couchbase .NET SDK with the new authentication and authorization features of Couchbase Server 5.0","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\/ko\/authentication-authorization-rbac-net\/","og_locale":"ko_KR","og_type":"article","og_title":"Authentication and Authorization with RBAC in .NET","og_description":"Examples of using the Couchbase .NET SDK with the new authentication and authorization features of Couchbase Server 5.0","og_url":"https:\/\/www.couchbase.com\/blog\/ko\/authentication-authorization-rbac-net\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-05-31T20:31:31+00:00","og_image":[{"width":1125,"height":750,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/059-Hero-Key-Locks-Security-Authentication-Authorization-e1657658890360-1.jpeg","type":"image\/jpeg"}],"author":"Matthew Groves","twitter_card":"summary_large_image","twitter_creator":"@mgroves","twitter_misc":{"Written by":"Matthew Groves","Est. reading time":"5\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/authentication-authorization-rbac-net\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/authentication-authorization-rbac-net\/"},"author":{"name":"Matthew Groves","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58"},"headline":"Authentication and Authorization with RBAC in .NET","datePublished":"2017-05-31T20:31:31+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/authentication-authorization-rbac-net\/"},"wordCount":719,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/authentication-authorization-rbac-net\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/059-Hero-Key-Locks-Security-Authentication-Authorization-e1657658890360-1.jpeg","keywords":["authentication","authorization","RBAC"],"articleSection":[".NET","Couchbase Server","Security"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/authentication-authorization-rbac-net\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/authentication-authorization-rbac-net\/","url":"https:\/\/www.couchbase.com\/blog\/authentication-authorization-rbac-net\/","name":"Authentication and Authorization with RBAC in .NET - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/authentication-authorization-rbac-net\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/authentication-authorization-rbac-net\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/059-Hero-Key-Locks-Security-Authentication-Authorization-e1657658890360-1.jpeg","datePublished":"2017-05-31T20:31:31+00:00","description":"Examples of using the Couchbase .NET SDK with the new authentication and authorization features of Couchbase Server 5.0","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/authentication-authorization-rbac-net\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/authentication-authorization-rbac-net\/"]}]},{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/authentication-authorization-rbac-net\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/059-Hero-Key-Locks-Security-Authentication-Authorization-e1657658890360-1.jpeg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/059-Hero-Key-Locks-Security-Authentication-Authorization-e1657658890360-1.jpeg","width":1125,"height":750},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/authentication-authorization-rbac-net\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Authentication and Authorization with RBAC in .NET"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","description":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4, NoSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4","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":"ko-KR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"\uce74\uc6b0\uce58\ubca0\uc774\uc2a4 \ube14\ub85c\uadf8","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","width":"1024","height":"1024","caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3929663e372020321b0152dc4fa65a58","name":"\ub9e4\uc288 \uadf8\ub85c\ube0c\uc2a4","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=gba51e6aacc53995c323a634e4502ef54","url":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/70feb1b28a099ad0112b8d21fe1e81e1a4524beed3e20b7f107d5370e85a07ab?s=96&d=mm&r=g","caption":"Matthew Groves"},"description":"Matthew D. Groves is a guy who loves to code. It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything. He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s. He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community. He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP.","sameAs":["https:\/\/crosscuttingconcerns.com","https:\/\/x.com\/mgroves"],"url":"https:\/\/www.couchbase.com\/blog\/ko\/author\/matthew-groves\/"}]}},"acf":[],"authors":[{"term_id":186,"user_id":71,"is_guest":0,"slug":"matthew-groves","display_name":"Matthew Groves","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","author_category":"","first_name":"Matthew","last_name":"Groves","user_url":"","job_title":"","description":"Matthew D. Groves is a guy who loves to code.  It doesn't matter if it's C#, jQuery, or PHP: he'll submit pull requests for anything.  He has been coding professionally ever since he wrote a QuickBASIC point-of-sale app for his parent's pizza shop back in the 90s.  He currently works as a Senior Product Marketing Manager for Couchbase. His free time is spent with his family, watching the Reds, and getting involved in the developer community.  He is the author of AOP in .NET, Pro Microservices in .NET, a Pluralsight author, and a Microsoft MVP."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/1127","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/users\/71"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/comments?post=1127"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/posts\/1127\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media\/1126"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/media?parent=1127"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/categories?post=1127"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/tags?post=1127"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/ko\/wp-json\/wp\/v2\/ppma_author?post=1127"}],"curies":[{"name":"\uc798\ud588\uc5b4","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}