Fingers的混搭空間

關於部落格
記錄我花了時間, 腦力, 心力, 體力做過玩過, 正在做正在玩的各種經歷.
  • 61822

    累積人氣

  • 6

    今日人氣

    0

    訂閱人氣

Sharepoint FBA Form Based Authentication (表單型驗證)的做法 (上)

既然要作身分驗證, 那就必須擁有目錄服務來控制使用者對資料的存取權. 我們可以利用現有的Active Directory, 或者安裝另一個AD LDS來做. 也有另一個做法是在SQL Server 上建立一個使用者資料庫供身分驗證用. 
我這篇整理著重在運用Active Directory 來達到FBA 登入Sharepoint 的 Web Application.

主要項目如下: 
1. 在AD上, 建立一個使用者OU,這個OU將包含了在Web Application上有存取權的使用者與群組
2. 在DNS上, 替我的Web Application 建立一個新的A record
3. 在Sharepoint Server 上, 建立一個Web Application (Claim based), 採取Form Based Authentication
4. 在IIS 上, 改寫三個Web.config 檔 -- Central Administration, Web Application, SecurityTokenService Application
5. 確認Web Application 能以FBA存取

OK, 咱們開始吧

 1. 在AD上, 建立一個使用者OU,這個OU將包含了在Web Application上有存取權的使用者與群組
        - 我在AD上, 建立了一個OU -- SP_Users, 在此OU下自行加入使用者
        - 記下這個OU的Distinguished Name: OU=SP_Users,DC=Extlab,DC=COM
           Domain Controller是dc1.extlab.com
 
 
2. 在DNS上, 替我的Web Application 建立一個新的A record
        - 新增一個A Recrod -- demo.extlab.com

3. 在Sharepoint Server 上, 建立一個Web Application (Claim based), 採取Form Based Authentication (如下圖) 




PS: ldapmember 與 ldaprole 會在下面的步驟定義
 
        - 建立完成Web Application 後, 接下去建立Site Collection (用Publishing Template)
        - 完成後, 試著從另一台電腦去連結 http://demo.extlab.com, 此時仍會要求你用Windows 或Form Base Auth 登入, 先用Windows Authentication 登入. 登入後設定Anonymous Access
 
 
        - 完成這個設定後, 當能不需要登入就開啟網站

4. 在IIS Manager上, 改寫三個Web.config 檔 -- Central Administration, Web Application, SecurityTokenService Application
         
- 重頭戲來了, 開啟IIS Manager, 至少會看到這幾個Sites
        -  對著Demo - 80 按右鍵 Explore, 會開啟包含所有檔案的視窗, 找到Web.config
        - 先將web.config 作備份
        - 用你最常用的text editor, 開啟Web.config做編輯                
                ●在219行附近, 找到<PeoplePickerWildcards></PeoplePickerWildcards>
                   將下列文字取代原有的
                 <clear />
                 <add key="AspNetSqlMembershipProvider" value="%" />
         <add key="LdapMember" value="*" />
         <add key="LdapRole" value="*" />
                ● 在457行附近, 找到<membership defaultProvider="i"> </membership>
                  將下列文字貼入其中
                  
<providers>
         <clear />
      <add name="LdapMember"                         type="Microsoft.Office.Server.Security.LdapMembershipProvider,    
        Microsoft.Office.Server, Version=14.0.0.0, Culture=neutral,                         PublicKeyToken=71e9bce111e9429c" server="dc1.extlab.com" 
        port="389" useSSL="false" userDNAttribute="distinguishedName"                         userNameAttribute="userPrincipalName" 
        userContainer="OU=SP_Users,DC=Extlab,C=COM" userObjectClass="user"                         userFilter="(ObjectClass=user)" scope="Subtree" 
        otherRequiredUserAttributes="cn" />
        <add name="i"                         type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider,                           Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral,                         PublicKeyToken=71e9bce111e9429c" />
                   </providers>
                 ● 接續</membership>, 請找到<roleManager defaultProvider="c" enabled="true"                     cacheRolesInCookie="false"> </roleManager>
                     將下列文字貼入其中
                   
<providers>
                 <add name="LdapRole" type="Microsoft.Office.Server.Security.LdapRoleProvider,   
                   Microsoft.Office.Server, Version=14.0.0.0, Culture=neutral,                            PublicKeyToken=71e9bce111e9429c" server="dc1.extlab.com" 
                   port="389" useSSL="false" groupContainer="OU=SP_Users,DC=extlab,DC=com"                            groupNameAttribute="cn" 
                   groupMemberAttribute="member" dnAttribute="distinguishedName"                            userNameAttribute="userPrincipalName" 
                   groupFilter="(ObjectClass=group)" userFilter="(ObjectClass=user)" scope="Subtree"                             />
                          <add name="c"                                                     type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthRoleProvider,                           Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral,                           PublicKeyToken=71e9bce111e9429c" />
                      </providers>

 
                ● 儲存
                 你可以在IIS Manager裡面去確定code沒問題
                        - 點開Providers
                        - 在.Net Roles 與 .Net Users 應該看到剛剛我們加入的membership 和 rolemanager
                           
     
 
 
         -  對著Central Admin 按右鍵 Explore, 會開啟包含所有檔案的視窗, 找到Web.config
        - 先將web.config 作備份
        - 用你最常用的text editor, 開啟Web.config做編輯  
        - 找到<PeoplePickerWildcards></PeoplePickerWildcards>
                  將下列文字取代原有的
                 <clear />
                 <add key="AspNetSqlMembershipProvider" value="%" />
         <add key="LdapMember" value="*" />
         <add key="LdapRole" value="*" />
        - 找到<system.web> </system.web>, 刪除        <membership>/membership<roleManager> </roleManager>這一段
        以下列文字取而代之
       <membership defaultProvider="i">
      <providers>
        <clear />
        <add name="LdapMember"
   type="Microsoft.Office.Server.Security.LdapMembershipProvider, Microsoft.Office.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
   server="dc1.extlab.com"
   port="389"
   useSSL="false"
   userDNAttribute="distinguishedName"
   userNameAttribute="userPrincipalName"
   userContainer="OU=SP_Users,DC=extlab,DC=com"
   userObjectClass="user"
   userFilter="(ObjectClass=user)"
   scope="Subtree"
   otherRequiredUserAttributes="cn" />
        <add name="i" type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
     </providers>
    </membership>
  
  <roleManager defaultProvider="AspNetWindowsTokenRoleProvider" enabled="true" cacheRolesInCookie="false">
        <providers>
          <clear />
         <add name="LdapRole"
   type="Microsoft.Office.Server.Security.LdapRoleProvider, Microsoft.Office.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
   server="dc1.extlab.com"
   port="389"
   useSSL="false"
   groupContainer="OU=SP_Users,DC=extlab,DC=com"
   groupNameAttribute="cn"
   groupMemberAttribute="member"
   dnAttribute="distinguishedName"
   userNameAttribute="userPrincipalName"
   groupFilter="(ObjectClass=group)"
   userFilter="(ObjectClass=user)"
   scope="Subtree" />
        <add applicationName="/"
           name="AspNetWindowsTokenRoleProvider"
           type="System.Web.Security.WindowsTokenRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
       </providers>
  </roleManager>
               ● 儲存
               ● 確認方法與上同

          -  對著Sharepoint Web Services的SecurityTokenServiceApplication按右鍵 Explore, 會開啟               包含所有檔案的視窗, 找到Web.config
          
- 先將web.config 作備份
          - 用你最常用的text editor, 開啟Web.config做編輯  
          - 找到</system.net>
          - 將下列文字直接加入
         <system.web>
<membership defaultProvider="i">
<providers>
<clear /> 
<add name="LdapMember" 
type="Microsoft.Office.Server.Security.LdapMembershipProvider, 
Microsoft.Office.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" 
server="dc1.extlab.com" 
port="389" 
useSSL="false"  
userDNAttribute="distinguishedName" 
userNameAttribute="userPrincipalName" 
userContainer="OU=SP_Users,DC=extlab,DC=com" 
userObjectClass="user" 
userFilter="(ObjectClass=user)" 
scope="Subtree" 
otherRequiredUserAttributes="cn" />
<add name="i" 
type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthMembershipProvider, 
Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
</providers>
</membership>
<roleManager defaultProvider="c" enabled="true">
<providers>
<clear /> 
<add name="LdapRole"
type="Microsoft.Office.Server.Security.LdapRoleProvider, 
Microsoft.Office.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
server="dc1.extlab.com" 
port="389"
useSSL="false"
groupContainer="OU=SP_Users,DC=extlab,DC=com"
groupNameAttribute="cn"
groupMemberAttribute="member"
dnAttribute="distinguishedName"
userNameAttribute="userPrincipalName"
groupFilter="(ObjectClass=group)"
userFilter="(ObjectClass=user)"
scope="Subtree" />
<add name="c" 
type="Microsoft.SharePoint.Administration.Claims.SPClaimsAuthRoleProvider, Microsoft.SharePoint, 
Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" />
</providers>
</roleManager> 
        
    </system.web>

                
● 儲存
               ● 確認方法與上同

<待續>

相簿設定
標籤設定
相簿狀態