docs(design): devex proposal for Bearer tokens with bound credentials#3833
Open
gladjohn wants to merge 2 commits into
Open
docs(design): devex proposal for Bearer tokens with bound credentials#3833gladjohn wants to merge 2 commits into
gladjohn wants to merge 2 commits into
Conversation
This update refines the proposal for bearer tokens with bound credentials in Microsoft.Identity.Web, including clarifications on naming conventions and the developer experience for opting into the bound-credential flow.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Adds a developer-experience design document for opting individual
ClientCredentials[]entries into the bound-credential flow whenacquiring Bearer access tokens in
Microsoft.Identity.Web.The doc lives at
docs/design/bearer_tokens_with_bound_credentials_devex.md,alongside the existing
managed_identity_capabilities_devex.mdandmsi-fic-pure-mtls-pop-devex.md.Why
When a confidential client app requests a Bearer access token today, the
credential presented to Entra is also a Bearer artifact — a client
assertion JWT signed locally with an X.509 certificate, or a signed
assertion issued by a federation provider (e.g. Managed Identity).
A bound credential is a sender-constrained variant of the same
credential:
presents the certificate over mTLS. No client assertion JWT is created.
(signed assertion + binding certificate) from MSI and calls Entra over
mTLS using the binding certificate.
In both cases the access token returned to the app is a regular Bearer
token. The downstream API does not change.
The underlying capability is already shipped in MSAL.NET
(#5849)
and a new property is in review on the abstractions
(#252).
This spec covers how IdWeb consumes that property.
What's in scope
ClientCredentials[]entry. Apps can mix bound and non-bound credentialsfreely.
Certificate(and the certificate-flavoredsources) and
SignedAssertionFromManagedIdentity. Other source typesignore the flag.
Bearer; the
DownstreamApisection is untouched.daemon-app-cert-boundanddaemon-app-fic-bound.docs/authentication/credentials/certificates.mdanddocs/authentication/credentials/certificateless.mdget a "Use as a boundcredential" subsection.
What's out of scope
follow-up PR once abstractions
#252
is finalized.
#3832
(
msi-fic-pure-mtls-pop-devex.md). The two opt-ins are independent.client_credentials— the underlying MSAL capabilitycurrently covers only
client_credentials. Other flows are out of scope.API surface — still being decided
The configuration property name and type are still in review on the
abstractions PR. The current proposal on
#252
is:
Reviewer feedback has suggested:
so the library default can change over time without breaking explicit
overrides. This IdWeb spec will be updated once #252 is finalized. The
shape and behavior described in the doc are otherwise stable.
Prerequisites for the implementation PR
Microsoft.Identity.Webtakes a dependency on the abstractions versionthat ships the new property (merge of [Bug] Fixes in MsalSessionTokenCacheProvider.cs #252).
client_credentials-only — notenabled in all clouds.
PoP access tokens).
Confidential VMs (Key Guard + attestation).