IdentityModel now resolves the public key to EPK. See issue #1951 for details.
Fix a race condition where SignatureProvider was disposed but still able to leverage the cache and SignatureProvider now disposes when compacting. See PR #2682 for details.
For JWE, JsonWebTokenHandler.ValidateJWEAsync now considers the decrypt keys in the configuration. See issue #2737 for details.
Performance improvement
AppContext.TryGetSwitchstatically caches internally but takes out a lock.
.NET almost always caches these values. They're not expected to change while the process is running unlike normal config. IdentityModel now caches the value. See issue #2722 for details.
A derived ClaimsIdentity where claim retrieval is case-sensitive. The current ClaimsIdentity, in .NET, retrieves claims in a case-insensitive manner which is different than querying the underlying SecurityToken. The new CaseSensitiveClaimsIdentity class provides consistent retrieval logic with SecurityToken. Fallback to previous behavior via an AppContext switch. See PR #2700 for details.
Make CollectionUtilities.IsNullOrEmpty internal. See issues #2651 and #1722 for details.
Overall improvements to the validation in IdentityModel:
See design proposal #2711 for details, all work internal for now. Please comment in the GitHub issue and provide feedback there.
New Features:
Allow users to provide a Stream to Write in OIDCConfigurationSerializer. See PR #2698 for details.
Bug fixes:
Remove dependency on AadIssuerValidator.GetTenantIdFromToken in ValidateIssuerSigningKey, to only consider the tid. An AppContext switch enables fallbacking to the previous behavior, which should not be needed. See PR #2680 for details.
Serialize byte arrays as base64 strings in Json tokens. This was the behavior in 6.x releases. See issue #2524 for details.
When we added virtuals to abstract methods that threw in the base class, we then called those methods that were implemented in user derived classes. The user code would fault with a NotImplementedException. Now a message is returned that the user can act on to fix the issue. See issue #1970.
Fundamentals
Remove code that was used in target frameworks that got removed. See PR #2673 for details.
Rename local variables for better readability. See PR #2674 for details.
Refactor XML comments for improved clarity. See PR #2676, #2677, #2678, #2689 and #2703 for details.
Made ConfigurationManager.GetConfigurationAsync a virtual method. See PR #2661
8.0.0-preview1
Breaking changes:
IdentityModel 8x no longer supports .net461, which has reached end of life and is no longer supported. See issue #2544 for details.
Two IdentityModel extension dlls Microsoft.IdentityModel.KeyVaultExtensions and Microsoft.IdentityModel.ManagedKeyVaultSecurityKey were using ADAL, which is no longer supported . The affected packages have been removed, as the replacement is to use Microsoft.Identity.Web. See issue #2454 for details.
AppContext.SetSwitch which were included in IdentityModel 7x, have been removed and are the default in IdentityModel 8x. The result is a more performant IdentityModel by default. See issue #2629 and https://aka.ms/IdentityModel8x for details.
IdentityModel now resolves the public key to EPK. See issue #1951 for details.
Fix a race condition where SignatureProvider was disposed but still able to leverage the cache and SignatureProvider now disposes when compacting. See PR #2682 for details.
For JWE, JsonWebTokenHandler.ValidateJWEAsync now considers the decrypt keys in the configuration. See issue #2737 for details.
Performance improvement
AppContext.TryGetSwitchstatically caches internally but takes out a lock.
.NET almost always caches these values. They're not expected to change while the process is running unlike normal config. IdentityModel now caches the value. See issue #2722 for details.
A derived ClaimsIdentity where claim retrieval is case-sensitive. The current ClaimsIdentity, in .NET, retrieves claims in a case-insensitive manner which is different than querying the underlying SecurityToken. The new CaseSensitiveClaimsIdentity class provides consistent retrieval logic with SecurityToken. Fallback to previous behavior via an AppContext switch. See PR #2700 for details.
Make CollectionUtilities.IsNullOrEmpty internal. See issues #2651 and #1722 for details.
Overall improvements to the validation in IdentityModel:
See design proposal #2711 for details, all work internal for now. Please comment in the GitHub issue and provide feedback there.
New Features:
Allow users to provide a Stream to Write in OIDCConfigurationSerializer. See PR #2698 for details.
Bug fixes:
Remove dependency on AadIssuerValidator.GetTenantIdFromToken in ValidateIssuerSigningKey, to only consider the tid. An AppContext switch enables fallbacking to the previous behavior, which should not be needed. See PR #2680 for details.
Serialize byte arrays as base64 strings in Json tokens. This was the behavior in 6.x releases. See issue #2524 for details.
When we added virtuals to abstract methods that threw in the base class, we then called those methods that were implemented in user derived classes. The user code would fault with a NotImplementedException. Now a message is returned that the user can act on to fix the issue. See issue #1970.
Fundamentals
Remove code that was used in target frameworks that got removed. See PR #2673 for details.
Rename local variables for better readability. See PR #2674 for details.
Refactor XML comments for improved clarity. See PR #2676, #2677, #2678, #2689 and #2703 for details.
Made ConfigurationManager.GetConfigurationAsync a virtual method. See PR #2661
8.0.0-preview1
Breaking changes:
IdentityModel 8x no longer supports .net461, which has reached end of life and is no longer supported. See issue #2544 for details.
Two IdentityModel extension dlls Microsoft.IdentityModel.KeyVaultExtensions and Microsoft.IdentityModel.ManagedKeyVaultSecurityKey were using ADAL, which is no longer supported . The affected packages have been removed, as the replacement is to use Microsoft.Identity.Web. See issue #2454 for details.
AppContext.SetSwitch which were included in IdentityModel 7x, have been removed and are the default in IdentityModel 8x. The result is a more performant IdentityModel by default. See issue #2629 and https://aka.ms/IdentityModel8x for details.
... (truncated)
Commits
e67b25b Fix string comparison with differing timestamps (#2739)
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
Bumps System.IdentityModel.Tokens.Jwt from 7.5.1 to 8.0.1.
Release notes
Sourced from System.IdentityModel.Tokens.Jwt's releases.
... (truncated)
Changelog
Sourced from System.IdentityModel.Tokens.Jwt's changelog.
... (truncated)
Commits
e67b25b
Fix string comparison with differing timestamps (#2739)1c3e895
8.0.1 changelog (#2740)ec39ddb
Fixes 2737 (#2738)49a3a95
Do not dispose SignatureProvider when AsymmetricAdapter faults. (#2682)ecc2b08
removing old code signing reference (#2727)a7ef799
Read Token: Remove Exceptions (#2702)245c831
Transmit EPK and use as public key during decrypt (#2120)7ef3263
Cache context switches (#2724)8c5e456
Algorithm validation: Remove exceptions (#2719)2e7c701
Update Saml2SecurityTokenHandler.cs (#2718)Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show