SharePoint, aşağıdaki adımlar izlenerek Form Based Authentication kullanımı için yapılandırılabilir:

  • Aspnet_regsql ile user ve role yönetimi için gerekli veritabanının oluşturulması.
  • IIS’de Central Administration ve Security Token Service uygulamalarının yapılandırılması.
  • Central Administration’dan FBA kullanacak şekilde yeni bir application oluşturulması ve IIS’de bu application’ın yapılandırılması.
  • FBA kullanıcılarına SharePoint application üzerinde yetki verilmesi.
  • SharePoint application’a login olma.

User ve Role Yönetimi İçin Veritabanı Oluşturulması

C:\Windows\Microsoft.NET\Framework\v2.0.50727 lokasyonuna gidip, aspnet_regsql.exe dosyasını tıklayın. ASP.NET SQL Server Setup Wizard açılacaktır.

Açılan ekranda Next butonunu tıklayarak Select a Setup Option ekranına geçin. Bu ekranda Configure SQL Server for Application Services seçeneği seçili olarak Next butonuna tıklayın. Server ve database ayarlarını gireceğimiz ekran açılacaktır.

ASP.NET SQL Server Setup Wizard
ASP.NET SQL Server Setup Wizard

Server bölümüne, veritabanının oluşturulacağı SQL Server adını yazın. Database bölümüne oluşturulacak veritabanı için uygun bir isim yazın. Next butonuna tıkladığınızda ayarlarınızı gösteren ekran açılacaktır. Açılan ekranda Next butonunu tıkladığınızda FBA için veritabanı oluşturulmuş olunacaktır. Son ekranda Finish butonuna tıklayarak wizard’ı kapatıyoruz.

Şimdi tanımlanacak connection string’lerde kullanılması için bu veritabanında yetkili bir kullanıcı tanımlıyoruz.

SQL Server Managemetn Studio’yu açıp, Security altındaki Logins klasörüne sağ tıklayıp, New Login’i tıklayın.

New SQL Login
New SQL Login

SQL Server Authentication seçili olarak, oluşturacağımız kullanıcı için bir ad ve şifre belirliyoruz. User Mapping bölümünden kullanıcının mevcut veritabanları üzerindeki yetkilerini ayarlıyoruz. Yukarıda oluşturduğumuz veritabanını(FBADB) seçerek, oluşturacağımız kullanıcıya bu veritabanı üzerinde db_owner rolü veriyoruz.

Kullanıcı Yetkilendirme
Kullanıcı Yetkilendirme

Böylece veritabanı tarafında yapılması gereken işlemler tamamlanmış oldu.

IIS’de Central Administration ve Security Token Service Yapılandırılması

IIS’de Central Administration ve Security Token Service’da, FBA için oluşturduğumuz veritabanının connection string’ini tanımlayıp role ve membership provider’ları oluşturacağız. Bunu iki şekilde gerçekleştirebiliriz :

  • Visual Studio’da ASP.NET Configuration Wizard kullanarak role ve membership providerları oluşturup, Central Administration ve Security Token Service uygulamalarının web.config dosyalarına, Connection Setring ve  Provider ayarlarını manuel eklmek.
  • IIS üzerinde doğrudan connection string ve provider tanımlamalarını yapmak.

İkinci yöntem daha kolay olduğundan doğrudan IIS üzerinde gerekli tanımlamaları yapacağız.

Öncelikle IIS’de Central Administration uygulamasını tıklayalım.

Central Administration IIS Yapılandırması
Central Administration IIS Yapılandırması

Features View’da yukarıda görülen bölümlerde değişiklik yapacağız. Öncelikle Connection Strings’i tıklayalım. Sağ tarafta Actions bölümünden Add linkini tıklayalım. Açılan ekranda ilk adımda oluşturduğumuz veritabanına bağlantıda kullanılacak connection stringi tanımlıyoruz. Connection String için bir isim, bağlantı kurulacak SQL Server ve veritabanı bilgileri ile bağlantıda kullanılacak user bilgilerini giriyoruz.

Add Connection String
Add Connection String

Connection String tanımını yaptıktan sonra şimdi de provider tanımlamalarını yapacağız. Features View ekranından Providers’ı tıklayalım. Features’da .NET Roles seçili durumdadır. Sağdaki Actions bölümünden Add linkini tıklayalım. Role Provider tanımlama ekranı açılacaktır. Type olarak SqlRoleProvider seçip, role provider için bir isim belirleyelim. Connection String Name, yukarıdaki tanımladığımız connection string adıdır. Tanımlı connection stringler bu bölümde listelenir. Yukarıda tanımladığımız connection stringi seçelim. ApplicationName, uygulamanın path’idir. Root olarak ayarlıyoruz.

Add Provider
Add Provider

Role Provider’dan sonra Membership Provider tanımlamamız gerekiyor. Providers ekranına dönüp Features bölümünden .NET Users’ı seçelim.

.NET Users
.NET Users

Sağdaki Actions bölümünden Add linkini tıklayalım. Membership Provider tanımlama ekranı açılacaktır. Type olarak SqlMembershipProvider seçip, membership provider için bir isim belirleyelim. Parola sıfırlama, yeni parola alma özelliklerini aktif edip, kullanıcı tanımlamalarında parola unutmaları için anımsatıcı Soru-Cevap ve tekil mail adresi girilmesini zorunlu hale getirelim. Parolaların veritabanında kriptolanarak tutulmasını da aktifleştirelim. ConnectionStringName olarak yukarıda oluşturduğumuz connection stringi seçelim ve ApplicationName olarak role provider tanımındaki gibi root’u ayarlayalım.

Add Provider
Add Provider

Central Administration için Conneciton String, Role Provider ve Membership Provider tanımlamalarını yaptık. Aynı connection string ve providers tanımlamalarını yukarıda anlatıldığı gibi SharePoint Web Services altındaki Security Token Service uygulaması için de yapın. Böylece Central Administration ve Security Token Service’i yapılandırmış olduk. Bu yapılandırmalar bir defaya mahsustur. FBA kullanacak birden fazla application söz konusu ise sadece yeni applicationı oluşturup IIS’de bu application üzerinde aşağıda açıklayacağımız yapılandırmaların yapılması yeterli olacaktır.

SharePoint’te FBA Kullanan Application Oluşturulması ve Yapılandırılması

Central Administration’ı açıp Manage Web Applications’ı tıklayalım. Açılan sayfada ribbondan New’i tıklayalım. Client Authentication Types bölümünden FBA’yı aktif edip, role ve membership providerları set ediyoruz.

Enable FBA
Enable FBA

Şimdi IIS’de bu application üzerindeki konfigrasyonları gerçekleştireceğiz.  IIS’de oluşturduğumuz portal uygulamasını tıklayıp, yukarıda açıklandığı gibi Connection String, Role ve Membership providerları oluşturun. Connection string ve providerları oluşturduktan sonra Features View’den .NET Roles’a tıklayın. Default role provider olmadığı uyarısı verecektir. OK butonuna tıklayalım. Açılan ekranda sağdaki Actions bölümünden Set Default Provider linkini tıklayalım ve açılan ekrandan oluşturduğumuz role provider’ı default provider olarak set edelim.

Set Default Provider
Set Default Provider

.NET Roles ekranında sağdaki Actions bölümünden Add linkini tıklayarak Admins ve Users adında iki role ekliyoruz.

Features View’da .NET Users’ı tıklayalım. Default membership provider olmadığı uyarısı verecektir. Yukarıdaki gibi Actions bölümünden Set Default Provider linkini tıklayalım ve açılan ekrandan oluşturduğumuz membership provider’ı default provider olarak set edelim.

Set Default Provider
Set Default Provider

Bu ayarı yaptıktan sonra web.config dosyalarına otomatik olarak üretilen machineKey eklenecektir. Membership Provider oluştururken StorePasswordInSecureFormat property’sinin değerini true olarak set etmiştik. Çünkü parolaları güvenlik nedeniyle kriptolayarak veritabanında tutmak istiyoruz. Parolaları encrypted formatta tuttuğumuzda otomatik machineKey üretilmesi desteklenmiyor. Bu nedenle portal, Central Administration ve Security Token Service web.configlerine non-autogenerated machineKey eklememiz gerekmektedir. Aksi takdirde aşağıdaki hatayı alırız:

Token Handler: Claims Forms Sign-In: Membership Provider ‘FBAMembershipProvider’ username-password check for user ‘fbaadmin’ generated exception. Exception: ‘System.Configuration.Provider.ProviderException: You must specify a non-autogenerated machine key to store passwords in the encrypted format. Either specify a different passwordFormat, or change the machineKey configuration to use a non-autogenerated decryption key.

at System.Web.Security.MembershipProvider.EncryptPassword(Byte[] password, MembershipPasswordCompatibilityMode legacyPasswordCompatibilityMode)

at System.Web.Security.SqlMembershipProvider.EncodePassword(String pass, Int32 passwordFormat, String salt)

at System.Web.Security.SqlMembershipProvider.CheckPassword(String username, String password, Boolean updateLastLoginActivityDate, Boolean failIfNotApproved, String& salt, Int32& passwordFormat)

at System.Web.Security.SqlMembershipProvider.ValidateUser(String username, String password)

at Microsoft.SharePoint.IdentityModel.SPFormsUserNameSecurityTokenHandler.ValidateUsernamePassword(SPFormOperation operationType, MembershipProvider provider, String userName, String password)’.

Öncelikle http://aspnetresources.com/tools/machineKey sitesine girip, Generate Key butonunu tıklayarak machineKey elde edelim. Elde ettiğimiz machineKey değerini kopyalayalım. Portal, Central Administration ve Security Token Service web.config dosyalarını açalım. Dosyada machineKey değerini aratalım. Var olan machineKey değerini kaldırıp, elde ettiğimiz machineKey değerini yapıştıralım. Config dosyasında machineKey değeri system.web node’u altında olmalıdır. Eğer config dosyalarında machineKey değeri yok ise system.web node’u altına ekleyin.

Şimdi .NET Users ekranında sağdaki Actions bölümünden Add linkine tıklayarak fbaadmin ve fbauser adında iki kullanıcı ekleyelim.

Add .NET User
Add .NET User

Yukarıdaki gibi gerekli alanları doldurduktan sonra Next butonuna tıklayın. İkinci ekranda oluşturacağınız kullanıcıyı hangi role ekleyeceğimizi ayarlayacağız. Fbaadmin kullanıcısını Admins role’üne, fbauser kullanıcısını Users role’üne ekleyin.

Uygulamayı oluşturup, gerekli konfigrasyonları yapıp, FBA kullanıcılarımızı oluşturduk. Şimdi bu kullanıcılara portal üzerinde yetki verelim.

FBA Kullanıcılarının Portal Üzerinde Yetkilendirilmesi

Central Administration’da Manage Web Applications’ı tıklayın. Açılan sayfada portali seçerek ribbondan User Policy’i tıklayın.

Policy for Web Application
Policy for Web Application

Açılan ekranda Add Users’ı tıklayın. Hangi zone için policy tanımlayacağımızı soran ekran gelecektir. All Zones kalabilir. Next butonunu tıkladığımızda kullanıcıları ekleyeceğimiz ekran açılacaktır.

Add Users
Add Users

Buraya kadar hatasız geldiyseniz IIS’de oluşturduğunuz userları Users bölümüne yazıp check user yaptığınızda, girdiğiniz user yukarıda olduğu gibi altı siyah çizgi ile çizilerek doğrulanacaktır. Fbaadmin kullanıcısını Full Control, fbauser kullanıcısını Full Read permissionları ile yetkilendiriyoruz. En son User Policy ekranında OK butonuna tıklayarak yetkilendirme işlemini bitiriyoruz.

Bütün konfigrasyonları tamamladık. Şimdi login olalım.

SharePoint Portal’e Login Olma

Browser’ı açarak portalinizin url’ini yazın. Default login page açılacaktır.

Default Login Page
Default Login Page

Uygulamamızda hem windows hem FBA authentication aktif olduğu için bu ekranda hangi authentication tipi ile portale login olmak istediğimiz sorulmaktadır. Forms Authentication seçelim. Default username-password giriş ekranı gelecektir.

FBA Login Page
FBA Login Page

Username ve password bilgilerini girip, Sign In butonunu tıklayalım.

Login
Login

Fbauser kullanıcısını Full Read yetkisi ile yetkilendirmiştik. Görüldüğü gibi yetkileri sınırlıdır. Şimdi de Full Control verdiğimiz fbaadmin kullanıcısı ile login olalım.

Login
Login

Görüldüğü gibi fbaadmin kullanıcısı Full Control yetkisine sahiptir.

FBA üzerine yazmaya devam etmeyi düşünüyorum. Sonraki yazıda görüşmek üzere.

Reklamlar