I can't tell you how many times lately, that I've seen people writing about service principles when they really mean service principals. These are entirely different concepts!
I did a certification exam the other day, and it was asking about service principles. I was left wondering how many people had reviewed that before it was released.
But what's worse, is when people bake the wrong one into code libraries that others need to use. I was reading some content from Microsoft Learn: Quickstart: Manage data with Azure Cosmos DB Spark 3 OLTP Connector for API for NoSQL and I saw this code example:
Note the authType. I just thought it was a typo and was going to make a pull request to fix it. But then I went looking at the library that it was using. That's Azure Cosmos DB OLTP Spark 3 connector, and what amazed me, is that the typo was right throughout the library.
I've passed about this back to the Cosmos DB team but it left me wondering what you should do when you see this sort of error in a library.
Do you just use the typo in your code and just forever propagate the mistake?
What should library authors do, to avoid breaking existing code? Perhaps allow both the correctly spelled option as well as the wrong one?
A service principal is a security identity used by applications, services, or automated processes to access specific resources or perform tasks within an Azure Active Directory (Azure AD) tenant. It's most commonly a type of service entity that can be assigned permissions to access resources in a secure manner. These are very common in Azure but they appear in many places across the IT industry.
A service principle really isn't something we talk about often but if we did, it would be perhaps a rule that we try to follow when providing service. Richard Koch wrote a famous book called The 80/20 Principle. That's often called The Pareto Principle. Either way, it's got nothing to do with an identity that performs actions in IT systems.