Attenzione all'ADFS 2.1!!!

...come provider di autenticazione per il CRM in IFD.
Sui manuali si legge che sono supportate le versioni 2.0 (Windows Server 2008 / R2) o successive (2.1 ==> Windows Server 2012, 2.2 ==> Windows Server 2012 R2). Fra le versioni la 2.1 è la più rognosa da configurare con il CRM, mentre bisogna ricordare che per la 2.2 non esiste più il ruolo "Stand Alone Server" e bisogna obbligatoriamente usare un proxy, ma la cosa è ben documentata nei relativi documenti Microsoft.
Se il CRM e ADFS sono sulla stessa macchina e ADFS è 2.1, oltre al fatto di spostare la porta del CRM (la 443 è occupata dall'ADFS) si può incorrere in un altro problema quando si cerca di autenticarsi alla Platform da codice: l'autenticazione fallisce e nei log di Windows si trova qualcosa del tipo:
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
   at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
   at System.Net.Sockets.Socket.Bind(EndPoint localEP)
   at System.ServiceModel.Channels.SocketConnectionListener.Listen()
   --- End of inner exception stack trace ---
   at System.ServiceModel.Channels.SocketConnectionListener.Listen()
   at System.ServiceModel.Channels.ConnectionAcceptor.StartAccepting()
   at System.ServiceModel.Channels.ExclusiveTcpTransportManager.OnOpen()
   at System.ServiceModel.Channels.TransportManager.Open(TransportChannelListener channelListener)
   at System.ServiceModel.Channels.TransportManagerContainer.Open(SelectTransportManagersCallback selectTransportManagerCallback)
   at System.ServiceModel.Channels.TcpChannelListener`2.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.Dispatcher.ChannelDispatcher.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at System.ServiceModel.ServiceHostBase.OnOpen(TimeSpan timeout)
   at System.ServiceModel.Channels.CommunicationObject.Open(TimeSpan timeout)
   at Microsoft.IdentityServer.ServiceHost.STSService.StartSTSService(ServiceHostManager serviceHostManager, ServiceState serviceState)
 
Si noti che l'autenticazione via interfaccia web funziona benissimo.
Il tutto è dovuto ad un conflitto di porte IP utilizzate sia dall'AFDS, sia dal servizio sandbox del CRM che viene utilizzato quando ci si autentica via codice. La porta incriminata è la 808.
 
Qui sotto i riferimenti ai siti ufficiali per risolvere il problema.
 
QUESTO è L'ARTCOLO DI RIFERIMENTO
http://blogs.technet.com/b/bshastri/archive/2014/03/20/dynamics-crm-ifd-on-windows-server-2012-r2-adfs-crm-addin-for-outlook.aspx
 
QUESTO è L'ARTICOLO PER CAMBIARE LA PORTA PER IL SERVIZIO ADFS
http://social.technet.microsoft.com/wiki/contents/articles/2009.ad-fs-2-0-how-to-change-the-net-tcp-ports-for-services-and-administration.aspx

 

Dettagli...