Browse Source

Backport the discovery changes to OpenIddict 1.x

pull/670/head
Kévin Chalet 8 years ago
parent
commit
83d5bbfbc5
  1. 2
      build/dependencies.props
  2. 10
      src/OpenIddict.Server/Internal/OpenIddictServerProvider.Discovery.cs
  3. 1
      src/OpenIddict.Server/OpenIddictServerOptions.cs
  4. 19
      test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.Discovery.cs

2
build/dependencies.props

@ -3,7 +3,7 @@
<PropertyGroup Label="Package Versions"> <PropertyGroup Label="Package Versions">
<AspNetCoreVersion>1.0.0</AspNetCoreVersion> <AspNetCoreVersion>1.0.0</AspNetCoreVersion>
<AspNetContribOpenIdExtensionsVersion>1.1.0-preview-0310</AspNetContribOpenIdExtensionsVersion> <AspNetContribOpenIdExtensionsVersion>1.1.0-preview-0310</AspNetContribOpenIdExtensionsVersion>
<AspNetContribOpenIdServerVersion>1.1.0-preview-1374</AspNetContribOpenIdServerVersion> <AspNetContribOpenIdServerVersion>1.1.0-preview-1377</AspNetContribOpenIdServerVersion>
<ClaimsVersion>4.0.1</ClaimsVersion> <ClaimsVersion>4.0.1</ClaimsVersion>
<CryptoHelperVersion>2.0.4</CryptoHelperVersion> <CryptoHelperVersion>2.0.4</CryptoHelperVersion>
<DataAnnotationsVersion>4.1.0</DataAnnotationsVersion> <DataAnnotationsVersion>4.1.0</DataAnnotationsVersion>

10
src/OpenIddict.Server/Internal/OpenIddictServerProvider.Discovery.cs

@ -8,7 +8,6 @@ using System.Threading.Tasks;
using AspNet.Security.OpenIdConnect.Primitives; using AspNet.Security.OpenIdConnect.Primitives;
using AspNet.Security.OpenIdConnect.Server; using AspNet.Security.OpenIdConnect.Server;
using JetBrains.Annotations; using JetBrains.Annotations;
using Newtonsoft.Json.Linq;
namespace OpenIddict.Server namespace OpenIddict.Server
{ {
@ -30,14 +29,11 @@ namespace OpenIddict.Server
context.GrantTypes.Clear(); context.GrantTypes.Clear();
context.GrantTypes.UnionWith(options.GrantTypes); context.GrantTypes.UnionWith(options.GrantTypes);
// Only return the scopes configured by the developer. // Only return the scopes and the claims configured by the developer.
context.Scopes.Clear(); context.Scopes.Clear();
context.Scopes.UnionWith(options.Scopes); context.Scopes.UnionWith(options.Scopes);
context.Claims.Clear();
// Note: claims_supported is a recommended parameter but is not strictly required. context.Claims.UnionWith(options.Claims);
// If no claim was registered, the claims_supported property will be automatically
// excluded from the response by the OpenID Connect server middleware.
context.Metadata[OpenIdConnectConstants.Metadata.ClaimsSupported] = new JArray(options.Claims);
// Note: the optional claims/request/request_uri parameters are not supported // Note: the optional claims/request/request_uri parameters are not supported
// by OpenIddict, so "false" is returned to encourage clients not to use them. // by OpenIddict, so "false" is returned to encourage clients not to use them.

1
src/OpenIddict.Server/OpenIddictServerOptions.cs

@ -47,6 +47,7 @@ namespace OpenIddict.Server
OpenIdConnectConstants.Claims.ExpiresAt, OpenIdConnectConstants.Claims.ExpiresAt,
OpenIdConnectConstants.Claims.IssuedAt, OpenIdConnectConstants.Claims.IssuedAt,
OpenIdConnectConstants.Claims.Issuer, OpenIdConnectConstants.Claims.Issuer,
OpenIdConnectConstants.Claims.JwtId,
OpenIdConnectConstants.Claims.Subject OpenIdConnectConstants.Claims.Subject
}; };

19
test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.Discovery.cs

@ -4,6 +4,7 @@
* the license and the contributors participating to this project. * the license and the contributors participating to this project.
*/ */
using System.Linq;
using System.Threading.Tasks; using System.Threading.Tasks;
using AspNet.Security.OpenIdConnect.Client; using AspNet.Security.OpenIdConnect.Client;
using AspNet.Security.OpenIdConnect.Primitives; using AspNet.Security.OpenIdConnect.Primitives;
@ -178,13 +179,8 @@ namespace OpenIddict.Server.Tests
Assert.False(response.HasParameter(OpenIdConnectConstants.Metadata.ClaimsSupported)); Assert.False(response.HasParameter(OpenIdConnectConstants.Metadata.ClaimsSupported));
} }
[Theory] [Fact]
[InlineData(OpenIdConnectConstants.Claims.Audience)] public async Task HandleConfigurationRequest_DefaultClaimsAreReturned()
[InlineData(OpenIdConnectConstants.Claims.ExpiresAt)]
[InlineData(OpenIdConnectConstants.Claims.IssuedAt)]
[InlineData(OpenIdConnectConstants.Claims.Issuer)]
[InlineData(OpenIdConnectConstants.Claims.Subject)]
public async Task HandleConfigurationRequest_DefaultClaimsAreReturned(string claim)
{ {
// Arrange // Arrange
var server = CreateAuthorizationServer(); var server = CreateAuthorizationServer();
@ -193,9 +189,16 @@ namespace OpenIddict.Server.Tests
// Act // Act
var response = await client.GetAsync(ConfigurationEndpoint); var response = await client.GetAsync(ConfigurationEndpoint);
var claims = ((JArray) response[OpenIdConnectConstants.Metadata.ClaimsSupported]).Values<string>().ToArray();
// Assert // Assert
Assert.Contains(claim, ((JArray) response[OpenIdConnectConstants.Metadata.ClaimsSupported]).Values<string>()); Assert.Equal(6, claims.Length);
Assert.Contains(OpenIdConnectConstants.Claims.Audience, claims);
Assert.Contains(OpenIdConnectConstants.Claims.ExpiresAt, claims);
Assert.Contains(OpenIdConnectConstants.Claims.IssuedAt, claims);
Assert.Contains(OpenIdConnectConstants.Claims.Issuer, claims);
Assert.Contains(OpenIdConnectConstants.Claims.JwtId, claims);
Assert.Contains(OpenIdConnectConstants.Claims.Subject, claims);
} }
[Fact] [Fact]

Loading…
Cancel
Save