Skip to content
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

[release/8.0] Improve usage of Type.GetType when activating types in data protection #54762

Merged
merged 9 commits into from
Apr 2, 2024

Conversation

github-actions[bot]
Copy link
Contributor

@github-actions github-actions bot commented Mar 26, 2024

Backport of #54256 to release/8.0

/cc @JamesNK @khellang

Improve usage of Type.GetType when activating types in data protection

Microsoft.AspNetCore.DataProtection was changed in .NET 8 to support AOT. One of the changes caused Type.GetType(typeName, throwOnError) to be called earlier than it was in .NET 7 in earlier. In rare circumstances this causes a regression and an error to be thrown.

The error occurs if an app is using a custom data protection decryptor, such as Azure.Extensions.AspNetCore.DataProtection.Keys from Azure, and the app is on .NET Framework (the data protection supports .NET Framework targets). Even though throwOnError is false in the call to Type.GetType, .NET Framework strong name binding can still cause the method to fail with an error.

The fix is to:

  • Catch error from Type.GetType. An error is treated the same as failing to resolve the type. This makes Type.GetType behavior consistent between .NET 5+ and .NET Framework
  • Test the type name before calling Type.GetType. This is a performance optimization to reduce the need to call Type.GetType. We don't want .NET Framework to throw excessive internal exceptions and hurt performance.

Fixes #54253
Fixes #48910

Customer Impact

Microsoft.AspNetCore.DataProtection package 8.0.x can't be used with custom encryptors/decryptors on .NET Framework.

Regression?

  • Yes
  • No

This scenario worked without error with Microsoft.AspNetCore.DataProtection package 7.0.x and earlier.

Risk

  • High
  • Medium
  • Low

Minor changes to the Microsoft.AspNetCore.DataProtection library.

Verification

  • Manual (required)
  • Automated

Before (error):
image

After (success):
image

Packaging changes reviewed?

  • Yes
  • No
  • N/A

When servicing release/2.1

  • Make necessary changes in eng/PatchConfig.props

@dotnet-issue-labeler dotnet-issue-labeler bot added the area-dataprotection Includes: DataProtection label Mar 26, 2024
@dotnet-policy-service dotnet-policy-service bot added this to the 8.0.x milestone Mar 26, 2024
@JamesNK JamesNK requested a review from amcasey March 26, 2024 02:45
@JamesNK JamesNK added the Servicing-consider Shiproom approval is required for the issue label Mar 26, 2024
@JamesNK JamesNK added Servicing-approved Shiproom has approved the issue and removed Servicing-consider Shiproom approval is required for the issue labels Apr 2, 2024
@JamesNK JamesNK modified the milestones: 8.0.x, 8.0.5 Apr 2, 2024
@wtgodbe wtgodbe merged commit 22bb1c3 into release/8.0 Apr 2, 2024
23 of 25 checks passed
@wtgodbe wtgodbe deleted the backport/pr-54256-to-release/8.0 branch April 2, 2024 21:04
@dotnet-policy-service dotnet-policy-service bot modified the milestone: 8.0.5 Apr 2, 2024
oskogstad added a commit to digdir/dialogporten that referenced this pull request May 26, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [Microsoft.AspNetCore.Authentication.JwtBearer](https://asp.net/)
([source](https://togithub.com/dotnet/aspnetcore)) | `8.0.4` -> `8.0.5`
|
[![age](https://developer.mend.io/api/mc/badges/age/nuget/Microsoft.AspNetCore.Authentication.JwtBearer/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/Microsoft.AspNetCore.Authentication.JwtBearer/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/Microsoft.AspNetCore.Authentication.JwtBearer/8.0.4/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/Microsoft.AspNetCore.Authentication.JwtBearer/8.0.4/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [Microsoft.AspNetCore.Mvc.NewtonsoftJson](https://asp.net/)
([source](https://togithub.com/dotnet/aspnetcore)) | `8.0.4` -> `8.0.5`
|
[![age](https://developer.mend.io/api/mc/badges/age/nuget/Microsoft.AspNetCore.Mvc.NewtonsoftJson/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/Microsoft.AspNetCore.Mvc.NewtonsoftJson/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/Microsoft.AspNetCore.Mvc.NewtonsoftJson/8.0.4/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/Microsoft.AspNetCore.Mvc.NewtonsoftJson/8.0.4/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [Microsoft.AspNetCore.OpenApi](https://asp.net/)
([source](https://togithub.com/dotnet/aspnetcore)) | `8.0.4` -> `8.0.5`
|
[![age](https://developer.mend.io/api/mc/badges/age/nuget/Microsoft.AspNetCore.OpenApi/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/Microsoft.AspNetCore.OpenApi/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/Microsoft.AspNetCore.OpenApi/8.0.4/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/Microsoft.AspNetCore.OpenApi/8.0.4/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[Microsoft.EntityFrameworkCore.Relational](https://docs.microsoft.com/ef/core/)
([source](https://togithub.com/dotnet/efcore)) | `8.0.4` -> `8.0.5` |
[![age](https://developer.mend.io/api/mc/badges/age/nuget/Microsoft.EntityFrameworkCore.Relational/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/Microsoft.EntityFrameworkCore.Relational/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/Microsoft.EntityFrameworkCore.Relational/8.0.4/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/Microsoft.EntityFrameworkCore.Relational/8.0.4/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[Microsoft.EntityFrameworkCore.Tools](https://docs.microsoft.com/ef/core/)
([source](https://togithub.com/dotnet/efcore)) | `8.0.4` -> `8.0.5` |
[![age](https://developer.mend.io/api/mc/badges/age/nuget/Microsoft.EntityFrameworkCore.Tools/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/Microsoft.EntityFrameworkCore.Tools/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/Microsoft.EntityFrameworkCore.Tools/8.0.4/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/Microsoft.EntityFrameworkCore.Tools/8.0.4/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [Microsoft.Extensions.Caching.StackExchangeRedis](https://asp.net/)
([source](https://togithub.com/dotnet/aspnetcore)) | `8.0.4` -> `8.0.5`
|
[![age](https://developer.mend.io/api/mc/badges/age/nuget/Microsoft.Extensions.Caching.StackExchangeRedis/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/Microsoft.Extensions.Caching.StackExchangeRedis/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/Microsoft.Extensions.Caching.StackExchangeRedis/8.0.4/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/Microsoft.Extensions.Caching.StackExchangeRedis/8.0.4/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
| [Microsoft.Extensions.Http.Polly](https://asp.net/)
([source](https://togithub.com/dotnet/aspnetcore)) | `8.0.4` -> `8.0.5`
|
[![age](https://developer.mend.io/api/mc/badges/age/nuget/Microsoft.Extensions.Http.Polly/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/Microsoft.Extensions.Http.Polly/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/Microsoft.Extensions.Http.Polly/8.0.4/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/Microsoft.Extensions.Http.Polly/8.0.4/8.0.5?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>dotnet/aspnetcore
(Microsoft.AspNetCore.Authentication.JwtBearer)</summary>

###
[`v8.0.5`](https://togithub.com/dotnet/aspnetcore/releases/tag/v8.0.5):
.NET 8.0.5

[Release](https://togithub.com/dotnet/core/releases/tag/v8.0.5)

##### What's Changed

- \[release/8.0] Update dependencies from dotnet/source-build-externals
by [@&#8203;dotnet-maestro](https://togithub.com/dotnet-maestro) in
[dotnet/aspnetcore#54744
- Update branding to 8.0.5 by
[@&#8203;vseanreesermsft](https://togithub.com/vseanreesermsft) in
[dotnet/aspnetcore#54907
- \[release/8.0] Convert to 1ES templates by
[@&#8203;RussKie](https://togithub.com/RussKie) in
[dotnet/aspnetcore#54660
- Increase logs and delays in CanLaunchPhotinoWebViewAndClickButton by
[@&#8203;Eilon](https://togithub.com/Eilon) in
[dotnet/aspnetcore#54608
- \[release/8.0] (deps): Bump src/submodules/googletest from `31993df`
to `77afe8e` by [@&#8203;dependabot](https://togithub.com/dependabot) in
[dotnet/aspnetcore#54872
- \[release/8.0] Reduce helix-matrix timeout to 5 hours by
[@&#8203;github-actions](https://togithub.com/github-actions) in
[dotnet/aspnetcore#54778
- \[release/8.0] Preserve RemoteAuthenticationContext during trimming if
used in JS interop by [@&#8203;halter73](https://togithub.com/halter73)
in
[dotnet/aspnetcore#54655
- \[release/8.0] Improve usage of `Type.GetType` when activating types
in data protection by
[@&#8203;github-actions](https://togithub.com/github-actions) in
[dotnet/aspnetcore#54762
- \[release/8.0] Fix route analyzer performance with highly concatenated
strings by [@&#8203;github-actions](https://togithub.com/github-actions)
in
[dotnet/aspnetcore#54763
- \[release/8.0] Suppress .ps1 SDL errors by
[@&#8203;wtgodbe](https://togithub.com/wtgodbe) in
[dotnet/aspnetcore#54915
- \[release/8.0] Backport test fixes by
[@&#8203;MackinnonBuck](https://togithub.com/MackinnonBuck) in
[dotnet/aspnetcore#54912
- \[release/8.0] Skip SpotBugs for now by
[@&#8203;wtgodbe](https://togithub.com/wtgodbe) in
[dotnet/aspnetcore#54952
- Merging internal commits for release/8.0 by
[@&#8203;vseanreesermsft](https://togithub.com/vseanreesermsft) in
[dotnet/aspnetcore#55034
- \[release/8.0] Update dependencies from dotnet/arcade by
[@&#8203;dotnet-maestro](https://togithub.com/dotnet-maestro) in
[dotnet/aspnetcore#55061
- \[release/8.0] Update Wix version by
[@&#8203;github-actions](https://togithub.com/github-actions) in
[dotnet/aspnetcore#55101

**Full Changelog**:
dotnet/aspnetcore@v8.0.4...v8.0.5

</details>

<details>
<summary>dotnet/efcore
(Microsoft.EntityFrameworkCore.Relational)</summary>

### [`v8.0.5`](https://togithub.com/dotnet/efcore/releases/tag/v8.0.5):
EF Core 8.0.5

This is a [patch release of EF Core
8.0](https://www.nuget.org/packages/Microsoft.EntityFrameworkCore/8.0.5)
containing only updates to dependencies. There are no additional fixes
in this release beyond those already shipped in EF Core 8.0.4.

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 7am on Sunday,before 7am on
Wednesday" (UTC), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/digdir/dialogporten).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNjguMTAiLCJ1cGRhdGVkSW5WZXIiOiIzNy4zNjguMTAiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbXX0=-->

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Ole Jørgen Skogstad <skogstad@softis.net>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area-dataprotection Includes: DataProtection Servicing-approved Shiproom has approved the issue
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants