Yakın zamanda gerçekleştirmiş olduğum bir projede kazandığım tecrübeleri sizlerle paylaşmak istedim.

İstek şu şekildeydi; Extranet Portali kurulacaktı. Bu portale, şirketin birlikte çalıştığı paydaş firmaların personelleri girecekti. Normal şartlarda portal windows authentication ile yapılandırılmış olduğundan, dışarıya erişime açtığımda kullancılar portale erişmek istediklerinde basic authentication’a ait bir kullanıcı adı parola ekranı ile karşılaşacaklardı. Bu yöntem, göze çok hitap etmiyordu, bu sebeple portale bir kullanıcı adı ve parola form ekranı ile girmek istediklerini belirttiler. SharePoint’te FBA aktif edildiğinde varsayılan olarak gelen bir form ekranı var. BU form çok basit bir görüntüye sahipti. Bu sebeple benden özelleştirilmiş bir giriş ekranı istediler. Bunlara ek olarak, iç ve dış kullanıcılar için kullanıcı yönetimini Active Directory üzerinden yapmak istediklerini ilettiler.

Yapacaklarım sırasıyla:

  1. SharePoint üzerinde FBA aktif hale getirilecekti.
  2. FBA mevcut AD üzerindeki belirli bir OU içerisindeki kullanıcılar için çalışacaktı.
  3. Portale giriş için özelleştirilmiş bir giriş formu isteniyordu.

1. FBA Yapılandırması

İlk olarak Central Admin sayfasından ilgili Web Application için authentication yöntemlerine FBA’yı da ayarlamamız lazım

  1. Central Administration sayfasını açıyoruz.
  2. Application Management bölümündeki Manage web applications sayfasını açıyoruz.
  3. İlgili Web Application’ı seçip Ribbon Bar’dan Authentication Providers butonuna basıyoruz.
  4. Açılan pencerede Default bağlantısına tıklayıp ilerleyelim. Açılan sayfada Claims Authentication Types kısmında 2 Seçenek var.
    1. Enable Windows Authentication: Eğer bu portale windows authentication ile de girmeye devam edecekseniz bu seçenek aktif olmalıdır. Benim projemde Windows kullanıcıları da portale erişim sağlamaya devam edecekler.
    2. Enable Forms Based Authentication ( FBA ): Bu seçeneği işaretlemeliyiz. Aşağıdaki ASP.NET Membership provider name olarak ileride birkaç yerde kullanacağımız bir isim yazacağız. Ben bu örnekte LdapMembership ismini tercih ettim. ASP.NET Role manager name olarak ise LdapRole ismini tercih ettim.
  5. Bu işlemlerden sonra sayfanız en altında yer alan Save butonuna basarak kaydediyoruz. (Dikkat: Bu işlem sırasında Save butonuna bastıktan sonra biraz beklemeniz gerekiyor. Arka planda yapılan işlemler 5-10 sanye sürebiliyor)

2. Web.Config Ayarları

Aşağıdaki Web.Config dosyalarını düzenlememiz gerekiyor.

  1. Central Administration web application’ına ait web.config dosyası
  2. Security Token Service’e ait web.config dosyası
  3. Portal web application’ına ait web.config dosyası

İşlemlere başlamadan önce aşağıdaki bilgileri elde edin.

  1. Domain Controller’ın (LDAP sunucuzun) FQDN adresi. Mesela; dc.domain.local .
  2. Active Directory üzerinde FBA kullanacak kullanıcıların yer aldığı Organizational Unit’e ( OU ) ait distinguished name’i. Mesela “OU=FBA Users,dc=domain,dc=local”
  3. Active Directory üzerinde FBA kullanacak kullanıcıların kullanacağı Grup bilgilerinin yer aldığı Organizational Unit’e ( OU ) ait distinguished name’i. Mesela “OU=FBA Groups,dc=domain,dc=local”

    1. Central Administration web application’ına ait web.config dosyasını yapılandırma

        1. Aşağıdaki kısmı bir metin editörüne kopyalayın.

<membership defaultProvider="AspNetSqlMembershipProvider">
      <providers>
        <add name="LdapMembership"
             type="Microsoft.Office.Server.Security.LdapMembershipProvider, Microsoft.Office.Server, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
             server="dc.hk.local"
             port="389"
             useSSL="false"
             userDNAttribute="distinguishedName"
             userNameAttribute="sAMAccountName"
             userContainer="OU=FTP Users,DC=hk,DC=local"
             userObjectClass="person"
             userFilter="(ObjectClass=person)"
             scope="Subtree"
             otherRequiredUserAttributes="sn,givenname,cn" />
      </providers>
</membership>
<roleManager enabled="true" defaultProvider="AspNetWindowsTokenRoleProvider" >
      <providers>
        <add name="LdapRole"
             type="Microsoft.Office.Server.Security.LdapRoleProvider, Microsoft.Office.Server, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
             server="dc.hk.local"
             port="389"
             useSSL="false"
             groupContainer="OU=FTP Users,DC=hk,DC=local"
             groupNameAttribute="cn"
             groupNameAlternateSearchAttribute="samAccountName"
             groupMemberAttribute="member"
             userNameAttribute="sAMAccountName"
             dnAttribute="distinguishedName"
             groupFilter="(ObjectClass=group)"
             userFilter="(ObjectClass=person)"
             scope="Subtree" />
      </providers>
</roleManager>

        2. Kopyaladığınız bölümdeki server, userContainer, groupContainer bilgilerini yukarıda bahsedilen bilgilere göre düzenleyin.

        3. Central Administration’ı barındırdığınız sunucu(larda)da IIS Manager’ı açıyoruz.

        4. Sites altında yer alan SharePoint Central Administration’a sağ tıklayıp Explorer’ı tıklıyoruz.

        5. Mevcut web.config dosyasını Kopyala/Yapıştır yaparak bir yedeğini alalım.

        6. Bir metin editorü ile web.config dosyasını açalım. (Ücretsiz olan Notepad++ ‘ı tavsiye ederim.)

        7. <Configuration> bölümünün altında yer alan <system.web> bölümüne yukarıda düzenlediğimiz kısmı yapıştıralım.

    2. Security Token Service’e ait web.config dosyasını yapılandırma

        1. Aşağıdaki kısmı bir metin editörüne kopyalayın.

<system.web>
    <membership>
          <providers>
        <add name="LdapMembership"
             type="Microsoft.Office.Server.Security.LdapMembershipProvider, Microsoft.Office.Server, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
             server="dc.hk.local"
             port="389"
             useSSL="false"
             userDNAttribute="distinguishedName"
             userNameAttribute="sAMAccountName"
             userContainer="OU=FTP Users,DC=hk,DC=local"
             userObjectClass="person"
             userFilter="(ObjectClass=person)"
             scope="Subtree"
             otherRequiredUserAttributes="sn,givenname,cn" />
          </providers>
    </membership>
    <roleManager enabled="true" >
          <providers>
        <add name="LdapRole"
             type="Microsoft.Office.Server.Security.LdapRoleProvider, Microsoft.Office.Server, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
             server="dc.hk.local"
             port="389"
             useSSL="false"
             groupContainer="OU=FTP Users,DC=hk,DC=local"
             groupNameAttribute="cn"
             groupNameAlternateSearchAttribute="samAccountName"
             groupMemberAttribute="member"
             userNameAttribute="sAMAccountName"
             dnAttribute="distinguishedName"
             groupFilter="(ObjectClass=group)"
             userFilter="(ObjectClass=person)"
             scope="Subtree" />
          </providers>
    </roleManager>
</system.web>

        2. Kopyaladığınız bölümdeki server, userContainer, groupContainer bilgilerini yukarıda bahsedilen bilgilere göre düzenleyin.

        3. SharePoint sunucularda IIS Manager’ı açıyoruz.

        4. Sites altında yer alan SharePoint Web Services’ın altında yer alan SecurityTokenServiceApplication’a sağ tıklayıp Explorer’ı tıklıyoruz.

        5. Mevcut web.config dosyasını Kopyala/Yapıştır yaparak bir yedeğini alalım.

        6. Bir metin editorü ile web.config dosyasını açalım. (Ücretsiz olan Notepad++ ‘ı tavsiye ederim.)

        7. <Configuration> bölümünün altında <system.web> bölümü oluşturun ve yukarıda düzenlediğimiz kısmı yapıştıralım.

    3. Portal web application’ına ait web.config dosyası

        1. SharePoint sunucularda IIS Manager’ı açıyoruz.

        2. Sites altında yer alan SharePoint – 80 veya FBA’yı ayarlamak istediğiniz Web Application’a sağ tıklayıp Explorer’ı tıklıyoruz.

        3. Mevcut web.config dosyasını Kopyala/Yapıştır yaparak bir yedeğini alalım.

        4. Bir metin editorü ile web.config dosyasını açalım. (Ücretsiz olan Notepad++ ‘ı tavsiye ederim.)

        5. <Configuration> bölümünün altında yer alan <system.web> bölümünü bulun.

        6. Aşağıdaki kısmı, bir metin editörüne kopyalayıp, server, userContainer, groupContainer bilgilerini yukarıda bahsedilen bilgilere göre düzenleyin.

<add name="LdapMembership"
   type="Microsoft.Office.Server.Security.LdapMembershipProvider, Microsoft.Office.Server, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
   server="dc.hk.local"
   port="389"
   useSSL="false"
   userDNAttribute="distinguishedName"
   userNameAttribute="sAMAccountName"
   userContainer="OU=FTP Users,DC=hk,DC=local"
   userObjectClass="person"
   userFilter="(ObjectClass=person)"
   scope="Subtree"
   otherRequiredUserAttributes="sn,givenname,cn" />

        7. <membership defaultProvider=”i”> yazan kısmın altına bir önceki adımda düzenlediğiniz bilgileri ekleyin.

        8. Yine aşağıdaki kısmı, bir metin editörüne kopyalayıp, server, userContainer, groupContainer bilgilerini yukarıda bahsedilen bilgilere göre düzenleyin.

<add name="LdapRole"
   type="Microsoft.Office.Server.Security.LdapRoleProvider, Microsoft.Office.Server, Version=15.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c"
   server="dc.yourdomain.com"
   port="389"
   useSSL="false"
   groupContainer="DC=yourdomain,DC=com"
   groupNameAttribute="cn"
   groupNameAlternateSearchAttribute="samAccountName"
   groupMemberAttribute="member"
   userNameAttribute="sAMAccountName"
   dnAttribute="distinguishedName"
   groupFilter="(ObjectClass=group)"
   userFilter="(ObjectClass=person)"
   scope="Subtree" />

        9. <roleManager defaultProvider=”c” enabled=”true” cacheRolesInCookie=”false”> yazan kısmın altına bir önceki adımda düzenlediğiniz bilgileri ekleyin.

Bu işlemlerden sonra komut satırında iisreset komutunu çalıştıralım.

Bu işlemden sonra Portaliniza bağlandığınızda aşağıdaki görüntüyü alıyor olmanız gerekiyor.

Bu makalemizin de sonuna geldik. Bir sonraki makalemizde görüşmek üzere…

Kaynak: http://wiki.deepnetsecurity.com/pages/viewpage.action?pageId=1411571

About the author

Hasan KÖROĞLU

Leave a Comment