-
Notifications
You must be signed in to change notification settings - Fork 373
MSI V2 client side keys #5448
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Robbie-Microsoft
merged 19 commits into
rginsburg/msiv2_feature_branch
from
gladjohn/msi_vs_keys
Sep 19, 2025
Merged
MSI V2 client side keys #5448
Robbie-Microsoft
merged 19 commits into
rginsburg/msiv2_feature_branch
from
gladjohn/msi_vs_keys
Sep 19, 2025
Conversation
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
bgavrilMS
reviewed
Aug 25, 2025
src/client/Microsoft.Identity.Client/Internal/Requests/ManagedIdentityAuthRequest.cs
Outdated
Show resolved
Hide resolved
bgavrilMS
reviewed
Aug 25, 2025
.../Microsoft.Identity.Client/ManagedIdentity/KeyProviders/WindowsManagedIdentityKeyProvider.cs
Outdated
Show resolved
Hide resolved
bgavrilMS
reviewed
Aug 25, 2025
src/client/Microsoft.Identity.Client/ManagedIdentity/MiKeyTypes.cs
Outdated
Show resolved
Hide resolved
bgavrilMS
reviewed
Aug 25, 2025
src/client/Microsoft.Identity.Client/ManagedIdentity/MiKeyTypes.cs
Outdated
Show resolved
Hide resolved
bgavrilMS
reviewed
Aug 25, 2025
src/client/Microsoft.Identity.Client/Microsoft.Identity.Client.csproj
Outdated
Show resolved
Hide resolved
bgavrilMS
reviewed
Aug 25, 2025
src/client/Microsoft.Identity.Client/ManagedIdentity/KeyProviders/KeyGuardKey.cs
Outdated
Show resolved
Hide resolved
bgavrilMS
reviewed
Aug 25, 2025
.../Microsoft.Identity.Client/ManagedIdentity/KeyProviders/WindowsManagedIdentityKeyProvider.cs
Outdated
Show resolved
Hide resolved
bgavrilMS
reviewed
Aug 25, 2025
src/client/Microsoft.Identity.Client/ManagedIdentity/ManagedIdentityKeyProviderFactory.cs
Outdated
Show resolved
Hide resolved
bgavrilMS
reviewed
Aug 25, 2025
src/client/Microsoft.Identity.Client/ManagedIdentity/ManagedIdentityKeyProviderFactory.cs
Outdated
Show resolved
Hide resolved
gladjohn
commented
Aug 25, 2025
src/client/Microsoft.Identity.Client/Microsoft.Identity.Client.csproj
Outdated
Show resolved
Hide resolved
292436c
to
c813ed0
Compare
bgavrilMS
reviewed
Aug 28, 2025
...Microsoft.Identity.Client/ManagedIdentity/KeyProviders/InMemoryManagedIdentityKeyProvider.cs
Outdated
Show resolved
Hide resolved
bgavrilMS
reviewed
Aug 28, 2025
...Microsoft.Identity.Client/ManagedIdentity/KeyProviders/InMemoryManagedIdentityKeyProvider.cs
Outdated
Show resolved
Hide resolved
bgavrilMS
approved these changes
Aug 28, 2025
2b237ff
to
6578b06
Compare
6578b06
to
df59d37
Compare
MZOLN
reviewed
Sep 4, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
General feedback
...Microsoft.Identity.Client/ManagedIdentity/KeyProviders/InMemoryManagedIdentityKeyProvider.cs
Outdated
Show resolved
Hide resolved
src/client/Microsoft.Identity.Client/ManagedIdentity/KeyProviders/KeyGuardHelper.cs
Outdated
Show resolved
Hide resolved
...Microsoft.Identity.Client/ManagedIdentity/KeyProviders/InMemoryManagedIdentityKeyProvider.cs
Outdated
Show resolved
Hide resolved
src/client/Microsoft.Identity.Client/ManagedIdentity/KeyProviders/KeyGuardHelper.cs
Outdated
Show resolved
Hide resolved
src/client/Microsoft.Identity.Client/ManagedIdentity/KeyProviders/KeyGuardHelper.cs
Outdated
Show resolved
Hide resolved
src/client/Microsoft.Identity.Client/ManagedIdentity/KeyProviders/WindowsCngKeyOperations.cs
Show resolved
Hide resolved
src/client/Microsoft.Identity.Client/ManagedIdentity/KeyProviders/WindowsCngKeyOperations.cs
Outdated
Show resolved
Hide resolved
src/client/Microsoft.Identity.Client/ManagedIdentity/KeyProviders/WindowsCngKeyOperations.cs
Show resolved
Hide resolved
.../Microsoft.Identity.Client/ManagedIdentity/KeyProviders/WindowsManagedIdentityKeyProvider.cs
Outdated
Show resolved
Hide resolved
src/client/Microsoft.Identity.Client/ManagedIdentity/ManagedIdentityKeyProviderFactory.cs
Show resolved
Hide resolved
src/client/Microsoft.Identity.Client/ManagedIdentity/IManagedIdentityKeyProvider.cs
Show resolved
Hide resolved
src/client/Microsoft.Identity.Client/ManagedIdentity/IManagedIdentityKeyProvider.cs
Show resolved
Hide resolved
src/client/Microsoft.Identity.Client/ManagedIdentity/ManagedIdentityKeyInfo.cs
Show resolved
Hide resolved
src/client/Microsoft.Identity.Client/ManagedIdentity/ManagedIdentityKeyInfo.cs
Show resolved
Hide resolved
src/client/Microsoft.Identity.Client/ManagedIdentity/KeyProviders/KeyGuardHelper.cs
Outdated
Show resolved
Hide resolved
src/client/Microsoft.Identity.Client/ManagedIdentity/KeyProviders/KeyGuardHelper.cs
Outdated
Show resolved
Hide resolved
src/client/Microsoft.Identity.Client/Internal/Requests/ManagedIdentityAuthRequest.cs
Outdated
Show resolved
Hide resolved
src/client/Microsoft.Identity.Client/ManagedIdentity/ManagedIdentityKeyProviderFactory.cs
Show resolved
Hide resolved
bgavrilMS
reviewed
Sep 5, 2025
...Microsoft.Identity.Client/ManagedIdentity/KeyProviders/InMemoryManagedIdentityKeyProvider.cs
Show resolved
Hide resolved
bgavrilMS
reviewed
Sep 5, 2025
src/client/Microsoft.Identity.Client/ManagedIdentity/KeyProviders/WindowsCngKeyOperations.cs
Outdated
Show resolved
Hide resolved
...Microsoft.Identity.Client/ManagedIdentity/KeyProviders/InMemoryManagedIdentityKeyProvider.cs
Show resolved
Hide resolved
Robbie-Microsoft
approved these changes
Sep 19, 2025
774e01e
into
rginsburg/msiv2_feature_branch
3 checks passed
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.
Fixes - adds the key management logic for MSI flows or aka CSK (Client side keys)
This will not be merged as is. Instead will go into the MSI v2 feature branch.
This pull request introduces a new abstraction for Managed Identity key management, allowing for improved flexibility and security in how authentication keys are created and sourced. The main changes include the addition of provider classes for key creation (with platform-specific logic for Windows), a new interface for key providers, and integration of this abstraction into the authentication request flow. The implementation prioritizes secure hardware-backed keys and falls back to in-memory keys as needed.
Managed Identity Key Provider Abstraction
IManagedIdentityKeyProvider
interface (src/client/Microsoft.Identity.Client/ManagedIdentity/IManagedIdentityKeyProvider.cs
) and theManagedIdentityKeyInfo
class to encapsulate key details and provider messages. [1] [2]Platform-Specific Key Providers
InMemoryManagedIdentityKeyProvider
, which generates and caches an RSA key in memory for authentication scenarios.WindowsManagedIdentityKeyProvider
, which attempts to source keys from KeyGuard (VBS isolation), hardware TPM/KSP, or falls back to in-memory keys, with detailed logging and error handling.WindowsCngKeyOperations
,KeyGuardHelper
). [1] [2]Integration with Authentication Flow
ManagedIdentityAuthRequest
to use the new key provider abstraction, retrieving the best available key for authentication. [1] [2]Dependency Management
Directory.Packages.props
to ensureSystem.Security.Cryptography.Cng
is included as a private asset for key provider functionality. [1] [2]