diff --git a/OpenIddict.sln b/OpenIddict.sln index 5a8a75af..093df77b 100644 --- a/OpenIddict.sln +++ b/OpenIddict.sln @@ -65,7 +65,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenIddict.MongoDb.Tests", EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shared", "shared", "{D8075F1F-6257-463B-B481-BDC7C5ABA292}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenIddict.Extensions", "shared\OpenIddict.Extensions\OpenIddict.Extensions.csproj", "{B90761B9-7582-44CB-AB0D-3C4058693227}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "OpenIddict.Extensions", "shared\OpenIddict.Extensions\OpenIddict.Extensions.csproj", "{B90761B9-7582-44CB-AB0D-3C4058693227}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/src/OpenIddict.EntityFramework/OpenIddictEntityFrameworkExtensions.cs b/src/OpenIddict.EntityFramework/OpenIddictEntityFrameworkExtensions.cs index 41cf8066..474b4a9c 100644 --- a/src/OpenIddict.EntityFramework/OpenIddictEntityFrameworkExtensions.cs +++ b/src/OpenIddict.EntityFramework/OpenIddictEntityFrameworkExtensions.cs @@ -5,7 +5,6 @@ */ using System; -using System.Data.Entity; using JetBrains.Annotations; using Microsoft.Extensions.DependencyInjection.Extensions; using OpenIddict.EntityFramework; @@ -81,45 +80,5 @@ namespace Microsoft.Extensions.DependencyInjection return builder; } - - /// - /// Registers the OpenIddict entity sets in the Entity Framework 6.x context - /// using the default OpenIddict models and the default key type (string). - /// - /// The builder used to configure the Entity Framework context. - /// The Entity Framework context builder. - public static DbModelBuilder UseOpenIddict([NotNull] this DbModelBuilder builder) - => builder.UseOpenIddict(); - - /// - /// Registers the OpenIddict entity sets in the Entity Framework 6.x - /// context using the specified entities and the specified key type. - /// Note: using this method requires creating non-generic derived classes - /// for all the OpenIddict entities (application, authorization, scope, token). - /// - /// The builder used to configure the Entity Framework context. - /// The Entity Framework context builder. - public static DbModelBuilder UseOpenIddict([NotNull] this DbModelBuilder builder) - where TApplication : OpenIddictApplication - where TAuthorization : OpenIddictAuthorization - where TScope : OpenIddictScope - where TToken : OpenIddictToken - where TKey : IEquatable - { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - builder.Configurations.Add(new OpenIddictApplicationConfiguration()); - builder.Configurations.Add(new OpenIddictAuthorizationConfiguration()); - builder.Configurations.Add(new OpenIddictScopeConfiguration()); - builder.Configurations.Add(new OpenIddictTokenConfiguration()); - - return builder; - } } } \ No newline at end of file diff --git a/src/OpenIddict.EntityFramework/OpenIddictEntityFrameworkHelpers.cs b/src/OpenIddict.EntityFramework/OpenIddictEntityFrameworkHelpers.cs new file mode 100644 index 00000000..057e4fa7 --- /dev/null +++ b/src/OpenIddict.EntityFramework/OpenIddictEntityFrameworkHelpers.cs @@ -0,0 +1,59 @@ +/* + * Licensed under the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) + * See https://github.com/openiddict/openiddict-core for more information concerning + * the license and the contributors participating to this project. + */ + +using JetBrains.Annotations; +using OpenIddict.EntityFramework; +using OpenIddict.EntityFramework.Models; + +namespace System.Data.Entity +{ + /// + /// Exposes extensions allowing to register the OpenIddict Entity Framework 6.x entity sets. + /// + public static class OpenIddictEntityFrameworkHelpers + { + /// + /// Registers the OpenIddict entity sets in the Entity Framework 6.x context + /// using the default OpenIddict models and the default key type (string). + /// + /// The builder used to configure the Entity Framework context. + /// The Entity Framework context builder. + public static DbModelBuilder UseOpenIddict([NotNull] this DbModelBuilder builder) + => builder.UseOpenIddict(); + + /// + /// Registers the OpenIddict entity sets in the Entity Framework 6.x + /// context using the specified entities and the specified key type. + /// Note: using this method requires creating non-generic derived classes + /// for all the OpenIddict entities (application, authorization, scope, token). + /// + /// The builder used to configure the Entity Framework context. + /// The Entity Framework context builder. + public static DbModelBuilder UseOpenIddict([NotNull] this DbModelBuilder builder) + where TApplication : OpenIddictApplication + where TAuthorization : OpenIddictAuthorization + where TScope : OpenIddictScope + where TToken : OpenIddictToken + where TKey : IEquatable + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + builder.Configurations + .Add(new OpenIddictApplicationConfiguration()) + .Add(new OpenIddictAuthorizationConfiguration()) + .Add(new OpenIddictScopeConfiguration()) + .Add(new OpenIddictTokenConfiguration()); + + return builder; + } + } +} \ No newline at end of file diff --git a/src/OpenIddict.EntityFrameworkCore/OpenIddictEntityFrameworkCoreCustomizer.cs b/src/OpenIddict.EntityFrameworkCore/OpenIddictEntityFrameworkCoreCustomizer.cs index c5e528bb..d899cd30 100644 --- a/src/OpenIddict.EntityFrameworkCore/OpenIddictEntityFrameworkCoreCustomizer.cs +++ b/src/OpenIddict.EntityFrameworkCore/OpenIddictEntityFrameworkCoreCustomizer.cs @@ -8,7 +8,6 @@ using System; using JetBrains.Annotations; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; -using Microsoft.Extensions.DependencyInjection; using OpenIddict.EntityFrameworkCore.Models; namespace OpenIddict.EntityFrameworkCore diff --git a/src/OpenIddict.EntityFrameworkCore/OpenIddictEntityFrameworkCoreExtensions.cs b/src/OpenIddict.EntityFrameworkCore/OpenIddictEntityFrameworkCoreExtensions.cs index 7eccad4b..93d9b75d 100644 --- a/src/OpenIddict.EntityFrameworkCore/OpenIddictEntityFrameworkCoreExtensions.cs +++ b/src/OpenIddict.EntityFrameworkCore/OpenIddictEntityFrameworkCoreExtensions.cs @@ -82,102 +82,5 @@ namespace Microsoft.Extensions.DependencyInjection return builder; } - - /// - /// Registers the OpenIddict entity sets in the Entity Framework Core context - /// using the default OpenIddict models and the default key type (string). - /// - /// The builder used to configure the Entity Framework context. - /// The Entity Framework context builder. - public static DbContextOptionsBuilder UseOpenIddict([NotNull] this DbContextOptionsBuilder builder) - => builder.UseOpenIddict(); - - /// - /// Registers the OpenIddict entity sets in the Entity Framework Core - /// context using the default OpenIddict models and the specified key type. - /// - /// The builder used to configure the Entity Framework context. - /// The Entity Framework context builder. - public static DbContextOptionsBuilder UseOpenIddict([NotNull] this DbContextOptionsBuilder builder) - where TKey : IEquatable - => builder.UseOpenIddict, - OpenIddictAuthorization, - OpenIddictScope, - OpenIddictToken, TKey>(); - - /// - /// Registers the OpenIddict entity sets in the Entity Framework Core - /// context using the specified entities and the specified key type. - /// - /// The builder used to configure the Entity Framework context. - /// The Entity Framework context builder. - public static DbContextOptionsBuilder UseOpenIddict([NotNull] this DbContextOptionsBuilder builder) - where TApplication : OpenIddictApplication - where TAuthorization : OpenIddictAuthorization - where TScope : OpenIddictScope - where TToken : OpenIddictToken - where TKey : IEquatable - { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - return builder.ReplaceService>(); - } - - /// - /// Registers the OpenIddict entity sets in the Entity Framework Core context - /// using the default OpenIddict models and the default key type (string). - /// - /// The builder used to configure the Entity Framework context. - /// The Entity Framework context builder. - public static ModelBuilder UseOpenIddict([NotNull] this ModelBuilder builder) - => builder.UseOpenIddict(); - - /// - /// Registers the OpenIddict entity sets in the Entity Framework Core - /// context using the default OpenIddict models and the specified key type. - /// - /// The builder used to configure the Entity Framework context. - /// The Entity Framework context builder. - public static ModelBuilder UseOpenIddict([NotNull] this ModelBuilder builder) where TKey : IEquatable - => builder.UseOpenIddict, - OpenIddictAuthorization, - OpenIddictScope, - OpenIddictToken, TKey>(); - - /// - /// Registers the OpenIddict entity sets in the Entity Framework Core - /// context using the specified entities and the specified key type. - /// - /// The builder used to configure the Entity Framework context. - /// The Entity Framework context builder. - public static ModelBuilder UseOpenIddict([NotNull] this ModelBuilder builder) - where TApplication : OpenIddictApplication - where TAuthorization : OpenIddictAuthorization - where TScope : OpenIddictScope - where TToken : OpenIddictToken - where TKey : IEquatable - { - if (builder == null) - { - throw new ArgumentNullException(nameof(builder)); - } - - builder.ApplyConfiguration(new OpenIddictApplicationConfiguration()); - builder.ApplyConfiguration(new OpenIddictAuthorizationConfiguration()); - builder.ApplyConfiguration(new OpenIddictScopeConfiguration()); - builder.ApplyConfiguration(new OpenIddictTokenConfiguration()); - - return builder; - } } } \ No newline at end of file diff --git a/src/OpenIddict.EntityFrameworkCore/OpenIddictEntityFrameworkCoreHelpers.cs b/src/OpenIddict.EntityFrameworkCore/OpenIddictEntityFrameworkCoreHelpers.cs new file mode 100644 index 00000000..8cdbc5a5 --- /dev/null +++ b/src/OpenIddict.EntityFrameworkCore/OpenIddictEntityFrameworkCoreHelpers.cs @@ -0,0 +1,116 @@ +/* + * Licensed under the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) + * See https://github.com/openiddict/openiddict-core for more information concerning + * the license and the contributors participating to this project. + */ + +using System; +using JetBrains.Annotations; +using Microsoft.EntityFrameworkCore.Infrastructure; +using OpenIddict.EntityFrameworkCore; +using OpenIddict.EntityFrameworkCore.Models; + +namespace Microsoft.EntityFrameworkCore +{ + /// + /// Exposes extensions allowing to register the OpenIddict Entity Framework Core entity sets. + /// + public static class OpenIddictEntityFrameworkCoreHelpers + { + /// + /// Registers the OpenIddict entity sets in the Entity Framework Core context + /// using the default OpenIddict models and the default key type (string). + /// + /// The builder used to configure the Entity Framework context. + /// The Entity Framework context builder. + public static DbContextOptionsBuilder UseOpenIddict([NotNull] this DbContextOptionsBuilder builder) + => builder.UseOpenIddict(); + + /// + /// Registers the OpenIddict entity sets in the Entity Framework Core + /// context using the default OpenIddict models and the specified key type. + /// + /// The builder used to configure the Entity Framework context. + /// The Entity Framework context builder. + public static DbContextOptionsBuilder UseOpenIddict([NotNull] this DbContextOptionsBuilder builder) + where TKey : IEquatable + => builder.UseOpenIddict, + OpenIddictAuthorization, + OpenIddictScope, + OpenIddictToken, TKey>(); + + /// + /// Registers the OpenIddict entity sets in the Entity Framework Core + /// context using the specified entities and the specified key type. + /// + /// The builder used to configure the Entity Framework context. + /// The Entity Framework context builder. + public static DbContextOptionsBuilder UseOpenIddict([NotNull] this DbContextOptionsBuilder builder) + where TApplication : OpenIddictApplication + where TAuthorization : OpenIddictAuthorization + where TScope : OpenIddictScope + where TToken : OpenIddictToken + where TKey : IEquatable + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + return builder.ReplaceService>(); + } + + /// + /// Registers the OpenIddict entity sets in the Entity Framework Core context + /// using the default OpenIddict models and the default key type (string). + /// + /// The builder used to configure the Entity Framework context. + /// The Entity Framework context builder. + public static ModelBuilder UseOpenIddict([NotNull] this ModelBuilder builder) + => builder.UseOpenIddict(); + + /// + /// Registers the OpenIddict entity sets in the Entity Framework Core + /// context using the default OpenIddict models and the specified key type. + /// + /// The builder used to configure the Entity Framework context. + /// The Entity Framework context builder. + public static ModelBuilder UseOpenIddict([NotNull] this ModelBuilder builder) where TKey : IEquatable + => builder.UseOpenIddict, + OpenIddictAuthorization, + OpenIddictScope, + OpenIddictToken, TKey>(); + + /// + /// Registers the OpenIddict entity sets in the Entity Framework Core + /// context using the specified entities and the specified key type. + /// + /// The builder used to configure the Entity Framework context. + /// The Entity Framework context builder. + public static ModelBuilder UseOpenIddict([NotNull] this ModelBuilder builder) + where TApplication : OpenIddictApplication + where TAuthorization : OpenIddictAuthorization + where TScope : OpenIddictScope + where TToken : OpenIddictToken + where TKey : IEquatable + { + if (builder == null) + { + throw new ArgumentNullException(nameof(builder)); + } + + return builder + .ApplyConfiguration(new OpenIddictApplicationConfiguration()) + .ApplyConfiguration(new OpenIddictAuthorizationConfiguration()) + .ApplyConfiguration(new OpenIddictScopeConfiguration()) + .ApplyConfiguration(new OpenIddictTokenConfiguration()); + } + } +} \ No newline at end of file diff --git a/src/OpenIddict.Server/Internal/OpenIddictServerConfiguration.cs b/src/OpenIddict.Server/Internal/OpenIddictServerConfiguration.cs index 3464e538..97992eb4 100644 --- a/src/OpenIddict.Server/Internal/OpenIddictServerConfiguration.cs +++ b/src/OpenIddict.Server/Internal/OpenIddictServerConfiguration.cs @@ -59,10 +59,7 @@ namespace OpenIddict.Server.Internal .ToString()); } - options.AddScheme(OpenIddictServerDefaults.AuthenticationScheme, scheme => - { - scheme.HandlerType = typeof(OpenIddictServerHandler); - }); + options.AddScheme(OpenIddictServerDefaults.AuthenticationScheme, displayName: null); } /// diff --git a/src/OpenIddict.Server/Internal/OpenIddictServerProvider.Exchange.cs b/src/OpenIddict.Server/Internal/OpenIddictServerProvider.Exchange.cs index d08c94e9..3a9b5029 100644 --- a/src/OpenIddict.Server/Internal/OpenIddictServerProvider.Exchange.cs +++ b/src/OpenIddict.Server/Internal/OpenIddictServerProvider.Exchange.cs @@ -341,7 +341,7 @@ namespace OpenIddict.Server.Internal if (!options.DisableTokenStorage) { // Extract the token identifier from the authentication ticket. - var identifier = context.Ticket.GetProperty(OpenIddictConstants.Properties.InternalTokenId); + var identifier = context.Ticket.GetInternalTokenId(); Debug.Assert(!string.IsNullOrEmpty(identifier), "The authentication ticket should contain a token identifier."); // If the authorization code/refresh token is already marked as redeemed, this may indicate that @@ -397,7 +397,7 @@ namespace OpenIddict.Server.Internal if (!options.DisableAuthorizationStorage) { // Extract the authorization identifier from the authentication ticket. - var identifier = context.Ticket.GetProperty(OpenIddictConstants.Properties.InternalAuthorizationId); + var identifier = context.Ticket.GetInternalAuthorizationId(); if (!string.IsNullOrEmpty(identifier)) { var authorization = await _authorizationManager.FindByIdAsync(identifier); diff --git a/src/OpenIddict.Server/Internal/OpenIddictServerProvider.Helpers.cs b/src/OpenIddict.Server/Internal/OpenIddictServerProvider.Helpers.cs index 54c055ea..51af4df1 100644 --- a/src/OpenIddict.Server/Internal/OpenIddictServerProvider.Helpers.cs +++ b/src/OpenIddict.Server/Internal/OpenIddictServerProvider.Helpers.cs @@ -81,7 +81,7 @@ namespace OpenIddict.Server.Internal // Attach the unique identifier of the ad hoc authorization to the authentication ticket // so that it is attached to all the derived tokens, allowing batched revocations support. - ticket.SetProperty(OpenIddictConstants.Properties.InternalAuthorizationId, identifier); + ticket.SetInternalAuthorizationId(identifier); } } @@ -118,7 +118,7 @@ namespace OpenIddict.Server.Internal var descriptor = new OpenIddictTokenDescriptor { - AuthorizationId = ticket.GetProperty(OpenIddictConstants.Properties.InternalAuthorizationId), + AuthorizationId = ticket.GetInternalAuthorizationId(), CreationDate = ticket.Properties.IssuedUtc, ExpirationDate = ticket.Properties.ExpiresUtc, Principal = ticket.Principal, @@ -203,8 +203,8 @@ namespace OpenIddict.Server.Internal ticket.Properties.ExpiresUtc = descriptor.ExpirationDate; // Restore the token/authorization identifiers using the identifiers attached with the database entry. - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, identifier) - .SetProperty(OpenIddictConstants.Properties.InternalAuthorizationId, descriptor.AuthorizationId); + ticket.SetInternalAuthorizationId(descriptor.AuthorizationId) + .SetInternalTokenId(identifier); if (options.UseReferenceTokens) { @@ -309,7 +309,7 @@ namespace OpenIddict.Server.Internal return null; } - identifier = ticket.GetProperty(OpenIddictConstants.Properties.InternalTokenId); + identifier = ticket.GetInternalTokenId(); if (string.IsNullOrEmpty(identifier)) { _logger.LogWarning("The identifier associated with the received token cannot be retrieved. " + @@ -337,9 +337,8 @@ namespace OpenIddict.Server.Internal ticket.Properties.ExpiresUtc = await _tokenManager.GetExpirationDateAsync(token); // Restore the token/authorization identifiers using the identifiers attached with the database entry. - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, identifier); - ticket.SetProperty(OpenIddictConstants.Properties.InternalAuthorizationId, - await _tokenManager.GetAuthorizationIdAsync(token)); + ticket.SetInternalAuthorizationId(await _tokenManager.GetAuthorizationIdAsync(token)) + .SetInternalTokenId(identifier); _logger.LogTrace("The token '{Identifier}' was successfully decrypted and " + "retrieved from the database: {Claims} ; {Properties}.", @@ -353,7 +352,7 @@ namespace OpenIddict.Server.Internal // Note: if the authorization identifier or the authorization itself // cannot be found, return true as the authorization doesn't need // to be revoked if it doesn't exist or is already invalid. - var identifier = ticket.GetProperty(OpenIddictConstants.Properties.InternalAuthorizationId); + var identifier = ticket.GetInternalAuthorizationId(); if (string.IsNullOrEmpty(identifier)) { return true; @@ -427,7 +426,7 @@ namespace OpenIddict.Server.Internal private async Task TryRevokeTokensAsync([NotNull] AuthenticationTicket ticket) { // Note: if the authorization identifier is null, return true as no tokens need to be revoked. - var identifier = ticket.GetProperty(OpenIddictConstants.Properties.InternalAuthorizationId); + var identifier = ticket.GetInternalAuthorizationId(); if (string.IsNullOrEmpty(identifier)) { return true; @@ -438,7 +437,7 @@ namespace OpenIddict.Server.Internal foreach (var token in await _tokenManager.FindByAuthorizationIdAsync(identifier)) { // Don't change the status of the token used in the token request. - if (string.Equals(ticket.GetProperty(OpenIddictConstants.Properties.InternalTokenId), + if (string.Equals(ticket.GetInternalTokenId(), await _tokenManager.GetIdAsync(token), StringComparison.Ordinal)) { continue; @@ -484,7 +483,7 @@ namespace OpenIddict.Server.Internal private async Task TryExtendRefreshTokenAsync( [NotNull] object token, [NotNull] AuthenticationTicket ticket, [NotNull] OpenIddictServerOptions options) { - var identifier = ticket.GetProperty(OpenIddictConstants.Properties.InternalTokenId); + var identifier = ticket.GetInternalTokenId(); Debug.Assert(!string.IsNullOrEmpty(identifier), "The token identifier shouldn't be null or empty."); try diff --git a/src/OpenIddict.Server/Internal/OpenIddictServerProvider.Introspection.cs b/src/OpenIddict.Server/Internal/OpenIddictServerProvider.Introspection.cs index 1645351e..42173811 100644 --- a/src/OpenIddict.Server/Internal/OpenIddictServerProvider.Introspection.cs +++ b/src/OpenIddict.Server/Internal/OpenIddictServerProvider.Introspection.cs @@ -107,7 +107,7 @@ namespace OpenIddict.Server.Internal Debug.Assert(context.Ticket != null, "The authentication ticket shouldn't be null."); Debug.Assert(!string.IsNullOrEmpty(context.Request.ClientId), "The client_id parameter shouldn't be null."); - var identifier = context.Ticket.GetProperty(OpenIddictConstants.Properties.InternalTokenId); + var identifier = context.Ticket.GetInternalTokenId(); Debug.Assert(!string.IsNullOrEmpty(identifier), "The authentication ticket should contain a token identifier."); if (!context.Ticket.IsAccessToken()) @@ -145,12 +145,9 @@ namespace OpenIddict.Server.Internal } // If an authorization was attached to the access token, ensure it is still valid. - if (!options.DisableAuthorizationStorage && - context.Ticket.HasProperty(OpenIddictConstants.Properties.InternalAuthorizationId)) + if (!options.DisableAuthorizationStorage && !string.IsNullOrEmpty(context.Ticket.GetInternalAuthorizationId())) { - var authorization = await _authorizationManager.FindByIdAsync( - context.Ticket.GetProperty(OpenIddictConstants.Properties.InternalAuthorizationId)); - + var authorization = await _authorizationManager.FindByIdAsync(context.Ticket.GetInternalAuthorizationId()); if (authorization == null || !await _authorizationManager.IsValidAsync(authorization)) { _logger.LogError("The token '{Identifier}' was declared as inactive because " + diff --git a/src/OpenIddict.Server/Internal/OpenIddictServerProvider.Revocation.cs b/src/OpenIddict.Server/Internal/OpenIddictServerProvider.Revocation.cs index d8aeaa3c..4e233eb1 100644 --- a/src/OpenIddict.Server/Internal/OpenIddictServerProvider.Revocation.cs +++ b/src/OpenIddict.Server/Internal/OpenIddictServerProvider.Revocation.cs @@ -199,7 +199,7 @@ namespace OpenIddict.Server.Internal } // Extract the token identifier from the authentication ticket. - var identifier = context.Ticket.GetProperty(OpenIddictConstants.Properties.InternalTokenId); + var identifier = context.Ticket.GetInternalTokenId(); Debug.Assert(!string.IsNullOrEmpty(identifier), "The authentication ticket should contain a token identifier."); var token = await _tokenManager.FindByIdAsync(identifier); diff --git a/src/OpenIddict.Server/Internal/OpenIddictServerProvider.cs b/src/OpenIddict.Server/Internal/OpenIddictServerProvider.cs index 1929438a..1f2ac3b2 100644 --- a/src/OpenIddict.Server/Internal/OpenIddictServerProvider.cs +++ b/src/OpenIddict.Server/Internal/OpenIddictServerProvider.cs @@ -105,7 +105,7 @@ namespace OpenIddict.Server.Internal // This scenario is deliberately not supported in OpenIddict and all the tickets // must be linked. To ensure the properties are flowed from the authorization code // or the refresh token to the new ticket, they are manually restored if necessary. - if (!context.Ticket.Properties.HasProperty(OpenIddictConstants.Properties.InternalTokenId)) + if (string.IsNullOrEmpty(context.Ticket.GetInternalTokenId())) { // Retrieve the original authentication ticket from the request properties. var ticket = context.Request.GetProperty( @@ -147,7 +147,7 @@ namespace OpenIddict.Server.Internal // If token revocation was explicitly disabled, none of the following security routines apply. if (!options.DisableTokenStorage) { - var token = await _tokenManager.FindByIdAsync(context.Ticket.GetProperty(OpenIddictConstants.Properties.InternalTokenId)); + var token = await _tokenManager.FindByIdAsync(context.Ticket.GetInternalTokenId()); if (token == null) { context.Reject( @@ -206,7 +206,7 @@ namespace OpenIddict.Server.Internal // create an ad hoc authorization if an authorization code or a refresh token // is going to be returned to the client application as part of the response. if (!options.DisableAuthorizationStorage && - !context.Ticket.HasProperty(OpenIddictConstants.Properties.InternalAuthorizationId) && + string.IsNullOrEmpty(context.Ticket.GetInternalAuthorizationId()) && (context.IncludeAuthorizationCode || context.IncludeRefreshToken)) { await CreateAuthorizationAsync(context.Ticket, options, context.Request); diff --git a/src/OpenIddict.Server/OpenIddictServerHelpers.cs b/src/OpenIddict.Server/OpenIddictServerHelpers.cs new file mode 100644 index 00000000..8f7fb7ed --- /dev/null +++ b/src/OpenIddict.Server/OpenIddictServerHelpers.cs @@ -0,0 +1,89 @@ +/* + * Licensed under the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) + * See https://github.com/openiddict/openiddict-core for more information concerning + * the license and the contributors participating to this project. + */ + +using System; +using AspNet.Security.OpenIdConnect.Extensions; +using JetBrains.Annotations; +using Microsoft.AspNetCore.Authentication; +using OpenIddict.Abstractions; + +namespace OpenIddict.Server +{ + /// + /// Exposes extensions allowing to store and retrieve + /// OpenIddict-specific properties in authentication tickets. + /// + public static class OpenIddictServerHelpers + { + /// + /// Gets the internal authorization identifier associated with the authentication ticket. + /// Note: this identifier can be used to retrieve the authorization from the database. + /// + /// The authentication ticket. + /// The authorization identifier or null if it cannot be found. + public static string GetInternalAuthorizationId([NotNull] this AuthenticationTicket ticket) + { + if (ticket == null) + { + throw new ArgumentNullException(nameof(ticket)); + } + + return ticket.GetProperty(OpenIddictConstants.Properties.InternalAuthorizationId); + } + + /// + /// Gets the internal token identifier associated with the authentication ticket. + /// Note: this identifier can be used to retrieve the token from the database. + /// + /// The authentication ticket. + /// The token identifier or null if it cannot be found. + public static string GetInternalTokenId([NotNull] this AuthenticationTicket ticket) + { + if (ticket == null) + { + throw new ArgumentNullException(nameof(ticket)); + } + + return ticket.GetProperty(OpenIddictConstants.Properties.InternalTokenId); + } + + /// + /// Sets the internal authorization identifier associated with the authentication ticket. + /// Note: the identifier MUST correspond to a valid authorization entry in the database. + /// + /// The authentication ticket. + /// The internal authorization identifier. + /// The authentication ticket. + public static AuthenticationTicket SetInternalAuthorizationId( + [NotNull] this AuthenticationTicket ticket, [CanBeNull] string identifier) + { + if (ticket == null) + { + throw new ArgumentNullException(nameof(ticket)); + } + + return ticket.SetProperty(OpenIddictConstants.Properties.InternalAuthorizationId, identifier); + } + + /// + /// Sets the internal token identifier associated with the authentication ticket. + /// Note: the identifier MUST correspond to a valid token entry in the database. + /// + /// The authentication ticket. + /// The internal token identifier. + /// The authentication ticket. + public static AuthenticationTicket SetInternalTokenId( + [NotNull] this AuthenticationTicket ticket, [CanBeNull] string identifier) + { + if (ticket == null) + { + throw new ArgumentNullException(nameof(ticket)); + } + + return ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, identifier); + } + } +} diff --git a/src/OpenIddict.Validation/Internal/OpenIddictValidationConfiguration.cs b/src/OpenIddict.Validation/Internal/OpenIddictValidationConfiguration.cs index 46a98afc..ef0a2765 100644 --- a/src/OpenIddict.Validation/Internal/OpenIddictValidationConfiguration.cs +++ b/src/OpenIddict.Validation/Internal/OpenIddictValidationConfiguration.cs @@ -29,12 +29,10 @@ namespace OpenIddict.Validation.Internal /// directly from your code. This API may change or be removed in future minor releases. /// public OpenIddictValidationConfiguration([NotNull] IDataProtectionProvider dataProtectionProvider) - { - _dataProtectionProvider = dataProtectionProvider; - } + => _dataProtectionProvider = dataProtectionProvider; /// - /// Registers the OpenIddict server handler in the global authentication options. + /// Registers the OpenIddict validation handler in the global authentication options. /// /// The options instance to initialize. public void Configure(AuthenticationOptions options) @@ -51,10 +49,7 @@ namespace OpenIddict.Validation.Internal .ToString()); } - options.AddScheme(OpenIddictValidationDefaults.AuthenticationScheme, scheme => - { - scheme.HandlerType = typeof(OpenIddictValidationHandler); - }); + options.AddScheme(OpenIddictValidationDefaults.AuthenticationScheme, displayName: null); } /// diff --git a/test/OpenIddict.EntityFrameworkCore.Tests/OpenIddictEntityFrameworkCoreExtensionsTests.cs b/test/OpenIddict.EntityFrameworkCore.Tests/OpenIddictEntityFrameworkCoreExtensionsTests.cs index f97641bb..a23197ec 100644 --- a/test/OpenIddict.EntityFrameworkCore.Tests/OpenIddictEntityFrameworkCoreExtensionsTests.cs +++ b/test/OpenIddict.EntityFrameworkCore.Tests/OpenIddictEntityFrameworkCoreExtensionsTests.cs @@ -5,12 +5,9 @@ */ using System; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Conventions; using Microsoft.Extensions.Caching.Memory; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Options; -using Moq; using OpenIddict.Abstractions; using OpenIddict.Core; using OpenIddict.EntityFrameworkCore.Models; @@ -101,70 +98,5 @@ namespace OpenIddict.EntityFrameworkCore.Tests // Assert Assert.Contains(services, service => service.ServiceType == type && service.ImplementationType == type); } - - [Fact] - public void UseOpenIddict_RegistersDefaultEntityConfigurations() - { - // Arrange - var builder = new Mock(new ConventionSet()); - - // Act - builder.Object.UseOpenIddict(); - - // Assert - builder.Verify(mock => mock.ApplyConfiguration( - It.IsAny>()), Times.Once()); - builder.Verify(mock => mock.ApplyConfiguration( - It.IsAny>()), Times.Once()); - builder.Verify(mock => mock.ApplyConfiguration( - It.IsAny>()), Times.Once()); - builder.Verify(mock => mock.ApplyConfiguration( - It.IsAny>()), Times.Once()); - } - - [Fact] - public void UseOpenIddict_RegistersDefaultEntityConfigurationsWithCustomKeyType() - { - // Arrange - var builder = new Mock(new ConventionSet()); - - // Act - builder.Object.UseOpenIddict(); - - // Assert - builder.Verify(mock => mock.ApplyConfiguration( - It.IsAny, OpenIddictAuthorization, OpenIddictToken, long>>()), Times.Once()); - builder.Verify(mock => mock.ApplyConfiguration( - It.IsAny, OpenIddictApplication, OpenIddictToken, long>>()), Times.Once()); - builder.Verify(mock => mock.ApplyConfiguration( - It.IsAny, long>>()), Times.Once()); - builder.Verify(mock => mock.ApplyConfiguration( - It.IsAny, OpenIddictApplication, OpenIddictAuthorization, long>>()), Times.Once()); - } - - [Fact] - public void UseOpenIddict_RegistersCustomEntityConfigurations() - { - // Arrange - var builder = new Mock(new ConventionSet()); - - // Act - builder.Object.UseOpenIddict(); - - // Assert - builder.Verify(mock => mock.ApplyConfiguration( - It.IsAny>()), Times.Once()); - builder.Verify(mock => mock.ApplyConfiguration( - It.IsAny>()), Times.Once()); - builder.Verify(mock => mock.ApplyConfiguration( - It.IsAny>()), Times.Once()); - builder.Verify(mock => mock.ApplyConfiguration( - It.IsAny>()), Times.Once()); - } - - public class CustomApplication : OpenIddictApplication { } - public class CustomAuthorization : OpenIddictAuthorization { } - public class CustomScope : OpenIddictScope { } - public class CustomToken : OpenIddictToken { } } } diff --git a/test/OpenIddict.EntityFrameworkCore.Tests/OpenIddictEntityFrameworkCoreHelpersTests.cs b/test/OpenIddict.EntityFrameworkCore.Tests/OpenIddictEntityFrameworkCoreHelpersTests.cs new file mode 100644 index 00000000..4b02396a --- /dev/null +++ b/test/OpenIddict.EntityFrameworkCore.Tests/OpenIddictEntityFrameworkCoreHelpersTests.cs @@ -0,0 +1,107 @@ +/* + * Licensed under the Apache License, Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0) + * See https://github.com/openiddict/openiddict-core for more information concerning + * the license and the contributors participating to this project. + */ + +using System; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Metadata.Conventions; +using Moq; +using OpenIddict.EntityFrameworkCore.Models; +using Xunit; + +namespace OpenIddict.EntityFrameworkCore.Tests +{ + public class OpenIddictEntityFrameworkCoreHelpersTests + { + [Fact] + public void UseOpenIddict_RegistersDefaultEntityConfigurations() + { + // Arrange + var builder = new Mock(new ConventionSet()); + builder.Setup(mock => mock.ApplyConfiguration(It.IsAny>())) + .Returns(builder.Object); + builder.Setup(mock => mock.ApplyConfiguration(It.IsAny>())) + .Returns(builder.Object); + builder.Setup(mock => mock.ApplyConfiguration(It.IsAny>())) + .Returns(builder.Object); + builder.Setup(mock => mock.ApplyConfiguration(It.IsAny>())) + .Returns(builder.Object); + + // Act + builder.Object.UseOpenIddict(); + + // Assert + builder.Verify(mock => mock.ApplyConfiguration( + It.IsAny>()), Times.Once()); + builder.Verify(mock => mock.ApplyConfiguration( + It.IsAny>()), Times.Once()); + builder.Verify(mock => mock.ApplyConfiguration( + It.IsAny>()), Times.Once()); + builder.Verify(mock => mock.ApplyConfiguration( + It.IsAny>()), Times.Once()); + } + + [Fact] + public void UseOpenIddict_RegistersDefaultEntityConfigurationsWithCustomKeyType() + { + // Arrange + var builder = new Mock(new ConventionSet()); + builder.Setup(mock => mock.ApplyConfiguration(It.IsAny>>())) + .Returns(builder.Object); + builder.Setup(mock => mock.ApplyConfiguration(It.IsAny>>())) + .Returns(builder.Object); + builder.Setup(mock => mock.ApplyConfiguration(It.IsAny>>())) + .Returns(builder.Object); + builder.Setup(mock => mock.ApplyConfiguration(It.IsAny>>())) + .Returns(builder.Object); + + // Act + builder.Object.UseOpenIddict(); + + // Assert + builder.Verify(mock => mock.ApplyConfiguration( + It.IsAny, OpenIddictAuthorization, OpenIddictToken, long>>()), Times.Once()); + builder.Verify(mock => mock.ApplyConfiguration( + It.IsAny, OpenIddictApplication, OpenIddictToken, long>>()), Times.Once()); + builder.Verify(mock => mock.ApplyConfiguration( + It.IsAny, long>>()), Times.Once()); + builder.Verify(mock => mock.ApplyConfiguration( + It.IsAny, OpenIddictApplication, OpenIddictAuthorization, long>>()), Times.Once()); + } + + [Fact] + public void UseOpenIddict_RegistersCustomEntityConfigurations() + { + // Arrange + var builder = new Mock(new ConventionSet()); + builder.Setup(mock => mock.ApplyConfiguration(It.IsAny>())) + .Returns(builder.Object); + builder.Setup(mock => mock.ApplyConfiguration(It.IsAny>())) + .Returns(builder.Object); + builder.Setup(mock => mock.ApplyConfiguration(It.IsAny>())) + .Returns(builder.Object); + builder.Setup(mock => mock.ApplyConfiguration(It.IsAny>())) + .Returns(builder.Object); + + // Act + builder.Object.UseOpenIddict(); + + // Assert + builder.Verify(mock => mock.ApplyConfiguration( + It.IsAny>()), Times.Once()); + builder.Verify(mock => mock.ApplyConfiguration( + It.IsAny>()), Times.Once()); + builder.Verify(mock => mock.ApplyConfiguration( + It.IsAny>()), Times.Once()); + builder.Verify(mock => mock.ApplyConfiguration( + It.IsAny>()), Times.Once()); + } + + public class CustomApplication : OpenIddictApplication { } + public class CustomAuthorization : OpenIddictAuthorization { } + public class CustomScope : OpenIddictScope { } + public class CustomToken : OpenIddictToken { } + } +} diff --git a/test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.Exchange.cs b/test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.Exchange.cs index c0aabcad..580aaf31 100644 --- a/test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.Exchange.cs +++ b/test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.Exchange.cs @@ -715,7 +715,7 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetPresenters("Fabrikam"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AuthorizationCode); var format = new Mock>(); @@ -767,7 +767,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); var format = new Mock>(); @@ -818,7 +818,7 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetPresenters("Fabrikam"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AuthorizationCode); var format = new Mock>(); @@ -877,7 +877,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "60FFF7EA-F98E-437B-937E-5073CC313103"); + ticket.SetInternalTokenId("60FFF7EA-F98E-437B-937E-5073CC313103"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); var format = new Mock>(); @@ -935,7 +935,7 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetPresenters("Fabrikam"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AuthorizationCode); var format = new Mock>(); @@ -1003,7 +1003,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "60FFF7EA-F98E-437B-937E-5073CC313103"); + ticket.SetInternalTokenId("60FFF7EA-F98E-437B-937E-5073CC313103"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); var format = new Mock>(); @@ -1070,9 +1070,9 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetPresenters("Fabrikam"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AuthorizationCode); - ticket.SetProperty(OpenIddictConstants.Properties.InternalAuthorizationId, "18D15F73-BE2B-6867-DC01-B3C1E8AFDED0"); + ticket.SetInternalAuthorizationId("18D15F73-BE2B-6867-DC01-B3C1E8AFDED0"); var format = new Mock>(); @@ -1153,9 +1153,9 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); - ticket.SetProperty(OpenIddictConstants.Properties.InternalAuthorizationId, "18D15F73-BE2B-6867-DC01-B3C1E8AFDED0"); + ticket.SetInternalAuthorizationId("18D15F73-BE2B-6867-DC01-B3C1E8AFDED0"); var format = new Mock>(); @@ -1235,9 +1235,9 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetPresenters("Fabrikam"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AuthorizationCode); - ticket.SetProperty(OpenIddictConstants.Properties.InternalAuthorizationId, "18D15F73-BE2B-6867-DC01-B3C1E8AFDED0"); + ticket.SetInternalAuthorizationId("18D15F73-BE2B-6867-DC01-B3C1E8AFDED0"); var format = new Mock>(); @@ -1330,9 +1330,9 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); - ticket.SetProperty(OpenIddictConstants.Properties.InternalAuthorizationId, "18D15F73-BE2B-6867-DC01-B3C1E8AFDED0"); + ticket.SetInternalAuthorizationId("18D15F73-BE2B-6867-DC01-B3C1E8AFDED0"); var format = new Mock>(); @@ -1424,7 +1424,7 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetPresenters("Fabrikam"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AuthorizationCode); var format = new Mock>(); @@ -1496,7 +1496,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "60FFF7EA-F98E-437B-937E-5073CC313103"); + ticket.SetInternalTokenId("60FFF7EA-F98E-437B-937E-5073CC313103"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); var format = new Mock>(); @@ -1566,7 +1566,7 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetPresenters("Fabrikam"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AuthorizationCode); var format = new Mock>(); @@ -1647,7 +1647,7 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetPresenters("Fabrikam"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AuthorizationCode); var format = new Mock>(); @@ -1730,7 +1730,7 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetPresenters("Fabrikam"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AuthorizationCode); var format = new Mock>(); @@ -1810,7 +1810,7 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetPresenters("Fabrikam"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AuthorizationCode); var format = new Mock>(); @@ -1895,8 +1895,8 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "60FFF7EA-F98E-437B-937E-5073CC313103"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalAuthorizationId, "18D15F73-BE2B-6867-DC01-B3C1E8AFDED0"); + ticket.SetInternalTokenId("60FFF7EA-F98E-437B-937E-5073CC313103"); + ticket.SetInternalAuthorizationId("18D15F73-BE2B-6867-DC01-B3C1E8AFDED0"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); var format = new Mock>(); @@ -1973,8 +1973,8 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "60FFF7EA-F98E-437B-937E-5073CC313103"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalAuthorizationId, "18D15F73-BE2B-6867-DC01-B3C1E8AFDED0"); + ticket.SetInternalTokenId("60FFF7EA-F98E-437B-937E-5073CC313103"); + ticket.SetInternalAuthorizationId("18D15F73-BE2B-6867-DC01-B3C1E8AFDED0"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); var format = new Mock>(); @@ -2065,7 +2065,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "60FFF7EA-F98E-437B-937E-5073CC313103"); + ticket.SetInternalTokenId("60FFF7EA-F98E-437B-937E-5073CC313103"); switch (flow) { diff --git a/test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.Introspection.cs b/test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.Introspection.cs index 19ab26b9..31b5c84c 100644 --- a/test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.Introspection.cs +++ b/test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.Introspection.cs @@ -212,7 +212,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(type); var format = new Mock>(); @@ -266,7 +266,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AccessToken); var format = new Mock>(); @@ -321,7 +321,7 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetAudiences("Contoso"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AccessToken); var format = new Mock>(); @@ -428,7 +428,7 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetAudiences("Fabrikam"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AccessToken); var format = new Mock>(); @@ -522,7 +522,7 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetAudiences("Fabrikam"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AccessToken); var format = new Mock>(); @@ -615,7 +615,7 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetAudiences("Fabrikam"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AccessToken); var format = new Mock>(); @@ -714,7 +714,7 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetAudiences("Fabrikam"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AccessToken); var format = new Mock>(); diff --git a/test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.Revocation.cs b/test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.Revocation.cs index 7143b936..c922798a 100644 --- a/test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.Revocation.cs +++ b/test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.Revocation.cs @@ -312,7 +312,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AccessToken); var format = new Mock>(); @@ -393,7 +393,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); var format = new Mock>(); @@ -437,7 +437,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); var format = new Mock>(); @@ -486,7 +486,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); var format = new Mock>(); diff --git a/test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.Serialization.cs b/test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.Serialization.cs index 642f3576..5ba03999 100644 --- a/test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.Serialization.cs +++ b/test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.Serialization.cs @@ -84,7 +84,7 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetAudiences("Fabrikam"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AccessToken); var format = new Mock>(); @@ -454,7 +454,7 @@ namespace OpenIddict.Server.Internal.Tests ticket.SetAudiences("Fabrikam"); ticket.SetTokenId("070AAEDE-38BF-41BE-870C-4E5A73E54566"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); var format = new Mock>(); @@ -604,7 +604,7 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetPresenters("Fabrikam"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); var format = new Mock>(); @@ -1178,7 +1178,7 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetPresenters("Fabrikam"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); var format = new Mock>(); @@ -1310,7 +1310,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); var format = new Mock>(); @@ -1728,7 +1728,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); var format = new Mock>(); @@ -2299,7 +2299,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "60FFF7EA-F98E-437B-937E-5073CC313103"); + ticket.SetInternalTokenId("60FFF7EA-F98E-437B-937E-5073CC313103"); ticket.SetScopes(OpenIddictConstants.Scopes.OpenId, OpenIddictConstants.Scopes.OfflineAccess); var format = new Mock>(); diff --git a/test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.cs b/test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.cs index 62707c8b..54662aa6 100644 --- a/test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.cs +++ b/test/OpenIddict.Server.Tests/Internal/OpenIddictServerProviderTests.cs @@ -154,7 +154,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "60FFF7EA-F98E-437B-937E-5073CC313103"); + ticket.SetInternalTokenId("60FFF7EA-F98E-437B-937E-5073CC313103"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); ticket.SetScopes(OpenIddictConstants.Scopes.OpenId, OpenIddictConstants.Scopes.OfflineAccess); ticket.SetProperty("custom_property_in_original_ticket", "original_value"); @@ -226,7 +226,7 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetPresenters("Fabrikam"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AuthorizationCode); ticket.SetScopes(OpenIddictConstants.Scopes.OpenId, OpenIddictConstants.Scopes.OfflineAccess); @@ -299,7 +299,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "60FFF7EA-F98E-437B-937E-5073CC313103"); + ticket.SetInternalTokenId("60FFF7EA-F98E-437B-937E-5073CC313103"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); ticket.SetScopes(OpenIddictConstants.Scopes.OpenId, OpenIddictConstants.Scopes.OfflineAccess); @@ -362,7 +362,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); ticket.SetScopes(OpenIddictConstants.Scopes.OpenId, OpenIddictConstants.Scopes.OfflineAccess); @@ -421,7 +421,7 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetPresenters("Fabrikam"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AuthorizationCode); var format = new Mock>(); @@ -490,7 +490,7 @@ namespace OpenIddict.Server.Internal.Tests OpenIddictServerDefaults.AuthenticationScheme); ticket.SetPresenters("Fabrikam"); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "3E228451-1555-46F7-A471-951EFBA23A56"); + ticket.SetInternalTokenId("3E228451-1555-46F7-A471-951EFBA23A56"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.AuthorizationCode); var format = new Mock>(); @@ -564,7 +564,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "60FFF7EA-F98E-437B-937E-5073CC313103"); + ticket.SetInternalTokenId("60FFF7EA-F98E-437B-937E-5073CC313103"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); ticket.SetScopes(OpenIddictConstants.Scopes.OpenId, OpenIddictConstants.Scopes.OfflineAccess); @@ -630,7 +630,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "60FFF7EA-F98E-437B-937E-5073CC313103"); + ticket.SetInternalTokenId("60FFF7EA-F98E-437B-937E-5073CC313103"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); ticket.SetScopes(OpenIddictConstants.Scopes.OpenId, OpenIddictConstants.Scopes.OfflineAccess); @@ -700,7 +700,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "60FFF7EA-F98E-437B-937E-5073CC313103"); + ticket.SetInternalTokenId("60FFF7EA-F98E-437B-937E-5073CC313103"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); ticket.SetScopes(OpenIddictConstants.Scopes.OpenId, OpenIddictConstants.Scopes.OfflineAccess); @@ -758,7 +758,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "60FFF7EA-F98E-437B-937E-5073CC313103"); + ticket.SetInternalTokenId("60FFF7EA-F98E-437B-937E-5073CC313103"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); ticket.SetScopes(OpenIddictConstants.Scopes.OpenId, OpenIddictConstants.Scopes.OfflineAccess); @@ -852,10 +852,10 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "60FFF7EA-F98E-437B-937E-5073CC313103"); + ticket.SetInternalTokenId("60FFF7EA-F98E-437B-937E-5073CC313103"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); ticket.SetScopes(OpenIddictConstants.Scopes.OpenId, OpenIddictConstants.Scopes.OfflineAccess); - ticket.SetProperty(OpenIddictConstants.Properties.InternalAuthorizationId, "18D15F73-BE2B-6867-DC01-B3C1E8AFDED0"); + ticket.SetInternalAuthorizationId("18D15F73-BE2B-6867-DC01-B3C1E8AFDED0"); var format = new Mock>(); @@ -937,7 +937,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "60FFF7EA-F98E-437B-937E-5073CC313103"); + ticket.SetInternalTokenId("60FFF7EA-F98E-437B-937E-5073CC313103"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); ticket.SetScopes(OpenIddictConstants.Scopes.OpenId, OpenIddictConstants.Scopes.OfflineAccess); @@ -1005,7 +1005,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "60FFF7EA-F98E-437B-937E-5073CC313103"); + ticket.SetInternalTokenId("60FFF7EA-F98E-437B-937E-5073CC313103"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); ticket.SetScopes(OpenIddictConstants.Scopes.OpenId, OpenIddictConstants.Scopes.OfflineAccess); @@ -1072,7 +1072,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "60FFF7EA-F98E-437B-937E-5073CC313103"); + ticket.SetInternalTokenId("60FFF7EA-F98E-437B-937E-5073CC313103"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); ticket.SetScopes(OpenIddictConstants.Scopes.OpenId, OpenIddictConstants.Scopes.OfflineAccess); @@ -1138,7 +1138,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "60FFF7EA-F98E-437B-937E-5073CC313103"); + ticket.SetInternalTokenId("60FFF7EA-F98E-437B-937E-5073CC313103"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); ticket.SetScopes(OpenIddictConstants.Scopes.OpenId, OpenIddictConstants.Scopes.OfflineAccess); @@ -1204,7 +1204,7 @@ namespace OpenIddict.Server.Internal.Tests new AuthenticationProperties(), OpenIddictServerDefaults.AuthenticationScheme); - ticket.SetProperty(OpenIddictConstants.Properties.InternalTokenId, "60FFF7EA-F98E-437B-937E-5073CC313103"); + ticket.SetInternalTokenId("60FFF7EA-F98E-437B-937E-5073CC313103"); ticket.SetTokenUsage(OpenIdConnectConstants.TokenUsages.RefreshToken); ticket.SetScopes(OpenIddictConstants.Scopes.OpenId, OpenIddictConstants.Scopes.OfflineAccess); @@ -1646,7 +1646,7 @@ namespace OpenIddict.Server.Internal.Tests if (request.HasParameter("attach-authorization")) { - ticket.SetProperty(OpenIddictConstants.Properties.InternalAuthorizationId, "1AF06AB2-A0FC-4E3D-86AF-E04DA8C7BE70"); + ticket.SetInternalAuthorizationId("1AF06AB2-A0FC-4E3D-86AF-E04DA8C7BE70"); } if (request.HasParameter("attach-public-parameters"))