diff --git a/eng/Versions.props b/eng/Versions.props index 62402acee175d5e73287ad047c8252be95e10c5f..b60b8b99da064f1fe24e025e30d5b40fdb3d3813 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -248,11 +248,11 @@ <GrpcAuthVersion>2.45.0</GrpcAuthVersion> <GrpcNetClientVersion>2.45.0</GrpcNetClientVersion> <GrpcToolsVersion>2.45.0</GrpcToolsVersion> - <DuendeIdentityServerAspNetIdentityVersion>5.2.0</DuendeIdentityServerAspNetIdentityVersion> - <DuendeIdentityServerEntityFrameworkVersion>5.2.0</DuendeIdentityServerEntityFrameworkVersion> - <DuendeIdentityServerVersion>5.2.0</DuendeIdentityServerVersion> - <DuendeIdentityServerStorageVersion>5.2.0</DuendeIdentityServerStorageVersion> - <DuendeIdentityServerEntityFrameworkStorageVersion>5.2.0</DuendeIdentityServerEntityFrameworkStorageVersion> + <DuendeIdentityServerAspNetIdentityVersion>6.0.4</DuendeIdentityServerAspNetIdentityVersion> + <DuendeIdentityServerEntityFrameworkVersion>6.0.4</DuendeIdentityServerEntityFrameworkVersion> + <DuendeIdentityServerVersion>6.0.4</DuendeIdentityServerVersion> + <DuendeIdentityServerStorageVersion>6.0.4</DuendeIdentityServerStorageVersion> + <DuendeIdentityServerEntityFrameworkStorageVersion>6.0.4</DuendeIdentityServerEntityFrameworkStorageVersion> <MessagePackVersion>2.1.90</MessagePackVersion> <MicrosoftIdentityWebVersion>1.16.0</MicrosoftIdentityWebVersion> <MicrosoftIdentityWebMicrosoftGraphVersion>1.16.0</MicrosoftIdentityWebMicrosoftGraphVersion> diff --git a/src/Identity/ApiAuthorization.IdentityServer/src/Authentication/IdentityServerJwtBearerOptionsConfiguration.cs b/src/Identity/ApiAuthorization.IdentityServer/src/Authentication/IdentityServerJwtBearerOptionsConfiguration.cs index c5c1491e6495ef717b2fe705208b1ef3c0a40fda..f671c75ace984dfa298668236563ff642df5f158 100644 --- a/src/Identity/ApiAuthorization.IdentityServer/src/Authentication/IdentityServerJwtBearerOptionsConfiguration.cs +++ b/src/Identity/ApiAuthorization.IdentityServer/src/Authentication/IdentityServerJwtBearerOptionsConfiguration.cs @@ -61,7 +61,9 @@ internal sealed class IdentityServerJwtBearerOptionsConfiguration : IConfigureNa { var store = messageReceivedContext.HttpContext.RequestServices.GetRequiredService<ISigningCredentialStore>(); var credential = await store.GetSigningCredentialsAsync(); +#pragma warning disable 0618 options.Authority = options.Authority ?? messageReceivedContext.HttpContext.GetIdentityServerIssuerUri(); +#pragma warning restore 0618 options.TokenValidationParameters.IssuerSigningKey = credential.Key; options.TokenValidationParameters.ValidIssuer = options.Authority; } diff --git a/src/Identity/ApiAuthorization.IdentityServer/src/Extensions/DefaultClientRequestParametersProvider.cs b/src/Identity/ApiAuthorization.IdentityServer/src/Extensions/DefaultClientRequestParametersProvider.cs index 9649473717588bf20e5243544f1dd2f5701e4491..1d8c390bcfb59a764d7947669ebb067c493d54b2 100644 --- a/src/Identity/ApiAuthorization.IdentityServer/src/Extensions/DefaultClientRequestParametersProvider.cs +++ b/src/Identity/ApiAuthorization.IdentityServer/src/Extensions/DefaultClientRequestParametersProvider.cs @@ -25,7 +25,10 @@ internal sealed class DefaultClientRequestParametersProvider : IClientRequestPar public IDictionary<string, string> GetClientParameters(HttpContext context, string clientId) { var client = Options.Value.Clients[clientId]; +#pragma warning disable 0618 + // Deprecated in Identity Server 6.0 var authority = context.GetIdentityServerIssuerUri(); +#pragma warning restore 0618 if (!client.Properties.TryGetValue(ApplicationProfilesPropertyNames.Profile, out var type)) { throw new InvalidOperationException($"Can't determine the type for the client '{clientId}'"); diff --git a/src/Identity/ApiAuthorization.IdentityServer/test/Authentication/LocalApiJwtBearerConfigurationTest.cs b/src/Identity/ApiAuthorization.IdentityServer/test/Authentication/IdentityServerJwtBearerConfigurationTest.cs similarity index 95% rename from src/Identity/ApiAuthorization.IdentityServer/test/Authentication/LocalApiJwtBearerConfigurationTest.cs rename to src/Identity/ApiAuthorization.IdentityServer/test/Authentication/IdentityServerJwtBearerConfigurationTest.cs index b0df451be3392645e29ae49d4db23456a92b5766..49e18a671416e660195a658bda3c1767772f2d00 100644 --- a/src/Identity/ApiAuthorization.IdentityServer/test/Authentication/LocalApiJwtBearerConfigurationTest.cs +++ b/src/Identity/ApiAuthorization.IdentityServer/test/Authentication/IdentityServerJwtBearerConfigurationTest.cs @@ -1,8 +1,9 @@ -// Licensed to the .NET Foundation under one or more agreements. +// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Security.Cryptography; using Duende.IdentityServer.Configuration; +using Duende.IdentityServer.Services; using Duende.IdentityServer.Stores; using Microsoft.AspNetCore.ApiAuthorization.IdentityServer.Configuration; using Microsoft.AspNetCore.Authentication; @@ -59,12 +60,16 @@ public class IdentityServerJwtBearerOptionsConfigurationTest credentialsStore.Setup(cs => cs.GetSigningCredentialsAsync()) .ReturnsAsync(new SigningCredentials(key, "RS256")); + var issuerName = new Mock<IIssuerNameService>(); + issuerName.Setup(i => i.GetCurrentAsync()).ReturnsAsync("https://localhost"); + var context = new DefaultHttpContext(); context.Request.Scheme = "https"; context.Request.Host = new HostString("localhost"); context.RequestServices = new ServiceCollection() .AddSingleton(new IdentityServerOptions()) .AddSingleton(credentialsStore.Object) + .AddSingleton(issuerName.Object) .BuildServiceProvider(); var options = new JwtBearerOptions(); diff --git a/src/Identity/ApiAuthorization.IdentityServer/test/Extensions/DefaultClientRequestParametersProviderTests.cs b/src/Identity/ApiAuthorization.IdentityServer/test/Extensions/DefaultClientRequestParametersProviderTests.cs index 393dda2ea762dda8811fbce175fec8aa41f8bb16..550c9a07fa19c8169891ca465f944f3d3c33591f 100644 --- a/src/Identity/ApiAuthorization.IdentityServer/test/Extensions/DefaultClientRequestParametersProviderTests.cs +++ b/src/Identity/ApiAuthorization.IdentityServer/test/Extensions/DefaultClientRequestParametersProviderTests.cs @@ -2,6 +2,7 @@ // The .NET Foundation licenses this file to you under the MIT license. using Duende.IdentityServer.Configuration; +using Duende.IdentityServer.Services; using Microsoft.AspNetCore.Http; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; @@ -11,6 +12,11 @@ namespace Microsoft.AspNetCore.ApiAuthorization.IdentityServer.Extensions; public class DefaultClientRequestParametersProviderTests { + class NameService : IIssuerNameService + { + public Task<string> GetCurrentAsync() => Task.FromResult("http://localhost"); + } + [Fact] public void GetClientParameters_ReturnsParametersForExistingClients() { @@ -30,6 +36,7 @@ public class DefaultClientRequestParametersProviderTests context.Request.Host = new HostString("localhost"); context.RequestServices = new ServiceCollection() .AddSingleton(new IdentityServerOptions()) + .AddSingleton<IIssuerNameService>(new NameService()) .BuildServiceProvider(); var clientRequestParametersProvider =