cub-e.net

just coding...

IFD Tabanlı Güvenlik Mekanizması Oluşturulması Hakkinda

CRM, ADFS Server kullanarak Security Token Service (STS) mimarisi altında daha fazla güvenlik içeren bir doğrulama mekanizmasına kavuşmaktadır.

Daha pratik bir şekilde anlatmak gerekirse normal şartlar altında kullanıcı internetten bir talepte bulunduğunda güvenlik mekanizmasından geçen talep direkt CRM sunucusuna ulaşmakta ve CRM sunucusu içeride güvenlik kontrolünü yapmaktadır. CRM sunucu DC ve SQL Server ile iletişime geçerek güvenlik kontrolünü yapmakta ve sonucunda kullanıcıya ya hata ya da içeriği döndürmektedir.


Eğer aynı senaryo IFD yapılandırılmış bir CRM için geçerli olsaydı, güvenlik sisteminden (ISA, Firewall) sonra CRM’e ulaşan kullanıcı güvenlik kontrolü için ADFS’e sunucusuna gönderilecek ve burada doğrulama işlemi gerçekleştikten sonra tekrar CRM sunucuna dönülecek ve içeriği iletmesi istenecektir. Eğer kullanıcı bilgileri yanlışsa IFD kullanıcıya hata döndürecektir.

Daha ayrıntılı bakacak olursak;


Görüldüğü gibi 3 adımlı doğrulama mekanizması IFD sayesinde 10 adımlı bir yapıya dönüşmektedir. Bu yüzden IFD CRM sisteminin güvenliğini arttırmaktadır.

IFD’nin bir diğer avantajı ise CRM sistemiyle aynı domainde olmayan kullanıcının sanki domain içinde bir kullanıcıymış gibi sistem üzerinde hareket etmesini sağlamaktadır.

Bu giriş bilgisinden sonra IFD yapılandırmasının adımlarından ve zorunluluklarından bahsedelim. Öncelikle ADFS ile CRM aynı sunucuya kurulabilse dahi bu pek önerilen bir yöntem değildir. Bu yüzden her zaman ADFS sunucusunu ayrı bir sunucu olarak düşünmek en mantıklısıdır.

Adımlar ise şu şekildedir;

1.       CRM standart bir şekilde kurulur.

2.       ADFS 2.0 default web site’da olacak şekilde ADFS sunucusuna kurulur.

3.       *.domainadı.com şeklinde wildcard sertifika alınır ve CRM ve ADFS sunucularına yüklenir.

4.       Sistem kontrol için iki sunucu kullanacağından bu iki sunucuya dışarıdan erişmek gerekmektedir. İstemci tarafından sunuculara erişilirken aşağıda belirtilen subdomain yönlendirmelerin Firewall ve public dns’de yapılmış olması gerekmektedir (Sistem ssl sertifikası kullandığından 443 nolu port düşünülerek işlem yapılmalıdır);

a.       Organizasyonadı.domainadı.com -> CRM sunucusuna

b.      Auth.domainadı.com -> CRM sunucusuna

c.       Dev.domainadı.com -> CRM sunucusuna

d.      Adfs.domainadı.com -> ADFS sunucusuna

e.      İnternalcrm.domain.com -> CRM sunucusuna (bu subdomain sadece sistemin içindeki DNS’de açılacaktır. Diğerleri gibi dış dünyaya açılmayacaktır.)

Yukarıda da görüldüğü gibi dışarıdan erişilmesi gereken 2 sunucumuz olduğuna göre 2 adet ip adresine ihtiyacımız olacaktır subdomainlerin yönlendirilmesi için.

5.      Bu işlemler yapıldıktan sonra CRM sunucusu üzerinde Deployment Manager ile gerekli yapılandırma ayarları yapılmalı

6.      ADFS Sunucu üzerinde de Primary SID, UPN ve AccountName ayarlarının yapılması gerekemektedir.

Eğer bir sistem sağlayıcıyla iş bölümü yapılacaksa sunucuların kurulması, 2. , 3. ve 4. Adımlar bu firma tarafından yapılmalıdır.

Dynamics CRM IFD (Windows server 2012 R2 ADFS 3.0) ile CRM for Outlook Baglanma Problemi

Eger sizde benim gibi Dynamics CRM kurulumunuz ile ADFS 3.0'i ayni server uzerinde kullaniyorsaniz Outlook Client Configuration Wizard ile yapilandirma sirasinda authentication probleminden dolayi bir hata alabilirsiniz.
Log dosyasini incelediginizde asagidaki gib bir hata mesaji olacaktir.

"Error connecting to URL: https://org.contoso.com/XRMServices/2011/Discovery.svc Exception: Microsoft.Crm.CrmException: Authentication failed"

Bu hata ile ilgili nette buldugun bircok cozeum yolunu denesem de sonuc vermedi. Bende Fiddler ile arka tarafatki iletisimde neler oldugunu izlemeye karar verdim. Fiddler ile gordum ki Configuration Wizard'in gitmeye calistigi bir adreste 503 hatasi almaktayim, Adres ise su formattaydi: 

"https://adfs.contoso.com/adfs/services/trust/mex"

Evet sorun ADFS'deydi. CRM web arabiriminde sorunsuzca gorevini yerine getiren ADFS Outlook Client'da ise hataya neden olmaktaydi. Bunun uzerine hemen ADFS Servera gittim ve arastirmalara basladim.
ADFS Serverda Event Viewer'da  sorunun kaynagini yakaladim:

Event ID:      102
Description:
There was an error in enabling endpoints of Federation Service. Fix configuration errors using PowerShell cmdlets and restart the Federation Service. 
 
Additional Data 
Exception details: 
System.ServiceModel.AddressAlreadyInUseException: There is already a listener on IP endpoint 0.0.0.0:808. This could happen if there is another application already listening on this endpoint or if you have multiple service endpoints in your service host with the same IP endpoint but with incompatible binding configurations. ---> System.Net.Sockets.SocketException: Only one usage of each socket address (protocol/network address/port) is normally permitted
 

Yani ADFS Server 808 nolu bir portu kullanmaktaydi. 808 Portu ayni zamanda Asynchronous Service tarafinda da kullanilmakta.
ProtocolPortDescriptionExplanation

TCP

808

CRM server role communication

The Asynchronous Service and Web Application Server services communicate to the Sandbox Processing Service through this channel. The default port is 808, but can be changed in the Windows registry by adding the DWORD registry value TcpPort in the key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM\.

Yeri gelmisken bahsedeyim CRM tarafindan kullanilan diger portalarin listesi de soyle:
ProtocolPortDescriptionExplanation

TCP

80

HTTP

Default web application port. This port may be different as it can be changed during Microsoft Dynamics CRM Server Setup. For new websites, the default port number is 5555.

TCP

135

MSRPC

RPC endpoint resolution.

TCP

139

NETBIOS-SSN

NETBIOS session service.

TCP

443

HTTPS

Default secure HTTP port. The port number may differ from the default port. This secure network transport must be manually configured. Although this port is not required to run Microsoft Dynamics CRM, we strongly recommend it. For information about how to configure HTTPS for CRM, see “Make Microsoft Dynamics CRM client-to-server network communications more secure” in Post-installation and configuration guidelines for Microsoft Dynamics CRM in the Installing Guide.

TCP

445

Microsoft-DS

Active Directory service required for Active Directory access and authentication.

UDP

123

NTP

Network Time Protocol.

UDP

137

NETBIOS-NS

NETBIOS name service.

UDP

138

NETBIOS-dgm

NETBIOS datagram service.

UDP

445

Microsoft-DS

Active Directory service required for Active Directory access and authentication.

UDP

1025

Blackjack

DCOM, used as an RPC listener.

Listenin tamamina bu adresten ulasabilirsiniz. https://technet.microsoft.com/en-us/library/hh699823.aspx

Sorunumuza geri donersek 808 nolu portu degistirmem gerekiyordu. Iste asagidaki komut da tam bu ise yariyor:
Set-ADFSProperties –nettcpport 809

ADFS portunu 809 olarak degistirdim ve servisi yeniden baslattim. 
Configuration Wizard'a geri dondum ve tekrar denedim sorun cozulmustu. Zaten Fiddler'da da ilgili bolumu sorunsuzca gectigini gordum. 

Umarim sizlere de faydali olur.

*************************
21/05/2015 tarihinde ek:
Yukaridaki durum update rollup 0.1 yukledikten sonra yine devam etti. Konuyu arastirinca bu sefer de 49443 portunda ayni sorunun oldugunu gordum. Konuyu inceleyince bu portu da ADFS TlsClientPort oldugunu ogrendim.
Bu portu da yukaridaki konutla baska bir porta yonlendirdim.
Set-ADFSProperties -tlsclientport 42223

firewall ve diger ayarlari yaptiktan sonra ADFS Servisi yeniden baslattim ve hersey yoluna girdi. 

Microsoft Dynamics CRM için Mobile Express

Daha önce Microsoft'a yakın Online Topluluklar üzerinden yürütülen Mobile Express projesini Microsoft sahiplenerek kendi yeniden tasarladı. Artık Mobile Express Microsoft CRM'in Microsoft tarafından desteklenen bir parçası oldu.

Mobile Express HTML 4.0 destekleyen bütün cep telefonları ile çalışabiliyor. Bu bize CRM'i mobil hale getirirken sadece Windows Mobile ile çalışan cihaz yatırımı yapma sıkıntısından kurtarıyor. Buradan da anlayabileceğiniz gibi Mobile Express bie web uygulaması aslında ama Dynamics CRM Platformunun altındaki entity (nesne), view (görünüm), customization (özelleştirme) ve security (güvenlik) mimarisini tamamiyle desteklemekte. Hatta bununla da kalmıyor MS CRM'in Multi Tenancy (birden çok şirket ile çalışma) mimarisini de destekliyor. Üstelik kullanımı ve yönetilmesi de çok kolay.

Mobile Express for Microsoft Dynamics CRM ürünü linke tıklayarak ücretsiz kendi serverınıza yükleyebilirsiniz.

Yukarıdaki linkten ürünü yükledikten sonra ürünün 2 aşamadan oluştuğunu göreceksiniz.

  1. Mobile Console
  2. Mobile Application

Mobile Console

  1. CRM uygulamanızı çalıştırın
  2. Settings (Ayarlar) > Customization (Özelleştirmeler) > Customize Mobile Express tıklayarak Mobile Console'a erişebilirsiniz.

 

Tıkladıktan sonra özelleştirmeleri yapabileceğiniz aşağıdaki ekran açılacaktır. 

Burada görebileceğiniz gibi 2 bölüm vardır:

Available Entities
- Mobile Application tarafından görüntülenebilir entity(nesne)'lerin listesidir. Eğer bir nesnenin Mobile Application'da görüntülenmesini istemiyorsanız onu bu listede bırakın.
Selected Entities
- Mobile Application'da görüntülenen entity(nesne)'lerin listesidir.

Desteklenen Entityler:

•    Custom Entities (Bizim oluşturduğumuz tğm custom entityler)
•    Invoice Product
•    Account
•    Lead
•    Annotation
•    Letter
•    Address
•    Marketing List
•    Appointment
•    Opportunity
•    Case
•    Order
•    Campaign
•    Order Product
•    Contact
•    Phone Call
•    Competitor
•    Quote
•    E-mail
•    Quote Product
•    Fax
•    Task
•    Invoice
•    User

Bir nesneyi sol taraftan sağ tarafa eklemek için ya üzerinde çift tıklamanız ya da "Add" düğmesine tıklamanız gerekmektedir. Bundan sonra sağ tarafa atılan nesneye çift tıkladığınızda ya da "Edit" düğmesine tıkladığınızda o nesnenin hangi alanlarının  Mobile Application'da görünüp görünmeyeceğini seçebileceğiniz bir ekran gelecektir.



Bu ekran yardımıyla görünmesini istediğimiz alanları seçtikten sonra "Save and Close" düğmesine basarak seçimlerimizi kaydediyoruz.
Eğer istediğimiz gibi özelleştirmemizi tamamladıysak yaptıklarımızın Mobile Application'da görüntülenmesi için Publish(Yayınlamak) etmek zorundayız.
Publish : Sadece seçtiğiniz nesnedei değişiklikleri yayınlar.
Publish All : Bütün değişiklikleri yayınlar.


Mobile Application

Bu bölüm ise son kullanıcının gördüğü ve uygulamayı kullandığı kısımdır. Varsayılan olarak http://CRM_Server_Name/OrgName/M bu adresten Mobile Application'a ulaşabilirsiniz. Kullanıcı adı ve şifre bölümünden sonra karşınza erişebildiğiniz nesnelerin listesi çıkacaktır.(1. resim) Bu nesnelerden birini seçtiğimizde CRM'de olduğu gibi seçtiğimiz View(Görünüm)'e göre kayıtlar listelenecektir. Bu noktada yeni kayıt girişi yapabiliriz.(2. resim) Listenen kayıtlardan birine tıkladığımızda ise kaydın bilgileri ve ilişkili olduğu diğer nesnelerin listesi ekrana gelecektir. Bu noktada mevcut kaydı güncelleyebilir ya da silebiliriz.(3. resim)



Mobile Application HTML 4.0 teknolojisine sahip bütün cihazlardan erişilebilir demiştim. İşte IPhone ekran görüntüleri

 

Erişimi Engellemek

Mobile Application'a sadece belli bir kullanıcı grubunun erişmesini istiyorsanız yetkilendirmeden bunu kolaylıkla halledebilirsiniz.



Erişimi engellemek istediğiniz güvenlik rolünden "Go Mobile" seçimini kaldırabilirsiniz.

Notlar

  1. Şu an için sadece kurulum dili 1033 yani İngilizce olan CRM'ler üzerine kurulabilmektedir. Diğer dil paketleri üzerine kurulum çalışmaları devam etmektedir. Eğer İngilizce CRM üzerine kurulum yaparsanız dil paketi olarak Türkçe'yi yüklerseniz Mobile Application Türkçe çalışacaktır.
  2. Dışarıdaki bir adresten CRM'e erişmek için IFDTool'u kurmanız gerekebilir. Bu adreste gerekli bilgiyi bulabilirsiniz. (http://support.microsoft.com/kb/948779)


Bir makalemizin daha sonuna geldik. Umarım anlattıklarım faydalı olmuştur. Hepinize iyi çalışmalar.

Barış KANLICA | Dynamics CRM MVP
Microsoft Certified Business Management Solution Specialist

brsk@e-kolay.net | www.cub-e.net |