https://duendesoftware.com/blog/20260903-client-secrets-mutual-tls-and-private-key-jwt #617
Replies: 1 comment 2 replies
|
We have extended Identity Server to support what we call a federated credential (seems the industry may now be standardizing on workload identity or workload identity federation). The pattern is broadly applicable that we would love to see some version of this in Identity Server so we can remove this customization. Would love some feedback on this. The basic concept is you establish trust with another OIDC provider and then you can accept tokens from this provider and map them to a an Identity Server client. To implement this in Identity Server, there are 3 components involved:
We are in Azure, so for us this means we have establish a trust relationship with Entra ID. In Entra ID there's an App Registration which has App Roles. Each App Role represents an Identity Server client. We use Entra ID functionality to protect which Entra identities are allowed to access the App Registration and which App Role they can access. Our applications then use standard libraries (Azure.Identity in .NET) to request an Entra ID token and then exchange it for a token from Identity Server. This means we have no secrets in Identity Server or even no public keys to manage. And even better, we can rely on Entra ID's support for secret-less authentication and use their federated credential support (Managed Identities, etc.) and the whole flow works without any secrets. Here's the real world workflow we use. First the setup:
With this setup, we get a full end-to-end flow where our workloads can get a token from Identity Server without secrets:
I believe what I described works in any of the major clouds and should be applicable more broadly than Azure. |
Uh oh!
There was an error while loading. Please reload this page.
https://duendesoftware.com/blog/20260903-client-secrets-mutual-tls-and-private-key-jwt
Compare three OAuth client authentication methods in ASP.NET Core: Client Secrets, Private Key JWT, and Mutual TLS, with code examples for Duende IdentityServer.
https://duendesoftware.com/blog/20260903-client-secrets-mutual-tls-and-private-key-jwt
All reactions