Eseguiamo il file aspnet_regsql.exe contenuto nella cartella C:\Windows\Microsoft.NET\Framework64\v2.0.50727. Verrà avviata una procedura guidata che consentirà facilmente di creare il database che verrà utilizzando dal Provider. Sarà sufficiente selezionare l'istanza del Server di Database (WIN-02F9XCJAEJX\SQLEXPRESS nel mio caso) ed assegnare il nome al database (aspnetdb_claim)
Avviare Microsoft SQL Server Management Studio ed eseguire le seguenti query sul db aspnetdb_claim database:
declare @now datetime
set @now= GETDATE()
exec aspnet_Membership_CreateUser 'MyAppName','admin','pwadmin',
'','admin1@contoso.com','','',1,@now,@now,0,0,null
E' necessario innanzitutto identificare il web.config della SharePoint 2010 Central Administration: a tal proposito è possibile ad esempio servirsi di IIS Manager ed espolare il sito "SharePoint Central Administration v4". Nel mio caso la directory di appoggio della Central Administration si trova in C:\inetpub\wwwroot\wss\VirtualDirectories\32388.
<connectionStrings>
<clear />
<add name="AspNetSqlMembershipProvider" connectionString="data source=.\Sqlexpress;Integrated Security=SSPI;Initial Catalog=aspnetdb_claim"
providerName="" />
<add name="MyLocalSQLServer" connectionString="Initial Catalog=aspnetdb_claim;data source=.\Sqlexpress;Integrated Security=SSPI;" />
</connectionStrings>
ed il seguente codicie
<roleManager enabled="true" cacheRolesInCookie="false" cookieName=".ASPXROLES"
cookieTimeout="30" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true"
cookieProtection="All" defaultProvider="AspNetWindowsTokenRoleProvider"
createPersistentCookie="false" maxCachedResults="25">
<providers>
<clear />
<add connectionStringName="AspNetSqlMembershipProvider" applicationName="/"
name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add applicationName="/" name="AspNetWindowsTokenRoleProvider"
type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add name="aspnetrolemanager"
type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="MyLocalSQLServer"
applicationName="MyAppName" />
</providers>
</roleManager>
<membership defaultProvider="AspNetSqlMembershipProvider" userIsOnlineTimeWindow="15"
hashAlgorithmType="">
<providers>
<clear />
<add connectionStringName="AspNetSqlMembershipProvider" enablePasswordRetrieval="false"
enablePasswordReset="true" requiresQuestionAndAnswer="true"
passwordAttemptWindow="10" applicationName="/" requiresUniqueEmail="false"
passwordFormat="Hashed" name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add name="aspnetmembership"
connectionStringName="MyLocalSQLServer"
applicationName="MyAppName"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>
nel <system.web>, andando a sostituire i tag <roleManager> e <membership> se già estenti.
Sempre mediante IIS identificare SharePoint Web Services ed esplorare SecurityTokenServiceApplication. Nel nostro caso si verrebbe reindirizzati alal seguente cartella C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\WebServices\.
Sostituire il web.config presente con
web.config (6,73 kb), oppure aggiungere al web.config già presente il seguente codice appenda dopo <configuration>
<connectionStrings>
<clear />
<add name="AspNetSqlMembershipProvider" connectionString="data source=.\Sqlexpress;Integrated Security=SSPI;Initial Catalog=aspnetdb_claim"
providerName="" />
<add name="MyLocalSQLServer" connectionString="Initial Catalog=aspnetdb_claim;data source=.\Sqlexpress;Integrated Security=SSPI;" />
</connectionStrings>
e la sezione seguente appena prima di </configuration>:
<system.web>
<roleManager enabled="true" cacheRolesInCookie="false" cookieName=".ASPXROLES" cookieTimeout="30" cookiePath="/" cookieRequireSSL="false" cookieSlidingExpiration="true" cookieProtection="All" createPersistentCookie="false" maxCachedResults="25">
<providers>
<add connectionStringName="AspNetSqlMembershipProvider" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add name="aspnetrolemanager"
type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
connectionStringName="MyLocalSQLServer"
applicationName="MyAppName" />
</providers>
</roleManager>
<membership userIsOnlineTimeWindow="15" hashAlgorithmType="">
<providers>
<add connectionStringName="AspNetSqlMembershipProvider" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" passwordAttemptWindow="10" applicationName="/" requiresUniqueEmail="false" passwordFormat="Hashed" name="AspNetSqlMembershipProvider" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<add name="aspnetmembership"
connectionStringName="MyLocalSQLServer"
applicationName="MyAppName"
type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>
</system.web>
Infine è necessario sostituire il web.config della nostra applicazione web allocata in C:\inetpub\wwwroot\wss\VirtualDirectories\8676 con
web.config (48,19 kb) o in alternativa modificare il file di configurazione già presente aggiungendo:
<connectionStrings>
<add name="MyLocalSQLServer" connectionString="data source=.\Sqlexpress;Integrated Security=SSPI;Initial Catalog=aspnetdb_claim" providerName="" />
</connectionStrings>
subito dopo </configSections> e
<membership defaultProvider="i">
<providers>
<add name="i" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
<add name="aspnetmembership" connectionStringName="MyLocalSQLServer" applicationName="MyAppName" type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</providers>
</membership>
<roleManager defaultProvider="c" enabled="true" cacheRolesInCookie="false">
<providers>
<add name="c" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthRoleProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
<add name="aspnetrolemanager" type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" connectionStringName="MyLocalSQLServer" applicationName="MyAppName" />
</providers>
</roleManager>
appena prima di </system.web>, sostituendo nel caso in cui esistano i tag già presenti.
STEP 5: Testare il modello di autentificazione
Utilizzando la Central Administration website, sotto Application Management cliccare su Create site collection.
Nella casella a discesa Web Application selezionare la nostra applicazione, http://WIN-02F9XCJAEJX:8676/ e quindi assegnare un titolo al sito. Nella texbox User name scrivere admin, ovvero il nome dell'utente che abbiamo inserito nel DB e controllare l'esistenza dell'utente.
Confermare la creazione del sito e nel browser digitare http://WIN-02F9XCJAEJX:8676/ . Se tutto funziona si viene reindirizzati ad una pagina di login dove si deve inserire lo user name admin e la password pwadmin.
STEP 6: Risolvere gli eventuali problemi
Il problema che io ho incontrato era legato alla non attivazione di Security Token Service Application .