In recent weeks I’ve been implementing single-sign on with Entra for a couple of difference clients. In one case this was for connecting to AWS, and in the other, GitHub. One of these solutions was quite easy—the other one was the company Microsoft owns and was a lot more painful. In this post, you are going to learn about a couple of protocols—Security Assertion Markup Language (SAML) and System for Cross-Domain Identity Management (SCIM—they really worked hard for this acronym). We’re going to talk about the benefits of this config and then how you can implement.
One of the challenges historically around single-sign on (SSO) has been the variety of different providers and having their own ecosystem. I remember a very nascent attempt at this from Oracle (good lord, could you imagine the licensing on that) in the early 2000s, that never really got anywhere. Active Directory was the closest thing we had to ubiquitous access control system, but it mostly required line of site to a domain controller (or the complexities of ADFS). Entra, nee Azure Active Directory really made it possible for your identity management system to interact with lots of third party SaaS apps.
The benefits of single sign on should be obvious, but the biggest is that when you deprovision users in your identity management system, those users are then deprovisioned everywhere. The other benefit is that it allows you to use Entra groups to manage permissions across your systems. You can make application admin teams owners of their own groups, so they can manage their own permissions easily within those apps. (You don’t want to assign users directly if you can help it).
There are two main protocols involved here—the first being SAML, which actually handles the authentication step. There are three roles in SAML: the principal (which is typically the human or machine user), the identity provider or IdP, and the service provider (SP). The SP requests and obtains an authentication token from the IdP and then makes an access control decision to allow the principal to come into the system. This happens at login time. In both our AWS and GitHub examples , we define an identity (our AWS or GitHub organization) on the Entra side and then provide AWS with a certificate and redirect URL to our Entra tenant. That’s the authentication side, which is just one part of this.
The second part is where SCIM comes in—we want to be able to add users and groups to our app in Entra, and then have them show up in AWS.

For SCIM to work on the Entra side, we pass in a Tenant URL and secret token:

What this does is allows users and groups to be added to the application in Entra, and then pass through into the service on the other side. When we add the group AWSLogin it will show up in AWS. This sync process runs every 40 minutes by default but can be forced manually.
I wanted to complain a minute about GitHub here—I set this up on AWS at client in like 15 minutes, and John and I did for DCAC’s AWS account in even less time. In GitHub, the SAML setup is pretty easy as well—but getting the right SKU for single sign-on is really hard. First of all, GitHub is one of those companies that charges an SSO tax (you can only get SSO on the Enteprise tier). Secondly, you have to have a specific SKU of Enterprise (it’s the same price as regular enterprise at least), but you can’t migrate from another tier to it. So if you have a teams or regular enterprise GitHub account to enable “true” SSO, you need to migrate. Which sucks. Finally, the docs aren’t clear about this, and you can setup SSO for the non managed user tier, but then your users still have to authenticate to GitHub after completing an Entra login. This is all entirely harder than it needs to be
Single-sign on increases security and makes users lives easier. So even though setup can be a pain in the neck, it’s worth in the end.










