Skip to content

Commit 50bdedf

Browse files
jmprieurjennyf19trwalketrwalke
authored
Microsoft.Identity.Web token acquisition extensions (#3005)
* First cut or proto for IdWeb add-ins * Preparing work for CDT * fix clone issue * remove cdt tests * remove test * remove endProject * fix sln * Apply suggestions from code review fix sln * Updarting to MSAL.NET 4.65.2-preview and fixing Travis's change * Update NuGet.Config * Update NuGet.Config * Update NuGet.Config * Update NuGet.Config * Updating the signature of the delegates * Update to use MSAL.NET preview * Fixing a cloning issue * use msal preview version * id web extension updates (#3100) * WIP Refactoring code * Updating test * Updating test * Clean up. Removing future code * Creating partial class * PR Feedback * internal api updates * Update public api --------- Co-authored-by: trwalke <[email protected]> * Fix Unshipped files for TokenAcquisition --------- Co-authored-by: Jenny Ferries <[email protected]> Co-authored-by: Travis Walker <[email protected]> Co-authored-by: trwalke <[email protected]>
1 parent f97314c commit 50bdedf

24 files changed

+201
-14
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
#nullable enable
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
bn

src/Microsoft.Identity.Web.TokenAcquisition/DefaultAuthorizationHeaderProvider.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,9 @@ private static TokenAcquisitionOptions CreateTokenAcquisitionOptionsFromApiOptio
101101
CancellationToken = cancellationToken,
102102
Claims = downstreamApiOptions?.AcquireTokenOptions.Claims,
103103
CorrelationId = downstreamApiOptions?.AcquireTokenOptions.CorrelationId ?? Guid.Empty,
104+
ExtraHeadersParameters = downstreamApiOptions?.AcquireTokenOptions.ExtraHeadersParameters,
104105
ExtraQueryParameters = downstreamApiOptions?.AcquireTokenOptions.ExtraQueryParameters,
106+
ExtraParameters = downstreamApiOptions?.AcquireTokenOptions.ExtraParameters,
105107
ForceRefresh = downstreamApiOptions?.AcquireTokenOptions.ForceRefresh ?? false,
106108
LongRunningWebApiSessionKey = downstreamApiOptions?.AcquireTokenOptions.LongRunningWebApiSessionKey,
107109
ManagedIdentity = downstreamApiOptions?.AcquireTokenOptions.ManagedIdentity,
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#nullable enable
2+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.InvokeOnBeforeTokenAcquisitionForApp(Microsoft.Identity.Client.AcquireTokenForClientParameterBuilder! builder, Microsoft.Identity.Abstractions.AcquireTokenOptions? acquireTokenOptions) -> void
3+
readonly Microsoft.Identity.Web.TokenAcquisition.tokenAcquisitionExtensionOptionsMonitor -> Microsoft.Extensions.Options.IOptionsMonitor<Microsoft.Identity.Web.TokenAcquisitionExtensionOptions!>?
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#nullable enable
2+
Microsoft.Identity.Web.BeforeTokenAcquisitionForApp
3+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions
4+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.OnBeforeTokenAcquisitionForApp -> Microsoft.Identity.Web.BeforeTokenAcquisitionForApp?
5+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.TokenAcquisitionExtensionOptions() -> void
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
#nullable enable
2+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.InvokeOnBeforeTokenAcquisitionForApp(Microsoft.Identity.Client.AcquireTokenForClientParameterBuilder! builder, Microsoft.Identity.Abstractions.AcquireTokenOptions? acquireTokenOptions) -> void
3+
readonly Microsoft.Identity.Web.TokenAcquisition.tokenAcquisitionExtensionOptionsMonitor -> Microsoft.Extensions.Options.IOptionsMonitor<Microsoft.Identity.Web.TokenAcquisitionExtensionOptions!>?
4+
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#nullable enable
2+
Microsoft.Identity.Web.BeforeTokenAcquisitionForApp
3+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions
4+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.OnBeforeTokenAcquisitionForApp -> Microsoft.Identity.Web.BeforeTokenAcquisitionForApp?
5+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.TokenAcquisitionExtensionOptions() -> void
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#nullable enable
2+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.InvokeOnBeforeTokenAcquisitionForApp(Microsoft.Identity.Client.AcquireTokenForClientParameterBuilder! builder, Microsoft.Identity.Abstractions.AcquireTokenOptions? acquireTokenOptions) -> void
3+
readonly Microsoft.Identity.Web.TokenAcquisition.tokenAcquisitionExtensionOptionsMonitor -> Microsoft.Extensions.Options.IOptionsMonitor<Microsoft.Identity.Web.TokenAcquisitionExtensionOptions!>?
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#nullable enable
2+
Microsoft.Identity.Web.BeforeTokenAcquisitionForApp
3+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions
4+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.OnBeforeTokenAcquisitionForApp -> Microsoft.Identity.Web.BeforeTokenAcquisitionForApp?
5+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.TokenAcquisitionExtensionOptions() -> void
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#nullable enable
2+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.InvokeOnBeforeTokenAcquisitionForApp(Microsoft.Identity.Client.AcquireTokenForClientParameterBuilder! builder, Microsoft.Identity.Abstractions.AcquireTokenOptions? acquireTokenOptions) -> void
3+
readonly Microsoft.Identity.Web.TokenAcquisition.tokenAcquisitionExtensionOptionsMonitor -> Microsoft.Extensions.Options.IOptionsMonitor<Microsoft.Identity.Web.TokenAcquisitionExtensionOptions!>?
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#nullable enable
2+
Microsoft.Identity.Web.BeforeTokenAcquisitionForApp
3+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions
4+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.OnBeforeTokenAcquisitionForApp -> Microsoft.Identity.Web.BeforeTokenAcquisitionForApp?
5+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.TokenAcquisitionExtensionOptions() -> void
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#nullable enable
2+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.InvokeOnBeforeTokenAcquisitionForApp(Microsoft.Identity.Client.AcquireTokenForClientParameterBuilder! builder, Microsoft.Identity.Abstractions.AcquireTokenOptions? acquireTokenOptions) -> void
3+
readonly Microsoft.Identity.Web.TokenAcquisition.tokenAcquisitionExtensionOptionsMonitor -> Microsoft.Extensions.Options.IOptionsMonitor<Microsoft.Identity.Web.TokenAcquisitionExtensionOptions!>?
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#nullable enable
2+
Microsoft.Identity.Web.BeforeTokenAcquisitionForApp
3+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions
4+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.OnBeforeTokenAcquisitionForApp -> Microsoft.Identity.Web.BeforeTokenAcquisitionForApp?
5+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.TokenAcquisitionExtensionOptions() -> void
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#nullable enable
2+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.InvokeOnBeforeTokenAcquisitionForApp(Microsoft.Identity.Client.AcquireTokenForClientParameterBuilder! builder, Microsoft.Identity.Abstractions.AcquireTokenOptions? acquireTokenOptions) -> void
3+
readonly Microsoft.Identity.Web.TokenAcquisition.tokenAcquisitionExtensionOptionsMonitor -> Microsoft.Extensions.Options.IOptionsMonitor<Microsoft.Identity.Web.TokenAcquisitionExtensionOptions!>?
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#nullable enable
2+
Microsoft.Identity.Web.BeforeTokenAcquisitionForApp
3+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions
4+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.OnBeforeTokenAcquisitionForApp -> Microsoft.Identity.Web.BeforeTokenAcquisitionForApp?
5+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.TokenAcquisitionExtensionOptions() -> void
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#nullable enable
2+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.InvokeOnBeforeTokenAcquisitionForApp(Microsoft.Identity.Client.AcquireTokenForClientParameterBuilder! builder, Microsoft.Identity.Abstractions.AcquireTokenOptions? acquireTokenOptions) -> void
3+
readonly Microsoft.Identity.Web.TokenAcquisition.tokenAcquisitionExtensionOptionsMonitor -> Microsoft.Extensions.Options.IOptionsMonitor<Microsoft.Identity.Web.TokenAcquisitionExtensionOptions!>?
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
Microsoft.Identity.Web.BeforeTokenAcquisitionForApp
2+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions
3+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.OnBeforeTokenAcquisitionForApp -> Microsoft.Identity.Web.BeforeTokenAcquisitionForApp?
4+
Microsoft.Identity.Web.TokenAcquisitionExtensionOptions.TokenAcquisitionExtensionOptions() -> void

src/Microsoft.Identity.Web.TokenAcquisition/TokenAcquirer.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ async Task<AcquireTokenResult> ITokenAcquirer.GetTokenForAppAsync(string scope,
8383
UserFlow = tokenAcquisitionOptions.UserFlow,
8484
PopPublicKey = tokenAcquisitionOptions.PopPublicKey,
8585
PopClaim = tokenAcquisitionOptions.PopClaim,
86+
ExtraParameters = tokenAcquisitionOptions.ExtraParameters,
8687
};
8788
}
8889
}

src/Microsoft.Identity.Web.TokenAcquisition/TokenAcquisition.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
using System.Threading.Tasks;
1616
using Microsoft.Extensions.DependencyInjection;
1717
using Microsoft.Extensions.Logging;
18+
using Microsoft.Extensions.Options;
1819
using Microsoft.Identity.Abstractions;
1920
using Microsoft.Identity.Client;
2021
using Microsoft.Identity.Client.Advanced;
@@ -57,6 +58,7 @@ class OAuthConstants
5758
protected readonly ITokenAcquisitionHost _tokenAcquisitionHost;
5859
protected readonly ICredentialsLoader _credentialsLoader;
5960
protected readonly ICertificatesObserver? _certificatesObserver;
61+
protected readonly IOptionsMonitor<TokenAcquisitionExtensionOptions>? tokenAcquisitionExtensionOptionsMonitor;
6062

6163
/// <summary>
6264
/// Scopes which are already requested by MSAL.NET. They should not be re-requested;.
@@ -104,6 +106,7 @@ public TokenAcquisition(
104106
_tokenAcquisitionHost = tokenAcquisitionHost;
105107
_credentialsLoader = credentialsLoader;
106108
_certificatesObserver = serviceProvider.GetService<ICertificatesObserver>();
109+
tokenAcquisitionExtensionOptionsMonitor = serviceProvider.GetService<IOptionsMonitor<TokenAcquisitionExtensionOptions>>();
107110
}
108111

109112
#if NET6_0_OR_GREATER
@@ -384,13 +387,21 @@ public async Task<AuthenticationResult> GetAuthenticationResultForAppAsync(
384387
}
385388
}
386389

390+
TokenAcquisitionExtensionOptions? addInOptions = tokenAcquisitionExtensionOptionsMonitor?.CurrentValue;
391+
392+
387393
// Use MSAL to get the right token to call the API
388394
var application = await GetOrBuildConfidentialClientApplicationAsync(mergedOptions);
389395

390396
AcquireTokenForClientParameterBuilder builder = application
391397
.AcquireTokenForClient(new[] { scope }.Except(_scopesRequestedByMsal))
392398
.WithSendX5C(mergedOptions.SendX5C);
393399

400+
if (addInOptions!=null)
401+
{
402+
addInOptions.InvokeOnBeforeTokenAcquisitionForApp(builder, tokenAcquisitionOptions);
403+
}
404+
394405
// MSAL.net only allows .WithTenantId for AAD authorities. This makes sense as there should
395406
// not be cross tenant operations with such an authority.
396407
if (!mergedOptions.Instance.Contains(Constants.CiamAuthoritySuffix
@@ -414,6 +425,9 @@ public async Task<AuthenticationResult> GetAuthenticationResultForAppAsync(
414425
{
415426
builder.WithExtraHttpHeaders(tokenAcquisitionOptions.ExtraHeadersParameters);
416427
}
428+
429+
// Extra Parameters are not meant to be used by Token but by extensions
430+
417431
if (tokenAcquisitionOptions.CorrelationId != null)
418432
{
419433
builder.WithCorrelationId(tokenAcquisitionOptions.CorrelationId.Value);
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
4+
using Microsoft.Identity.Abstractions;
5+
using Microsoft.Identity.Client;
6+
7+
namespace Microsoft.Identity.Web
8+
{
9+
/// <summary>
10+
/// Options for TokenAcquisition add-ins. These options consist in a set of events, that can be subscribed to by add-ins
11+
/// or parts of the add-ins.
12+
/// </summary>
13+
public partial class TokenAcquisitionExtensionOptions
14+
{
15+
/// <summary>
16+
/// Event fired when a client credential flow request is being built.
17+
/// </summary>
18+
public event BeforeTokenAcquisitionForApp? OnBeforeTokenAcquisitionForApp;
19+
20+
/// <summary>
21+
/// Invoke the OnBeforeTokenAcquisitionForApp event.
22+
/// </summary>
23+
internal void InvokeOnBeforeTokenAcquisitionForApp(AcquireTokenForClientParameterBuilder builder,
24+
AcquireTokenOptions? acquireTokenOptions)
25+
{
26+
if (OnBeforeTokenAcquisitionForApp != null)
27+
{
28+
OnBeforeTokenAcquisitionForApp(builder, acquireTokenOptions);
29+
}
30+
}
31+
}
32+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// Copyright (c) Microsoft Corporation. All rights reserved.
2+
// Licensed under the MIT License.
3+
4+
using Microsoft.Extensions.DependencyInjection;
5+
using Microsoft.Identity.Abstractions;
6+
using Microsoft.Identity.Client;
7+
8+
namespace Microsoft.Identity.Web
9+
{
10+
/// <summary>
11+
/// Signature for token acquisition extensions that act on the request builder, for an app token
12+
/// </summary>
13+
/// <param name="builder">Builder</param>
14+
/// <param name="acquireTokenOptions">Token acquisition options for the request. Can be null.</param>
15+
public delegate void BeforeTokenAcquisitionForApp(AcquireTokenForClientParameterBuilder builder, AcquireTokenOptions? acquireTokenOptions);
16+
}

tests/DevApps/aspnet-mvc/OwinWebApi/Web.config

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262
</dependentAssembly>
6363
<dependentAssembly>
6464
<assemblyIdentity name="System.IdentityModel.Tokens.Jwt" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
65-
<bindingRedirect oldVersion="0.0.0.0-8.0.2.0" newVersion="8.0.2.0"/>
65+
<bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0"/>
6666
</dependentAssembly>
6767
<dependentAssembly>
6868
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="CC7B13FFCD2DDD51" culture="neutral"/>
@@ -78,31 +78,31 @@
7878
</dependentAssembly>
7979
<dependentAssembly>
8080
<assemblyIdentity name="Microsoft.IdentityModel.Tokens" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
81-
<bindingRedirect oldVersion="0.0.0.0-8.0.2.0" newVersion="8.0.2.0"/>
81+
<bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0"/>
8282
</dependentAssembly>
8383
<dependentAssembly>
8484
<assemblyIdentity name="Microsoft.IdentityModel.Protocols.WsFederation" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
8585
<bindingRedirect oldVersion="0.0.0.0-5.5.0.0" newVersion="5.5.0.0"/>
8686
</dependentAssembly>
8787
<dependentAssembly>
8888
<assemblyIdentity name="Microsoft.IdentityModel.Protocols.OpenIdConnect" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
89-
<bindingRedirect oldVersion="0.0.0.0-8.0.2.0" newVersion="8.0.2.0"/>
89+
<bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0"/>
9090
</dependentAssembly>
9191
<dependentAssembly>
9292
<assemblyIdentity name="Microsoft.IdentityModel.Protocols" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
93-
<bindingRedirect oldVersion="0.0.0.0-8.0.2.0" newVersion="8.0.2.0"/>
93+
<bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0"/>
9494
</dependentAssembly>
9595
<dependentAssembly>
9696
<assemblyIdentity name="Microsoft.IdentityModel.Logging" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
97-
<bindingRedirect oldVersion="0.0.0.0-8.0.2.0" newVersion="8.0.2.0"/>
97+
<bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0"/>
9898
</dependentAssembly>
9999
<dependentAssembly>
100100
<assemblyIdentity name="Microsoft.IdentityModel.Abstractions" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
101-
<bindingRedirect oldVersion="0.0.0.0-8.0.2.0" newVersion="8.0.2.0"/>
101+
<bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0"/>
102102
</dependentAssembly>
103103
<dependentAssembly>
104104
<assemblyIdentity name="Microsoft.Identity.Client" publicKeyToken="0A613F4DD989E8AE" culture="neutral"/>
105-
<bindingRedirect oldVersion="0.0.0.0-4.64.1.0" newVersion="4.64.1.0"/>
105+
<bindingRedirect oldVersion="0.0.0.0-4.65.2.0" newVersion="4.65.2.0"/>
106106
</dependentAssembly>
107107
<dependentAssembly>
108108
<assemblyIdentity name="Microsoft.Extensions.Primitives" publicKeyToken="ADB9793829DDAE60" culture="neutral"/>

tests/DevApps/aspnet-mvc/OwinWebApp/Web.config

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@
5959
</dependentAssembly>
6060
<dependentAssembly>
6161
<assemblyIdentity name="System.IdentityModel.Tokens.Jwt" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
62-
<bindingRedirect oldVersion="0.0.0.0-8.0.2.0" newVersion="8.0.2.0"/>
62+
<bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0"/>
6363
</dependentAssembly>
6464
<dependentAssembly>
6565
<assemblyIdentity name="System.Diagnostics.DiagnosticSource" publicKeyToken="CC7B13FFCD2DDD51" culture="neutral"/>
@@ -75,31 +75,31 @@
7575
</dependentAssembly>
7676
<dependentAssembly>
7777
<assemblyIdentity name="Microsoft.IdentityModel.Tokens" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
78-
<bindingRedirect oldVersion="0.0.0.0-8.0.2.0" newVersion="8.0.2.0"/>
78+
<bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0"/>
7979
</dependentAssembly>
8080
<dependentAssembly>
8181
<assemblyIdentity name="Microsoft.IdentityModel.Protocols.WsFederation" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
8282
<bindingRedirect oldVersion="0.0.0.0-5.5.0.0" newVersion="5.5.0.0"/>
8383
</dependentAssembly>
8484
<dependentAssembly>
8585
<assemblyIdentity name="Microsoft.IdentityModel.Protocols.OpenIdConnect" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
86-
<bindingRedirect oldVersion="0.0.0.0-8.0.2.0" newVersion="8.0.2.0"/>
86+
<bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0"/>
8787
</dependentAssembly>
8888
<dependentAssembly>
8989
<assemblyIdentity name="Microsoft.IdentityModel.Protocols" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
90-
<bindingRedirect oldVersion="0.0.0.0-8.0.2.0" newVersion="8.0.2.0"/>
90+
<bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0"/>
9191
</dependentAssembly>
9292
<dependentAssembly>
9393
<assemblyIdentity name="Microsoft.IdentityModel.Logging" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
94-
<bindingRedirect oldVersion="0.0.0.0-8.0.2.0" newVersion="8.0.2.0"/>
94+
<bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0"/>
9595
</dependentAssembly>
9696
<dependentAssembly>
9797
<assemblyIdentity name="Microsoft.IdentityModel.Abstractions" publicKeyToken="31BF3856AD364E35" culture="neutral"/>
98-
<bindingRedirect oldVersion="0.0.0.0-8.0.2.0" newVersion="8.0.2.0"/>
98+
<bindingRedirect oldVersion="0.0.0.0-8.1.0.0" newVersion="8.1.0.0"/>
9999
</dependentAssembly>
100100
<dependentAssembly>
101101
<assemblyIdentity name="Microsoft.Identity.Client" publicKeyToken="0A613F4DD989E8AE" culture="neutral"/>
102-
<bindingRedirect oldVersion="0.0.0.0-4.64.1.0" newVersion="4.64.1.0"/>
102+
<bindingRedirect oldVersion="0.0.0.0-4.65.2.0" newVersion="4.65.2.0"/>
103103
</dependentAssembly>
104104
<dependentAssembly>
105105
<assemblyIdentity name="Microsoft.Extensions.Primitives" publicKeyToken="ADB9793829DDAE60" culture="neutral"/>

0 commit comments

Comments
 (0)