I’m about to say two words that bring tears and frustration to most application developers and administrators alike. Are you ready? Okay…. Kerberos authentication. There, I said it and if that was not bad enough I’m going to say another phrase that will cause rage and a fit that makes Lewis Black look calm…. Kerberos is easy. That boom you hear was me dropping the mic, yea I said Kerberos was easy. So if you’re still reading you are more than likely saying this guy is full of $%*! and you’d be somewhat right but that’s a topic for another time. Now, the reason I say Kerberos is easy is because most problems can usually be traced down to a fuzzy understanding on how APM authentication and Single Sign-On (SSO) work or the following common Kerberos issues:
- Service Principal Name (SPN) issues
- DNS issues
- Time issues
APM and Kerberos
In regards to Kerberos and F5 Access Policy Manager (APM) the below information and advice will save you a lot of time and hopefully some hair; for me it’s too late… Kerberos took the best of me a long time ago.
- Client authentication is completely separate from server authentication
- For the love of all that is holy please don’t troubleshoot client authentication and server authentication issues at the same time
Authentication with a Full Proxy
So if you’ve every seen me present I typically pound the drum over and over again about how F5 is a “dual-stack full proxy” which is fancy marketing speak for two completely separate TCP stacks. What I mean by this is the client has a completely separate TCP connection from the server. This gives the F5 a lot of power but it also confuses many administrators that are new to the BIG-IP platform.
So for authentication this means that auth requests to a website do not just “pass-through” the F5 to the server. The user authenticates to the F5 and then the F5 authenticates to the server. When we’re dealing with Kerberos this means that Kerberos can refer to two authentication options:
- client authentication to the F5
- server authentication from the F5 using Kerberos Constrained Delegation
Now we typically refer to the client side as AAA authentication and the server side as Single Sign On. If you’re new to this I high recommend you checkout Brett Smith’s Single Sign On (SSO) using Kerberos post on DevCentral. This will walk you through how to configure the APM AAA object and how to configure the Kerberos SSO object.
Break The Issue Down
Once you’ve setup the Kerberos AAA authentication and the Kerberos SSO you’ll typically fire up a browser and try to authenticate against APM and expect to see your protected website. Now, if you one of the lucky few this will just work and fireworks will start going off in the distance as a parade in your honor proceeds past the water cooler. For the rest of us this will fail in epic fashion and we’ll start channeling Lewis Black again as we yell profanity at our computer; I promise you that 1/100 times this will make things work so I strongly encourage this practice. At this point take a deep breath and start breaking the problem into smaller size bites that we can address.
1. Did APM authenticate the user correctly?
If you look under Managed Sessions in the APM menu and you see a green ball with your username in the table then Kerberos AAA is working. If not, we now know what to focus on and we can start troubleshooting this aspect of the APM policy without worrying about the Kerberos SSO – which you should ignore until this step works.
2. Did your browser present a pop-up asking for username/password
This is typically a tell-tell sign that Kerberos SSO did not work. Now, you can troubleshoot this with your APM policy as is but I like to build a separate APM policy that only deals with Kerberos SSO and does not perform client authentication. This allows me to quickly progress through multiple testing iterations without constantly logging in (keep in mind that Kerberos SSO can be used with any form of client authentication from SAML to Forms Auth to Basic). I credit Kevin Stewart for this trick and it has greatly reduced the time it takes for me to solve Kerberos issues. So what does this policy look like?
Pretty simple, you only need a Variable Assign and set the APM session variables that the Kerberos SSO configuration is looking for:
In the next post we’ll examine the troubleshooting steps you’d take to troubleshoot Kerberos Authentication and then we’ll tackle Kerberos SSO.
Featured image courtesy of renee.