I am seeing strange behavior when accessing the REST API for ADFS in an Azure configuration.
Let's say I use a tool like OpenSSl or DigiCert to test whether or not my site is returning the correct certificates. For example:
openssl s_client -connect adfs.{mydomain}.com:443
Running this multiple times will alternately return the correct certificate and the wrong certificate.
The configuration is as follows:
- CNAMES for ADFS, WWW, and ADRMS have been create in DNS, pointing them to {mydomain}testsvc.cloudapp.net which is the Azure public host.
- A SAN Certificate has been created and installed on the internet facing webserver
- Subject Name: www.{mydomain}.com
- Subject Alternative Names: adfs.{mydomain}.com, adrms.{mydomain}.com, www.{mydomain}.com
- Running "Netsh http show sslcert" on the webserver shows the right certificate for both the adfs and adrms Hostname:Port
- The WebApplicationProxy is installed to allow me to reach adfs.{mydomain}.com/adfs/oauth2/xxx.
If I run a slightly different test:
openssl s_client -connect adrms.{mydomain}.com:443
Then, I also get alternatingly different certificates. I've determined that the edge server is providing the correct certificate, and the adrms server is providing the "bad" certificate. In fact, that certificate is really okay, it just shouldn't be provided to someone asking for adfs.{mydomain}.com.
So, why do connect requests to adfs alternately got to the edge server and to the adrms server? And where do I go looking now to figure out this problem? I admit I have very little knowledge of WebApplicationProxy and how to direct all traffic through the edge server (including adrms traffic).
I can provide a real URI to demonstrate the problem via a private message.
Also: I suspect a load balancer because my web logs have lots of requests from a "Load Balancer Agent". However, I can't find one configured. I've used:
Get-AzureInternalLoadBalancer
Get-AzureRMLoadBalancer
Neither return anything.