//http://www.cnblogs.com/OceanEyes/p/custom-provider-in-sharepoint-2013-fba-authentication.html
?
由于項目的需要,登錄SharePoint Application的用戶將從一個統一平臺中獲取,而不是從Domain中獲取,所以需要對SharePoint Application的身份驗證(Claims Authentication Types)進行更改,即采用更加靈活的混合模式登錄:Windows Authentication和Forms Based Authentication。故本篇博客將著重筆墨去介紹SharePoint 2013自定義Providers在基于表單的身份驗(Forms-Based-Authentication)中的應用。
更改身份驗證 首先需要了解的一點事,怎樣去更改指定的Web Application?的身份驗證。進入SharePoint 2013 Central Administration-àApplication Management-àManage Web Applications-àAuthentication Providers,即如下所示:
如截圖所示那樣,啟用了FBA之后,需要我們提供自定義的Menbership Provider和Role Provider。
創建Membership Provider和Role Provider 這兒我選擇創建一個Class Library,當然你也可以直接創建一個SharePoint 2013 Empty Project,注意不管是哪種,最終都需要把Assembly 注冊/安裝 到GAC里 。
如果是創建了SharePoint Project,要安裝Assembly到GAC,直接部署就行。 如果是創建了Class Library,需要有兩個步驟1).Sign the assembly(右鍵項目-àProperty-àSigning),2)gacutil /i "<assembly path/assembly name.dll>",如下所示(使用VS Command Tool): 獲取Strong Name Key File
安裝Assembly到GAC
對于.NET 4.0以上的Assembly,GAC位于C:\Windows\Microsoft.NET\assembly。.NET 3.5 GAC在C:\Windows\assembly,所以別找錯地方。Assembly成功注冊到GAC后,最好IISReset下。
接著,創建相關的Provider,分別繼承MembershipProvider和RoleProvider即可。
?自定義MembershipProvider,主要代碼如下: + View Code
+ View Code
自定義的Provider成功安裝到GAC之后,接著修改web.config。注意需要修改3個地方,Web Application Config、SharePoint Central Administration Config、SecurityTokenServiceApplication,其路徑如果記不住的話,打開IIS,瀏覽即可,即如下所示:
修改Web Config Web Config需要Assembly的Public Key Token,可以使用VS Command Tool來獲取:
首先修改Web Application的Web Config,找到其Membership節點,將以下代碼復制進: <membership defaultProvider="i"><providers><add name="i" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" /><add name="CustomMembershipProvider" type="Eyes.CustomProvider.FBA_CustomRoleProvider,Eyes.CustomProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c4a0ffa664cbc06c" /></providers></membership><roleManager defaultProvider="c" enabled="true" cacheRolesInCookie="false"><providers><add name="c" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthRoleProvider, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" /><add name="CustomRoleProvider" type="Eyes.CustomProvider.FBA_CustomMembershipProvider,Eyes.CustomProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c4a0ffa664cbc06c" /></providers></roleManager>
接著修改SharePoint Central Administration的Web Config, <membership defaultProvider="i"><providers><add name="i" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" /><add name="CustomMembershipProvider" type="Eyes.CustomProvider.FBA_CustomRoleProvider,Eyes.CustomProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c4a0ffa664cbc06c" /></providers></membership><roleManager><providers><add name="c" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthRoleProvider, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" /><add name="CustomRoleProvider" type="Eyes.CustomProvider.FBA_CustomMembershipProvider,Eyes.CustomProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c4a0ffa664cbc06c" /></providers></roleManager>
然后修改SecurityTokenSeriveApplication的Web Config, <system.web><membership defaultProvider="i"><providers><add name="i" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" /><add name="CustomMembershipProvider" type="Eyes.CustomProvider.FBA_CustomRoleProvider,Eyes.CustomProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c4a0ffa664cbc06c" /></providers></membership><roleManager defaultProvider="c" enabled="true" cacheRolesInCookie="false"><providers><add name="c" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthRoleProvider, Microsoft.SharePoint, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" /><add name="CustomRoleProvider" type="Eyes.CustomProvider.FBA_CustomMembershipProvider,Eyes.CustomProvider, Version=1.0.0.0, Culture=neutral, PublicKeyToken=c4a0ffa664cbc06c" /></providers></roleManager></system.web>
最后將Web Application的Authentication Type修改為混合模式,如下所示
分配用戶并測試 成功為Web Application創建了自定義的Provider之后,接著就是測試是否成功。如添加訪問用戶,可以如下圖操作所示:
搜索用戶,如下圖所示:
訪問Site,提示混合登錄模式,如下圖所示:
登錄成功后顯示信息:
小結 當以Windows Authentication注銷時,會發生錯誤(查閱日志后報錯信息encodeValue不能為空)。我猜是沒清理Session,查了很多資料,發現這是個別現象。不知道最新的SharePoint 2013 Updates有沒有解決這個問題。我的版本是SharePoint 2013 Server(原始版本,從未更新過)。如果解決的話,勞煩各位朋友告訴我一下。點擊代碼下載
轉載于:https://www.cnblogs.com/TNSSTAR/p/3982193.html
總結
以上是生活随笔 為你收集整理的【FBA】SharePoint 2013自定义Providers在基于表单的身份验证(Forms-Based-Authentication)中的应用... 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。