Etiket: Central Administration

Sharepoint 2010 : Farmlar Arası Service Application Paylaşımı

Şubat 10th, 2011

Basit olarak Farmlar arası Service Application Paylaşımı hakkında bilgi vermeye çalışacağım. Ne gerek var, ben technetten okurum diyorsanız buyurun http://technet.microsoft.com/en-us/library/ff621100.aspx :)

Edit : Pek basit ve kısa olmadı, yani ben bu kadar uzayabileceğini düşünmemiştim…

Ama technette olmayan, basit hatalar ve çözümlerinden de bahsedecem.

Farmlar arasında paylaşımını yapabileceğiniz Service Application’lar aşağıdakilerdir.

  • Business Data Connectivity
  • Managed Metadata
  • User Profile
  • Search
  • Secure Store
  • Web Analytics
Tanımlar

A Farmı : Paylaşımı yapacak olan Farm – Publisher Farm

B Farmı : Paylaşımdan yararlanacak olan Farm – Consumer Farm

Basit Olarak Yapılması Gerekenler

    1. Farmlar arasında Trust Sağlamak

    Exchange trust certificates between the farms ile ilgili Technet linki : http://technet.microsoft.com/en-us/library/ee704552.aspx

Bu işlem için A farmından Root Certificate, B farmından Root ve STS Certificate larını almamız gerekecek. Sertifikaları Central Administration ı kullanarak da alabiliriz. Ama bence bununla uğraşmayın. Aşağıdaki komutları satır satır Sharepoint Management Shell e yapıştırıp, çalıştırın. Bunun sonucunda C dizininde sertifikaların oluştuğunu göreceksiniz.

A Farmı (Servisi Share edecek olan Farm):

Root Certificate

$rootCert = (Get-SPCertificateAuthority).RootCertificate

$rootCert.Export(“Cert”) | Set-Content C:\PublishingFarmRoot.cer -Encoding byte

B Farmı (Servisi kullanacak olan Farm):

Root Certificate

$rootCert = (Get-SPCertificateAuthority).RootCertificate

$rootCert.Export(“Cert”) | Set-Content C:\ConsumingFarmRoot.cer -Encoding byte

STS Certificate

$stsCert = (Get-SPSecurityTokenServiceConfig).LocalLoginProvider.SigningCertificate

$stsCert.Export(“Cert”) | Set-Content C:\ConsumingFarmSTS.cer -Encoding byte

Sertifikalarımızı oluşturduktan sonra B Farmının sertifikalarını A Serverına, A Farmının sertifikasını ise B Serverına taşıyoruz. Daha sonra yine aşağıdaki komutlar ile bu sertifikaları import ediyoruz. Sertifikaların isimlerini değiştirmediyseniz ve kopyalanan sertifikaları yine C:\ dizinine koyduysanız aşağıdaki komutlarda herhangi bir değişiklik yapmadan sertifikaları import edebilirsiniz.

A Farmı (Servisi Share edecek olan Farm):

Root Certificate

$trustCert = Get-PfxCertificate C:\ConsumingFarmRoot.cer

New-SPTrustedRootAuthority ConsumingFarm -Certificate $trustCert

STS Certificate

$stsCert = Get-PfxCertificate c:\ConsumingFarmSTS.cer

New-SPTrustedServiceTokenIssuer ConsumingFarm -Certificate $stsCert

B Farmı (Servisi kullanacak olan Farm):

Root Certificate

$trustCert = Get-PfxCertificate C:\PublishingFarmRoot.cer

New-SPTrustedRootAuthority PublishingFarm -Certificate $trustCert

Trust işlemini sağlamak bu kadar. İlk başlarda biraz göz korkutabilir fakat görüldüğü kadar zor değil. Burada dikkat etmeniz gereken sadece Hangi sertifikanın Publish veya Consumer Farmlardan export edildiği ve/veya import edildiği. Geri kalan işlemler copy/paste :)

    2. Service Application’ı Yayınlamak

On the publishing farm, publish the service application ile ilgili Technet linki : http://technet.microsoft.com/en-us/library/ee704545.aspx

Bu adımı da yine Sharepoint Management Shell kullanarak yapabilirsiniz. Ben Central Administration dan yapmanızı öneririm. Service Application’ı çok basit bir şekilde publish ediyoruz.

Central Administration -> Application Management -> Manage Service Applications yolunu izleyip, yayınlamak istediğimiz servisi seçiyoruz ve ribbon kısmındaki Publish butonuna tıklıyoruz.


Karşımıza çıkan ekranda, Publish to other farms alanının işaretli olduğuna dikkat ediyoruz ve Published URL alanında yazan URI kopyaladığımızdan emin olduktan sonra OK butonu ile servisimizi publish ediyoruz.

    3. Servisi Kullanacak Olan Farm’a Yetki Vermek

    On the consuming farm, set the permission to the appropriate service applications ile ilgili Technet linki : http://technet.microsoft.com/en-us/library/ff700211.aspx

    Bu işlem temel olarak çok basit. Yapmanız gereken sadece iki adet işlem var.

    Servisi kullanacak olan B Farmı üzerinde, Sharepoint Management Shelli çalıştırıp aşağıdaki komutu yazıyoruz.

    Get-SPFarm | Select Id

    Bu komutun çıktısı bize yetki verilecek olan Farmın ID sini verecek. Daha sonra Servis Paylaşımı yapacak olan A Farmında, Manage service applications kısmında Application Discovery and Load Balancing Service Application servisinini seçiyoruz. Yine Ribbon kısmından Permissions butonuna tıklıyoruz.


    Bir önceki adımda elde ettiğimiz ID yi buraya yapıştırıyoruz.


    Add butonu ile alt kısıma eklenen ID ye Full Control yetkisi verip OK butonuna tıklıyoruz.


    4. Paylaşılan Service Bağlanma

On the consuming farm, connect to the remote service application ile ilgili Technet linki : http://technet.microsoft.com/en-us/library/ee704558.aspx

Tüm ayarlarımız tamamlandıktan sonra geriye paylaştığımız bu servise bağlanmak kaldı. Central Managementtan Manage service applications ekranına geliyoruz ve ribbonlardan Connect butonuna tıklıyoruz.


Buradan bağlanamak istediğimiz Servisi seçiyoruz. Karşımıza gelen ekranda Farm or Service Application address alanına 2. adımda bir kenara not aldığımız Published URL stringini yapıştırıyoruz ve OK butonu ile işlemi tamamlıyoruz. Published URL i bir kenara not etmediyseniz, 2. adımı tekrarlamanız durumunda yine aynı URI yi elde edebilirsiniz.


Yukarıdaki anlattığım adımlar ve ayarlardan sonra, bağlanmaya çalışırken, aşağıdaki gibi bir hata alabilirsiniz.

“Unable to connect to the specified address. Verify the URL you entered and contact the service administrator for more details.”

Tabi bu hata size anlamlı gelmeyecektir, zira çok genel bir hata. Bunun üzerine ULS loglarına (..\..\14\LOGS) bakacaksınız. Burada da muhtemelen aşağıdaki hatayı alacaksınız.

“SharePoint Foundation Claims Authentication fo1t Monitorable …inistration.Claims.SPClaimProviderManager.GetClaimProvidersForContext(Uri context, SPClaimProviderOperationOptions mode, IEnumerable`1 providerNames) at Microsoft.SharePoint.Administration.Claims.SPClaimProviderOperations.ClaimsForEntity(Uri context, SPClaimProviderOperationOptions mode, String[] providerNames, SPClaim entity) at Microsoft.SharePoint.IdentityModel.SPSecurityTokenService.AugmentClaimsIdentity(IClaimsIdentity identity, SPClaim identityClaim, RequestSecurityToken request) at Microsoft.SharePoint.IdentityModel.SPSecurityTokenService.GetOutputClaimsIdentity(IClaimsPrincipal principal, RequestSecurityToken request, Scope scope) at Microsoft.IdentityModel.SecurityTokenService.SecurityTokenService.Issue(IClaimsPrincipal principal, RequestSecurityToken request) … “

Buna göre yapmış olduğunuz hatalar aşağıdakilerden biri olabilir :

  1. Sertifika export ve import işlemleri sırasında hangi sertifikanın hangi serverdan alınıp, hangi servera yükleneceğini karıştırmış olabilirsiniz. Eğer sorunun bu olduğunu düşünüyorsanız, Central Administration -> Security -> Trust yolunu izleyip, her iki serverdaki yüklemiş olduğunuz sertifikaları silin. Burada bulunan local sertifikayı silmemeye özen gösterin.
    Daha sonra birinci adımı tekrarlayın.
  2. Yukarıda anlattığım, üçüncü adımdaki aşamayı yanlış uygulamış olmak. Örneğin; Servisi kullanacak olan farmdaki Application Discovery and Load Balancing Service ine, servisi publish edecek olan farma yetki vermek. Tam tersi olması gerekiyordu.
  3. A ve B farmlarının kurulumlarının farklı domain userları ile yapılması. Bu ayrı bölgelerdeki farmları ayrı sorumlulara teslim etmek için gayet makul ve mantıklı bir işlem. Böyle bir durum ile karşı karşıya iseniz, Paylaşımı yapılan Service Application’da, diğer farmın userına da Full Control yetkisi vermeniz gerekecektir.
  4. A ve B Farmlarının bulunduğu serverlar birbirleri ile 32844 portundan konuşabilir durumda olmalıdırlar.
  5. Muhtemelen yukarıdaki çoğu durum ile karşılaşmayacaksınız. Bu satıra kadar indiyseniz hiçbir şey derdinize çözüm olmamış demektir. Aslında çözümünüz çok basit birşey olabilir. Sharepoint’in temelinden gelen bir çözüm :) IISRESET. Evet evet yanlış duymadınız, service bağlanmayı denemeden önce, yaptığınız değişikliklerden sonra, her iki servera da mutlaka iisreset atın.

Bunlar da yardımcı olmadıysa, probleminizi paylaşırsanız sevinirim.

Tags: , , , , , , , , , , , , , , ,
Posted in Sharepoint | 4 Comments »

Automatic Refresh Uyarısı Nasıl Kaldırılır?

Ocak 31st, 2010

Elinizde bulunan bir excel i, Excel Service den yararlanarak Sharepointte göstermek istiyorsunuz; Fakat her sayfa açılışında aşağıdaki gibi hata mı alıyorsunuz?

xxxx workbook contains one or more queries that refresh external data.
A malicious user can design a query to access confidential information and distribute it to other users or perform other harmful actions.

If you trust the source of this workbook, click Yes to enable queries to external data in this workbook.
If you are not sure, click No so that changes are not applied to your workbook.

Bunu aşmak için yapmanız gereken;

  1. Central Administration dan ilgili SSP nin Admin Page ine gidin.
  2. Buradan Trusted File Locations.
  3. İlgili güvenilir locationı bulun ve tıklayın.
  4. Açılan konfigürasyon sayfasından External Data nın Warn On Refresh özelliğini disable edin;

Tags: , , , , , , , ,
Posted in Sharepoint, Yazılım | No Comments »