-
Notifications
You must be signed in to change notification settings - Fork 218
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
[Feature Request] Simplify the message for ASP.NET classic and daemon apps (by splitting Microsoft.Identity.Web into sub packages for token cache and cert management) #1431
Comments
A few questions:
|
I guess this would be also addressing the #1336, right? Have you also thought about splitting the DownstreamAPI/TokenAcquisition into a separate package? For the Microsoft.Extension.* and the internal R9 platform, we use the following multi-targeting and multi-versioning strategy:
|
@rymeskar #1336 will be addressed at a later date, and is more ambitious (part of the higher level API work for MSAL.NET). why did you pick those versions specifically for those platforms? Specifically 2 for .NET Standard 2.0 and NET 461/472? We have a lot of partners referencing Microsoft.Identity.Web today with 5, and we are worried this would be a breaking change for them. thoughts? thanks. |
The intent is to give the customers the default pairing around how the ecosystem was delivered -- there are always official version pairings between Extensions, ASP.NET Core and runtime from the release. Breaking away with the major version of a single component of the pairing can lead to headache of the common customer.
Specifically, one cannot run ASP.NET Core ver 3+ on .NET framework (462, 472). The versions of Microsoft.Extensions.* and ASP.NET Core usually go hand in hand (custom setup can happen with some work). So we don't want .NET partners to be forced to run ASP.NET Core ver 2 & Extensions ver 3+. This has caused a dependency hell for them historically. Having said all this, initially, there were a lot of breaking changes in the .NET Core ecosystem, so the multi-targeting was more important. Now, I believe the amount of breaking changes decreased in Extensions.* and ASP.NET Core significantly. |
The compatibilities of library versions are quite a tedious problem. Nice sum-up: That creates a dilemma for library authors though, you need to target 2.x if you want to run on ASP.NET Core 2.1, 2.2 and 3.0 (if you want to avoid multi-targeting)." |
The challenge we've seen in R9 is that services adopting an R9 package were having to upgrade a bunch of downstream packages that R9 depended on. So adopting a single R9 package meant that potentially dozens of packages were upgraded in their service, leading to much more change and turmoil than they bargained for. As a library provider, the right choice is for you to target the lowest version of your dependencies that your code will work with. This reduces the barrier to adoption for customers pulling in your library for the first time. If you're lucky, in most of the cases your library will end up running with newer dependencies, but maybe not. It's up to the customers to decide. In R9, our libraries want to take advantage of new features only available in later versions of .NET. For example, maybe some Span overloads have been added in .NET 5. To support those cases we thus do the following:
For specific cases, we sometimes overrule the per-framework setting. Specifically, if the implementation of a package depends on a new version of a given package, then in that case only do we demand a newer version of the dependency. Anyway, the point is to let us leverage modern framework features where we can, yet deliver a hassle free experience for customers trying to use our code. |
included in 1.17.0 release |
Is your feature request related to a problem? Please describe.
Microsoft identity web provide some functionalities for apps developed with .NET framework, or .NET Core (not necessarily ASP.NET Core). See Support for ASP.NET classic and more generally .NET 4.7.2
Some developers told us they are reluctant about referencing the whole Microsoft.Identity.Web package to just get the token caches, and or the certificate management
Describe the solution you'd like
Split Microsoft.Identity.Web to separate out:
Describe alternatives you've considered
Have token cache implementation in MSAL.NET. This is possible for an in-memory token cache, and is the object of AzureAD/microsoft-authentication-library-for-dotnet#2861. It's not, however, possible to have MSAL.NET reference the Microsoft.Extension assembllies (to keep it small, and avoid diamond dependencies issues)
Out of scope
When MSAL.NET provides a shared cache for all flows,
The text was updated successfully, but these errors were encountered: