{"id":297,"date":"2016-05-19T01:05:19","date_gmt":"2016-05-19T05:05:19","guid":{"rendered":"http:\/\/blogs.visigo.com\/chriscoulson\/?p=297"},"modified":"2022-07-19T15:06:09","modified_gmt":"2022-07-19T19:06:09","slug":"configuring-forms-based-authentication-in-sharepoint-2016-sharepoint-2019-part-1-creating-the-membership-database","status":"publish","type":"post","link":"https:\/\/blogs.visigo.com\/chriscoulson\/configuring-forms-based-authentication-in-sharepoint-2016-sharepoint-2019-part-1-creating-the-membership-database\/","title":{"rendered":"Configuring Forms Based Authentication in SharePoint 2016, SharePoint 2019 and SharePoint Subscription Edition \u2013 Part 1 \u2013 Creating the Membership Database"},"content":{"rendered":"<p>Configuring forms based authentication (FBA) in SharePoint 2016, SharePoint 2019 and SharePoint Subscription Edition is exactly the same process as configuring it for SharePoint 2013. \u00a0I&#8217;ve recreated the <a href=\"https:\/\/blogs.visigo.com\/chriscoulson\/configuring-forms-based-authentication-in-sharepoint-2013-part-1-creating-the-membership-database\/\">SharePoint 2013 FBA\u00a0tutorial<\/a> specifically for SharePoint 2016, SharePoint 2019 and SharePoint Subscription Edition, using screenshots from SharePoint 2016 and Windows Server 2012 R2. \u00a0I have changed the tutorial to use the <a href=\"https:\/\/www.visigo.com\/products\/sharepoint-fba-pack\/\">SharePoint FBA Pack<\/a> to create the FBA users, but otherwise it remains the same and can be used interchangeably between SharePoint 2013 and SharePoint 2016\/2019\/Subscription Edition.<\/p>\n<p>I\u2019ll go through all of the steps required to setup FBA for SharePoint 2016, 2019 and Subscription Edition, from start to finish. \u00a0I\u2019ve broken down the steps into 4 sections, so if you already have an existing membership database setup from a previous version of SharePoint, feel free to skip forward to\u00a0<a title=\"Configuring Forms Based Authentication in SharePoint 2016, SharePoint 2019 and SharePoint Subscription Edition \u2013 Part 3 \u2013 Editing the Web.Config Files\" href=\"https:\/\/blogs.visigo.com\/chriscoulson\/configuring-forms-based-authentication-in-sharepoint-2016-sharepoint-2019-part-2-editing-the-web-config-files\/\">Part 2<\/a>.<\/p>\n<p><a href=\"https:\/\/blogs.visigo.com\/chriscoulson\/configuring-forms-based-authentication-in-sharepoint-2016-sharepoint-2019-part-1-creating-the-membership-database\/\">Part 1 &#8211; Creating the Membership Database<\/a><\/p>\n<p><a href=\"https:\/\/blogs.visigo.com\/chriscoulson\/configuring-forms-based-authentication-in-sharepoint-2016-sharepoint-2019-part-2-editing-the-web-config-files\/\">Part 2 &#8211; Editing the Web.Config Files<\/a><\/p>\n<p><a href=\"https:\/\/blogs.visigo.com\/chriscoulson\/configuring-forms-based-authentication-in-sharepoint-2016-sharepoint-2019-part-3-configuring-sharepoint\/\">Part 3 &#8211; \u00a0Configuring SharePoint<\/a><\/p>\n<p><a href=\"https:\/\/blogs.visigo.com\/chriscoulson\/configuring-forms-based-authentication-in-sharepoint-2016-sharepoint-2019-part-4-adding-users-to-the-membership-database\/\">Part 4 &#8211; Adding Users to the Membership Database<\/a><\/p>\n<p>You can also watch a video of the whole process on YouTube: <a href=\"https:\/\/youtu.be\/a-oTHcWAEmA\">Configuring Forms Based Authentication in SharePoint 2016 and SharePoint 2019<\/a>.<\/p>\n<h2>Part 1 \u2013 Creating the Membership Database<\/h2>\n<p>The first thing you need when configuring FBA for SharePoint is a place to keep all of the usernames and passwords. ASP.Net comes with a tool that we\u2019ll use to create a membership database to store the logon information.<\/p>\n<ul>\n<li>Navigate to c:\\windows\\Microsoft.NET\\Framework64\\v4.0.30319\\<\/li>\n<li>Run \u201caspnet_regsql.exe\u201d<a href=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_1_folder.png\" rel=\"attachment wp-att-303\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-303\" src=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_1_folder-500x320.png\" alt=\"aspnet_regsql.exe file\" width=\"500\" height=\"320\" srcset=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_1_folder-500x320.png 500w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_1_folder-300x192.png 300w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_1_folder-768x492.png 768w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_1_folder.png 934w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/li>\n<li>A welcome screen will appear. Click Next.<a href=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_2_wizard.png\" rel=\"attachment wp-att-304\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-304\" src=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_2_wizard-500x386.png\" alt=\"aspnet_regsql wizard welcome\" width=\"500\" height=\"386\" srcset=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_2_wizard-500x386.png 500w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_2_wizard-300x232.png 300w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_2_wizard.png 590w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/li>\n<li>Select \u201cConfigure SQL Server for application services\u201d and click Next.<a href=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_3_wizard_task.png\" rel=\"attachment wp-att-305\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-305\" src=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_3_wizard_task-500x386.png\" alt=\"aspnet_regsql wizard task\" width=\"500\" height=\"386\" srcset=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_3_wizard_task-500x386.png 500w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_3_wizard_task-300x232.png 300w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_3_wizard_task.png 587w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/li>\n<li>Enter the name of your server and your authentication information. \u00a0In this case SQL Server is installed on the same server as SharePoint and I am logged in as an administrator and have full access to SQL Server, so I choose Windows Authentication.For the database name, I just leave it as &lt;default&gt;, which creates a database called \u201caspnetdb\u201d.<a href=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_4_wizard_db.png\" rel=\"attachment wp-att-306\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-306\" src=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_4_wizard_db-500x384.png\" alt=\"aspnet_regsql wizard select db\" width=\"500\" height=\"384\" srcset=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_4_wizard_db-500x384.png 500w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_4_wizard_db-300x231.png 300w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_4_wizard_db.png 588w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/li>\n<li>A Confirm Your Settings screen will appear. Click Next.<a href=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_5_wizard_confirm.png\" rel=\"attachment wp-att-307\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-307\" src=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_5_wizard_confirm-500x385.png\" alt=\"aspnet_regsql wizard confirm\" width=\"500\" height=\"385\" srcset=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_5_wizard_confirm-500x385.png 500w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_5_wizard_confirm-300x231.png 300w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_5_wizard_confirm.png 589w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/li>\n<li>A \u201cdatabase has been created or modified\u201d screen will appear. Click finish and the wizard will close.<a href=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_6_wizard_finish.png\" rel=\"attachment wp-att-308\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-308\" src=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_6_wizard_finish-500x386.png\" alt=\"aspnet_regsql wizard finish\" width=\"500\" height=\"386\" srcset=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_6_wizard_finish-500x386.png 500w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_6_wizard_finish-300x232.png 300w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_6_wizard_finish.png 588w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/li>\n<li>Now that the database has been created, we\u2019ll have to give SharePoint permissions to read and write to it. We\u2019re going to connect to the database with Windows Authentication, so we\u2019re going to have to give those permissions to the service account that is being used to run SharePoint.First, let\u2019s find out the service account that\u2019s being used to run SharePoint. Open IIS, go to \u201cApplication Pools\u201d. Take a look at the \u201cIdentity\u201d that is being used to run the SharePoint application pools. On my test server, it happens to be my administrator account that is being used, but it will probably be different on your machine. Make note of the identity used.<a href=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_7_iis_apppool.png\" rel=\"attachment wp-att-309\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-309\" src=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_7_iis_apppool-500x257.png\" alt=\"IIS Application Pool\" width=\"500\" height=\"257\" srcset=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_7_iis_apppool-500x257.png 500w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_7_iis_apppool-300x154.png 300w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_7_iis_apppool-768x395.png 768w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_7_iis_apppool.png 1125w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/li>\n<li>Now that we know what account is being used to run SharePoint, we can assign it the appropriate permissions to the membership database we created. \u00a0Open up SQL Server Management Studio and log in as an administrator.<a href=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_8_SqlServerManagementStudio.png\" rel=\"attachment wp-att-310\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-310\" src=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_8_SqlServerManagementStudio-500x267.png\" alt=\"SQL Server Management Studio\" width=\"500\" height=\"267\" srcset=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_8_SqlServerManagementStudio-500x267.png 500w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_8_SqlServerManagementStudio-300x160.png 300w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_8_SqlServerManagementStudio-768x411.png 768w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_8_SqlServerManagementStudio.png 1350w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/li>\n<li>Under Security\/Logins find the user that SharePoint runs as. \u00a0Assuming this is the same database server that SharePoint was installed on, the user should already exist.Right click on the user and click \u2018Properties\u2019.<a href=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_9_SqlServerManagementStudio_EditLogin.png\" rel=\"attachment wp-att-311\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-311\" src=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_9_SqlServerManagementStudio_EditLogin-500x268.png\" alt=\"SQL Server Select Login\" width=\"500\" height=\"268\" srcset=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_9_SqlServerManagementStudio_EditLogin-500x268.png 500w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_9_SqlServerManagementStudio_EditLogin-300x161.png 300w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_9_SqlServerManagementStudio_EditLogin-768x411.png 768w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_9_SqlServerManagementStudio_EditLogin.png 1350w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/li>\n<li>Go to the \u201cUser Mapping\u201d Page. Check the \u201cMap\u201d checkbox for the aspnetdb database. With the aspnetdb database selected, check the \u201cdb_owner\u201d role membership and click OK. This user should now have full permissions to read and write to the aspnetdb membership database.<a href=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_9_SqlServerManagementStudio_UserMapping.png\" rel=\"attachment wp-att-312\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-312\" src=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_9_SqlServerManagementStudio_UserMapping-500x449.png\" alt=\"SQL Server Edit User Mapping\" width=\"500\" height=\"449\" srcset=\"https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_9_SqlServerManagementStudio_UserMapping-500x449.png 500w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_9_SqlServerManagementStudio_UserMapping-300x269.png 300w, https:\/\/blogs.visigo.com\/chriscoulson\/wp-content\/uploads\/2016\/05\/sharepoint2013fba_membershipdb_9_SqlServerManagementStudio_UserMapping.png 703w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/a><\/li>\n<\/ul>\n<p>Continue to <a href=\"https:\/\/blogs.visigo.com\/chriscoulson\/configuring-forms-based-authentication-in-sharepoint-2016-sharepoint-2019-part-2-editing-the-web-config-files\/\">Part 2 &#8211; Editing the Web.Config Files<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Configuring forms based authentication (FBA) in SharePoint 2016, SharePoint 2019 and SharePoint Subscription Edition is exactly the same process as configuring it for SharePoint 2013. \u00a0I&#8217;ve recreated the SharePoint 2013 FBA\u00a0tutorial specifically for SharePoint 2016, SharePoint 2019 and SharePoint Subscription Edition, using screenshots from SharePoint 2016 and Windows Server 2012 R2. \u00a0I have changed the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[129,19,5],"tags":[321,94,296,130,20,316,159,294,21,297,325,326,328,329,330,295,293],"class_list":["post-297","post","type-post","status-publish","format-standard","hentry","category-configuration","category-forms-based-authentication","category-sharepoint","tag-net","tag-asp-net","tag-aspnetdb","tag-central-admin","tag-fba","tag-forms-based-authentication","tag-iis","tag-machine-config","tag-membership","tag-membership-provider","tag-sharepoint-2016","tag-sharepoint-2016-fba-pack","tag-sharepoint-2019","tag-sharepoint-2019-fba-pack","tag-sharepoint-fba-pack","tag-sqlmembershipprovider","tag-web-config"],"_links":{"self":[{"href":"https:\/\/blogs.visigo.com\/chriscoulson\/wp-json\/wp\/v2\/posts\/297","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.visigo.com\/chriscoulson\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.visigo.com\/chriscoulson\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.visigo.com\/chriscoulson\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.visigo.com\/chriscoulson\/wp-json\/wp\/v2\/comments?post=297"}],"version-history":[{"count":17,"href":"https:\/\/blogs.visigo.com\/chriscoulson\/wp-json\/wp\/v2\/posts\/297\/revisions"}],"predecessor-version":[{"id":486,"href":"https:\/\/blogs.visigo.com\/chriscoulson\/wp-json\/wp\/v2\/posts\/297\/revisions\/486"}],"wp:attachment":[{"href":"https:\/\/blogs.visigo.com\/chriscoulson\/wp-json\/wp\/v2\/media?parent=297"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.visigo.com\/chriscoulson\/wp-json\/wp\/v2\/categories?post=297"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.visigo.com\/chriscoulson\/wp-json\/wp\/v2\/tags?post=297"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}