I would create two different zones in the WSS Admin, one for the internal network and one that has annonymous access enabled for external access. I would then setup FBA with the users that will be editing the WSS site...
Here is what I did for the extranet that I was developing...
- Create a database that will store all the information, credentials, roles, and users for the forms based authentication site.
- Run "%windir%\Microsoft.Net\Framework\v2.0.50727\aspnet_regsql.exe
- Follow the online prompts choosing your Database server, and the Database name
- Configure Membership & Role Providers
- Open Visual Studio 2005
- Create a new ASP.NET Web Site
- Add a connection string to the web.config file (see sidebar)
- Under <system.web>
- Add the membership provider to the web.config file (see sidebar)
- Add the role provider to the web.config file (see sidebar)
- Things to take note on
- Name and connectionString
- Default entries are in machine.config
- Make sure that your names are unique
- Launch ASP.NET 2.0 Web Administration site from VS2005 (Website --> ASP.NET Configuration)
- Switch from Integrated Authentication to Forms Authentication
- Select "Security"
- Select "Select Authentication Type" in Users container
- Select "From the Internet"
- Select "Done"
- Create a User
- Select "Security"
- Select "Create User"
- Enter in Username, Password, Email, etc.
- Test the providers
- Select "Provider" tab
- Select "Select a Different Provider For Each Feature (Advanced)"
- Select "Test" for the provider that was created
- Create Web applications for each type of Authentication needed
- Intranet
- Create a Web Application
- Set the "Load Balanced URL Zone" to Default
- Internet
- Extend a Web Application
- Select the original web application to the Intranet site
- Set the "Anonymous Access" to No
- Set the "Load Balanced URL Zone" to Internet
- Configure the web applications to communicate with the ASP.NET 2.0 Forms Authentication Data Store
- Modify web.config files for Intranet, and Internet
- Add the connectionString to each site
- Just after the </SharePoint> tag and opening <system.web> tag
- Add the membership and role provider markup
- Just after the <system.web> tag
- Modify web.config file for Central Administration Site
- Add the connectionString to each site
- Just after the </SharePoint> tag and opening <system.web> tag
- Add the membership and role provider markup
- Just after the <system.web> tag
- Change the <roleManager> tag to: <roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider">
- Enable Forms Authentication on the external facing Web Applications
- Browse to Central Administration website
- Select the Application Management tab
- Select Authentication Providers
- Select each external facing zone
- Authentication Type: Forms
- Enable Anonymous Access
- Membership Provider Name: WSPSqlMembershipProvider
- Role Manager name: WSPRoleProvider
- Grant access to the user from above by going to the intranet site and adding the user
- Test by going to the site URL and logging in as the user created from above
- Enable Anonymous Access
- Create a second user in ASP.NET DB for administration of the FBA side of the site
- Grant second user Full Control on the site via Web Application policies
- Browse to Central Administration website
- Select Application Management
- Select Policy for Web Application
- Select the correct Web Application
- Select Add Users from the toolbar
- Select the Internet Zone or the external facing zone
- Click Next
- Enter in the Administrator user for Choose Users
- Select Full Control
- Click Finish
- Browse to the External facing site
- Login using the Administrator account from step b
- Select Site Actions - Site Settings
- Modify all Site Settings
- Select Advanced Permissions
- Select Settings then select Anonymous Access
- Change Anonymous Access Setting to Entire Web Site and click OK
- Configure a section of the site for authenticated users only
I pulled this from Andrew Connells blog, plus I added a little to what he was talking about...
Hope this help.
Here is the web.config additions that I also made...
Connection String Sidebar
<connectionStrings>
<add name="WSPSqlConnString"
connectionString="server=[SQLServerName];
database=[asnetdb];
Integrated Security=SSPI;"
providerName="System.Data.SqlClient" />
</connectionStrings>
Membership Provider Sidebar
<!-- membership provider -->
<membership defaultProvider="WSPSqlMembershipProvider">
<providers>
<add name="WSPSqlMembershipProvider"
type="System.Web.Security.SqlMembershipProvider,
System.Web,
Version=2.0.0.0,
Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="WSPSqlConnString"
enablePasswordRetrieval="false"
enablePasswordReset="true"
requiresQuestionAndAnswer="false"
applicationName="/"
requiresUniqueEmail="false"
passwordFormat="Hashed"
maxInvalidPasswordAttempts="5"
minRequiredPasswordLength="1"
minRequiredNonalphanumericCharacters="0"
passwordAttemptWindow="10"
passwordStrengthRegularExpression="" />
</providers>
</membership>
Role Provider Sidebar
<!-- role provider -->
<roleManager enabled="true" defaultProvider="WSPRoleProvider">
<providers>
<add name="WSPRoleProvider"
type="System.Web.Security.SqlRoleProvider,
System.Web,
Version=2.0.0.0,
Culture=neutral,
PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="WSPSqlConnString"
applicationName="/" />
</providers>
</roleManager>
HTH...
Jeremy