Browse Source

Change the resource identifiers naming scheme

pull/1095/head
Kévin Chalet 5 years ago
parent
commit
29f88f4b43
  1. 2
      shared/OpenIddict.Extensions/Helpers/OpenIddictHelpers.cs
  2. 2
      src/OpenIddict.Abstractions/Primitives/OpenIddictConverter.cs
  3. 70
      src/OpenIddict.Abstractions/Primitives/OpenIddictExtensions.cs
  4. 16
      src/OpenIddict.Abstractions/Primitives/OpenIddictMessage.cs
  5. 12
      src/OpenIddict.Abstractions/Primitives/OpenIddictParameter.cs
  6. 1174
      src/OpenIddict.Abstractions/Resources/OpenIddictResources.resx
  7. 238
      src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.ar.xlf
  8. 238
      src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.de.xlf
  9. 238
      src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.es.xlf
  10. 238
      src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.fr.xlf
  11. 238
      src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.gu.xlf
  12. 238
      src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.hi.xlf
  13. 238
      src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.it.xlf
  14. 238
      src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.tr.xlf
  15. 238
      src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.zh-Hans.xlf
  16. 238
      src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.zh-Hant.xlf
  17. 16
      src/OpenIddict.Core/Caches/OpenIddictApplicationCache.cs
  18. 40
      src/OpenIddict.Core/Caches/OpenIddictAuthorizationCache.cs
  19. 16
      src/OpenIddict.Core/Caches/OpenIddictScopeCache.cs
  20. 36
      src/OpenIddict.Core/Caches/OpenIddictTokenCache.cs
  21. 76
      src/OpenIddict.Core/Managers/OpenIddictApplicationManager.cs
  22. 64
      src/OpenIddict.Core/Managers/OpenIddictAuthorizationManager.cs
  23. 20
      src/OpenIddict.Core/Managers/OpenIddictScopeManager.cs
  24. 72
      src/OpenIddict.Core/Managers/OpenIddictTokenManager.cs
  25. 50
      src/OpenIddict.Core/OpenIddictCoreBuilder.cs
  26. 8
      src/OpenIddict.Core/OpenIddictCoreExtensions.cs
  27. 2
      src/OpenIddict.Core/Resolvers/OpenIddictApplicationStoreResolver.cs
  28. 2
      src/OpenIddict.Core/Resolvers/OpenIddictAuthorizationStoreResolver.cs
  29. 2
      src/OpenIddict.Core/Resolvers/OpenIddictScopeStoreResolver.cs
  30. 2
      src/OpenIddict.Core/Resolvers/OpenIddictTokenStoreResolver.cs
  31. 4
      src/OpenIddict.EntityFramework/OpenIddictEntityFrameworkBuilder.cs
  32. 4
      src/OpenIddict.EntityFramework/Resolvers/OpenIddictEntityFrameworkApplicationStoreResolver.cs
  33. 4
      src/OpenIddict.EntityFramework/Resolvers/OpenIddictEntityFrameworkAuthorizationStoreResolver.cs
  34. 4
      src/OpenIddict.EntityFramework/Resolvers/OpenIddictEntityFrameworkScopeStoreResolver.cs
  35. 4
      src/OpenIddict.EntityFramework/Resolvers/OpenIddictEntityFrameworkTokenStoreResolver.cs
  36. 14
      src/OpenIddict.EntityFramework/Stores/OpenIddictEntityFrameworkApplicationStore.cs
  37. 42
      src/OpenIddict.EntityFramework/Stores/OpenIddictEntityFrameworkAuthorizationStore.cs
  38. 14
      src/OpenIddict.EntityFramework/Stores/OpenIddictEntityFrameworkScopeStore.cs
  39. 40
      src/OpenIddict.EntityFramework/Stores/OpenIddictEntityFrameworkTokenStore.cs
  40. 2
      src/OpenIddict.EntityFrameworkCore/OpenIddictEntityFrameworkCoreBuilder.cs
  41. 4
      src/OpenIddict.EntityFrameworkCore/Resolvers/OpenIddictEntityFrameworkCoreApplicationStoreResolver.cs
  42. 4
      src/OpenIddict.EntityFrameworkCore/Resolvers/OpenIddictEntityFrameworkCoreAuthorizationStoreResolver.cs
  43. 4
      src/OpenIddict.EntityFrameworkCore/Resolvers/OpenIddictEntityFrameworkCoreScopeStoreResolver.cs
  44. 4
      src/OpenIddict.EntityFrameworkCore/Resolvers/OpenIddictEntityFrameworkCoreTokenStoreResolver.cs
  45. 14
      src/OpenIddict.EntityFrameworkCore/Stores/OpenIddictEntityFrameworkCoreApplicationStore.cs
  46. 42
      src/OpenIddict.EntityFrameworkCore/Stores/OpenIddictEntityFrameworkCoreAuthorizationStore.cs
  47. 14
      src/OpenIddict.EntityFrameworkCore/Stores/OpenIddictEntityFrameworkCoreScopeStore.cs
  48. 40
      src/OpenIddict.EntityFrameworkCore/Stores/OpenIddictEntityFrameworkCoreTokenStore.cs
  49. 8
      src/OpenIddict.MongoDb/OpenIddictMongoDbBuilder.cs
  50. 2
      src/OpenIddict.MongoDb/OpenIddictMongoDbContext.cs
  51. 2
      src/OpenIddict.MongoDb/Resolvers/OpenIddictMongoDbApplicationStoreResolver.cs
  52. 2
      src/OpenIddict.MongoDb/Resolvers/OpenIddictMongoDbAuthorizationStoreResolver.cs
  53. 2
      src/OpenIddict.MongoDb/Resolvers/OpenIddictMongoDbScopeStoreResolver.cs
  54. 2
      src/OpenIddict.MongoDb/Resolvers/OpenIddictMongoDbTokenStoreResolver.cs
  55. 14
      src/OpenIddict.MongoDb/Stores/OpenIddictMongoDbApplicationStore.cs
  56. 38
      src/OpenIddict.MongoDb/Stores/OpenIddictMongoDbAuthorizationStore.cs
  57. 14
      src/OpenIddict.MongoDb/Stores/OpenIddictMongoDbScopeStore.cs
  58. 34
      src/OpenIddict.MongoDb/Stores/OpenIddictMongoDbTokenStore.cs
  59. 2
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreBuilder.cs
  60. 6
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreConfiguration.cs
  61. 24
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandler.cs
  62. 34
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Authentication.cs
  63. 26
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Session.cs
  64. 108
      src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.cs
  65. 28
      src/OpenIddict.Server.DataProtection/OpenIddictServerDataProtectionHandlers.cs
  66. 2
      src/OpenIddict.Server.Owin/OpenIddictServerOwinBuilder.cs
  67. 2
      src/OpenIddict.Server.Owin/OpenIddictServerOwinConfiguration.cs
  68. 26
      src/OpenIddict.Server.Owin/OpenIddictServerOwinHandler.cs
  69. 34
      src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Authentication.cs
  70. 26
      src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Session.cs
  71. 100
      src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.cs
  72. 4
      src/OpenIddict.Server.Owin/OpenIddictServerOwinMiddlewareFactory.cs
  73. 6
      src/OpenIddict.Server.Quartz/OpenIddictServerQuartzBuilder.cs
  74. 4
      src/OpenIddict.Server.Quartz/OpenIddictServerQuartzExtensions.cs
  75. 6
      src/OpenIddict.Server.Quartz/OpenIddictServerQuartzJob.cs
  76. 114
      src/OpenIddict.Server/OpenIddictServerBuilder.cs
  77. 46
      src/OpenIddict.Server/OpenIddictServerConfiguration.cs
  78. 14
      src/OpenIddict.Server/OpenIddictServerDispatcher.cs
  79. 4
      src/OpenIddict.Server/OpenIddictServerEvents.Authentication.cs
  80. 4
      src/OpenIddict.Server/OpenIddictServerEvents.Session.cs
  81. 6
      src/OpenIddict.Server/OpenIddictServerHandlerDescriptor.cs
  82. 176
      src/OpenIddict.Server/OpenIddictServerHandlers.Authentication.cs
  83. 82
      src/OpenIddict.Server/OpenIddictServerHandlers.Device.cs
  84. 36
      src/OpenIddict.Server/OpenIddictServerHandlers.Discovery.cs
  85. 190
      src/OpenIddict.Server/OpenIddictServerHandlers.Exchange.cs
  86. 90
      src/OpenIddict.Server/OpenIddictServerHandlers.Introspection.cs
  87. 94
      src/OpenIddict.Server/OpenIddictServerHandlers.Revocation.cs
  88. 26
      src/OpenIddict.Server/OpenIddictServerHandlers.Session.cs
  89. 18
      src/OpenIddict.Server/OpenIddictServerHandlers.Userinfo.cs
  90. 412
      src/OpenIddict.Server/OpenIddictServerHandlers.cs
  91. 4
      src/OpenIddict.Server/OpenIddictServerHelpers.cs
  92. 6
      src/OpenIddict.Server/OpenIddictServerOptions.cs
  93. 2
      src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreBuilder.cs
  94. 4
      src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreConfiguration.cs
  95. 16
      src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreHandler.cs
  96. 32
      src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreHandlers.cs
  97. 10
      src/OpenIddict.Validation.DataProtection/OpenIddictValidationDataProtectionHandlers.cs
  98. 2
      src/OpenIddict.Validation.Owin/OpenIddictValidationOwinBuilder.cs
  99. 18
      src/OpenIddict.Validation.Owin/OpenIddictValidationOwinHandler.cs
  100. 32
      src/OpenIddict.Validation.Owin/OpenIddictValidationOwinHandlers.cs

2
shared/OpenIddict.Extensions/Helpers/OpenIddictHelpers.cs

@ -39,7 +39,7 @@ namespace OpenIddict.Extensions
if (!definition.IsGenericTypeDefinition)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1262), nameof(definition));
throw new ArgumentException(SR.GetResourceString(SR.ID0263), nameof(definition));
}
if (definition.IsInterface)

2
src/OpenIddict.Abstractions/Primitives/OpenIddictConverter.cs

@ -52,7 +52,7 @@ namespace OpenIddict.Abstractions
return typeToConvert == typeof(OpenIddictMessage) ? new OpenIddictMessage(document.RootElement.Clone()) :
typeToConvert == typeof(OpenIddictRequest) ? new OpenIddictRequest(document.RootElement.Clone()) :
typeToConvert == typeof(OpenIddictResponse) ? new OpenIddictResponse(document.RootElement.Clone()) :
throw new ArgumentException(SR.GetResourceString(SR.ID1175), nameof(typeToConvert));
throw new ArgumentException(SR.GetResourceString(SR.ID0176), nameof(typeToConvert));
}
/// <summary>

70
src/OpenIddict.Abstractions/Primitives/OpenIddictExtensions.cs

@ -97,7 +97,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(value))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1176), nameof(value));
throw new ArgumentException(SR.GetResourceString(SR.ID0177), nameof(value));
}
return HasValue(request.AcrValues, value, Separators.Space);
@ -117,7 +117,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(prompt))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1177), nameof(prompt));
throw new ArgumentException(SR.GetResourceString(SR.ID0178), nameof(prompt));
}
return HasValue(request.Prompt, prompt, Separators.Space);
@ -137,7 +137,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1178), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0179), nameof(type));
}
return HasValue(request.ResponseType, type, Separators.Space);
@ -157,7 +157,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(scope))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1179), nameof(scope));
throw new ArgumentException(SR.GetResourceString(SR.ID0180), nameof(scope));
}
return HasValue(request.Scope, scope, Separators.Space);
@ -550,7 +550,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(destination))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1180), nameof(destination));
throw new ArgumentException(SR.GetResourceString(SR.ID0181), nameof(destination));
}
claim.Properties.TryGetValue(Properties.Destinations, out string? destinations);
@ -595,7 +595,7 @@ namespace OpenIddict.Abstractions
if (destinations.Any(destination => string.IsNullOrEmpty(destination)))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1181), nameof(destinations));
throw new ArgumentException(SR.GetResourceString(SR.ID0182), nameof(destinations));
}
using var stream = new MemoryStream();
@ -662,7 +662,7 @@ namespace OpenIddict.Abstractions
{
if (!destinations.SetEquals(claims[index].GetDestinations()))
{
throw new InvalidOperationException(SR.FormatID1182(group.Key));
throw new InvalidOperationException(SR.FormatID0183(group.Key));
}
}
@ -787,12 +787,12 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1183), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0184), nameof(type));
}
if (string.IsNullOrEmpty(value))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1184), nameof(value));
throw new ArgumentException(SR.GetResourceString(SR.ID0185), nameof(value));
}
identity.AddClaim(new Claim(type, value));
@ -815,12 +815,12 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1183), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0184), nameof(type));
}
if (string.IsNullOrEmpty(value))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1184), nameof(value));
throw new ArgumentException(SR.GetResourceString(SR.ID0185), nameof(value));
}
identity.AddClaim(new Claim(type, value).SetDestinations(destinations));
@ -852,7 +852,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1183), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0184), nameof(type));
}
return identity.FindFirst(type)?.Value;
@ -873,7 +873,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1183), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0184), nameof(type));
}
return principal.FindFirst(type)?.Value;
@ -894,7 +894,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1183), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0184), nameof(type));
}
return identity.FindAll(type).Select(claim => claim.Value).Distinct(StringComparer.Ordinal).ToImmutableArray();
@ -915,7 +915,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1183), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0184), nameof(type));
}
return identity.FindAll(type).Any();
@ -936,7 +936,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1183), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0184), nameof(type));
}
return principal.FindAll(type).Select(claim => claim.Value).Distinct(StringComparer.Ordinal).ToImmutableArray();
@ -957,7 +957,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1183), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0184), nameof(type));
}
return principal.FindAll(type).Any();
@ -978,7 +978,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1183), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0184), nameof(type));
}
foreach (var claim in identity.FindAll(type).ToList())
@ -1004,7 +1004,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1183), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0184), nameof(type));
}
foreach (var identity in principal.Identities)
@ -1034,7 +1034,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1183), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0184), nameof(type));
}
identity.RemoveClaims(type);
@ -1063,7 +1063,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1183), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0184), nameof(type));
}
principal.RemoveClaims(type);
@ -1092,7 +1092,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1183), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0184), nameof(type));
}
identity.RemoveClaims(type);
@ -1121,7 +1121,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1183), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0184), nameof(type));
}
principal.RemoveClaims(type);
@ -1313,7 +1313,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(audience))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1185), nameof(audience));
throw new ArgumentException(SR.GetResourceString(SR.ID0186), nameof(audience));
}
return principal.HasClaim(Claims.Private.Audience, audience);
@ -1342,7 +1342,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(presenter))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1186), nameof(presenter));
throw new ArgumentException(SR.GetResourceString(SR.ID0187), nameof(presenter));
}
return principal.HasClaim(Claims.Private.Presenter, presenter);
@ -1371,7 +1371,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(resource))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1061), nameof(resource));
throw new ArgumentException(SR.GetResourceString(SR.ID0062), nameof(resource));
}
return principal.HasClaim(Claims.Private.Resource, resource);
@ -1400,7 +1400,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(scope))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1179), nameof(scope));
throw new ArgumentException(SR.GetResourceString(SR.ID0180), nameof(scope));
}
return principal.HasClaim(Claims.Private.Scope, scope);
@ -1421,7 +1421,7 @@ namespace OpenIddict.Abstractions
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1187), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0188), nameof(type));
}
return string.Equals(principal.GetTokenType(), type, StringComparison.OrdinalIgnoreCase);
@ -1648,7 +1648,7 @@ namespace OpenIddict.Abstractions
private static ImmutableArray<string> GetValues(string? source, char[] separators)
{
Debug.Assert(separators is not null && separators.Length != 0, SR.GetResourceString(SR.ID5001));
Debug.Assert(separators is not null && separators.Length != 0, SR.GetResourceString(SR.ID4001));
if (string.IsNullOrEmpty(source))
{
@ -1678,8 +1678,8 @@ namespace OpenIddict.Abstractions
private static bool HasValue(string? source, string value, char[] separators)
{
Debug.Assert(!string.IsNullOrEmpty(value), SR.GetResourceString(SR.ID5002));
Debug.Assert(separators is not null && separators.Length != 0, SR.GetResourceString(SR.ID5001));
Debug.Assert(!string.IsNullOrEmpty(value), SR.GetResourceString(SR.ID4002));
Debug.Assert(separators is not null && separators.Length != 0, SR.GetResourceString(SR.ID4001));
if (string.IsNullOrEmpty(source))
{
@ -1705,7 +1705,7 @@ namespace OpenIddict.Abstractions
private static StringSegment TrimStart(StringSegment segment, char[] separators)
{
Debug.Assert(separators is not null && separators.Length != 0, SR.GetResourceString(SR.ID5001));
Debug.Assert(separators is not null && separators.Length != 0, SR.GetResourceString(SR.ID4001));
var index = segment.Offset;
@ -1724,7 +1724,7 @@ namespace OpenIddict.Abstractions
private static StringSegment TrimEnd(StringSegment segment, char[] separators)
{
Debug.Assert(separators is not null && separators.Length != 0, SR.GetResourceString(SR.ID5001));
Debug.Assert(separators is not null && separators.Length != 0, SR.GetResourceString(SR.ID4001));
var index = segment.Offset + segment.Length - 1;
@ -1743,14 +1743,14 @@ namespace OpenIddict.Abstractions
private static StringSegment Trim(StringSegment segment, char[] separators)
{
Debug.Assert(separators is not null && separators.Length != 0, SR.GetResourceString(SR.ID5001));
Debug.Assert(separators is not null && separators.Length != 0, SR.GetResourceString(SR.ID4001));
return TrimEnd(TrimStart(segment, separators), separators);
}
private static bool IsSeparator(char character, char[] separators)
{
Debug.Assert(separators is not null && separators.Length != 0, SR.GetResourceString(SR.ID5001));
Debug.Assert(separators is not null && separators.Length != 0, SR.GetResourceString(SR.ID4001));
for (var index = 0; index < separators!.Length; index++)
{

16
src/OpenIddict.Abstractions/Primitives/OpenIddictMessage.cs

@ -46,7 +46,7 @@ namespace OpenIddict.Abstractions
{
if (parameters.ValueKind != JsonValueKind.Object)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1188), nameof(parameters));
throw new ArgumentException(SR.GetResourceString(SR.ID0189), nameof(parameters));
}
foreach (var parameter in parameters.EnumerateObject())
@ -192,12 +192,12 @@ namespace OpenIddict.Abstractions
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1189), nameof(name));
throw new ArgumentException(SR.GetResourceString(SR.ID0190), nameof(name));
}
if (Parameters.ContainsKey(name))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1190), nameof(name));
throw new ArgumentException(SR.GetResourceString(SR.ID0191), nameof(name));
}
Parameters.Add(name, value);
@ -214,7 +214,7 @@ namespace OpenIddict.Abstractions
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1189), nameof(name));
throw new ArgumentException(SR.GetResourceString(SR.ID0190), nameof(name));
}
if (Parameters.TryGetValue(name, out OpenIddictParameter value))
@ -241,7 +241,7 @@ namespace OpenIddict.Abstractions
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1189), nameof(name));
throw new ArgumentException(SR.GetResourceString(SR.ID0190), nameof(name));
}
return Parameters.ContainsKey(name);
@ -256,7 +256,7 @@ namespace OpenIddict.Abstractions
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1189), nameof(name));
throw new ArgumentException(SR.GetResourceString(SR.ID0190), nameof(name));
}
Parameters.Remove(name);
@ -275,7 +275,7 @@ namespace OpenIddict.Abstractions
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1189), nameof(name));
throw new ArgumentException(SR.GetResourceString(SR.ID0190), nameof(name));
}
// If the parameter value is null or empty, remove the corresponding entry from the collection.
@ -302,7 +302,7 @@ namespace OpenIddict.Abstractions
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1189), nameof(name));
throw new ArgumentException(SR.GetResourceString(SR.ID0190), nameof(name));
}
return Parameters.TryGetValue(name, out value);

12
src/OpenIddict.Abstractions/Primitives/OpenIddictParameter.cs

@ -300,7 +300,7 @@ namespace OpenIddict.Abstractions
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1191), nameof(name));
throw new ArgumentException(SR.GetResourceString(SR.ID0192), nameof(name));
}
if (Value is JsonElement element && element.ValueKind == JsonValueKind.Object)
@ -326,7 +326,7 @@ namespace OpenIddict.Abstractions
{
if (index < 0)
{
throw new ArgumentOutOfRangeException(nameof(index), SR.GetResourceString(SR.ID1192));
throw new ArgumentOutOfRangeException(nameof(index), SR.GetResourceString(SR.ID0193));
}
if (Value is string?[] array)
@ -439,7 +439,7 @@ namespace OpenIddict.Abstractions
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1191), nameof(name));
throw new ArgumentException(SR.GetResourceString(SR.ID0192), nameof(name));
}
if (Value is JsonElement element && element.ValueKind == JsonValueKind.Object &&
@ -465,7 +465,7 @@ namespace OpenIddict.Abstractions
{
if (index < 0)
{
throw new ArgumentOutOfRangeException(nameof(index), SR.GetResourceString(SR.ID1192));
throw new ArgumentOutOfRangeException(nameof(index), SR.GetResourceString(SR.ID0193));
}
if (Value is string?[] array)
@ -547,7 +547,7 @@ namespace OpenIddict.Abstractions
value.WriteTo(writer);
break;
default: throw new InvalidOperationException(SR.GetResourceString(SR.ID1193));
default: throw new InvalidOperationException(SR.GetResourceString(SR.ID0194));
}
}
@ -680,7 +680,7 @@ namespace OpenIddict.Abstractions
writer.WriteEndArray();
break;
default: throw new InvalidOperationException(SR.GetResourceString(SR.ID1193));
default: throw new InvalidOperationException(SR.GetResourceString(SR.ID0194));
}
writer.Flush();

1174
src/OpenIddict.Abstractions/Resources/OpenIddictResources.resx

File diff suppressed because it is too large

238
src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.ar.xlf

@ -2,597 +2,597 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="ar" original="../OpenIddictResources.resx">
<body>
<trans-unit id="ID3000">
<trans-unit id="ID2000">
<source>The security token is missing.</source>
<target state="translated">رمز الأمان مفقود.</target>
<note />
</trans-unit>
<trans-unit id="ID3001">
<trans-unit id="ID2001">
<source>The specified authorization code is invalid.</source>
<target state="translated">رمز التفويض المحدد غير صالح.</target>
<note />
</trans-unit>
<trans-unit id="ID3002">
<trans-unit id="ID2002">
<source>The specified device code is invalid.</source>
<target state="translated">رمز الجهاز المحدد غير صالح.</target>
<note />
</trans-unit>
<trans-unit id="ID3003">
<trans-unit id="ID2003">
<source>The specified refresh token is invalid.</source>
<target state="translated">رمز التحديث المحدد غير صالح.</target>
<note />
</trans-unit>
<trans-unit id="ID3004">
<trans-unit id="ID2004">
<source>The specified token is invalid.</source>
<target state="translated">الرمز المحدد غير صالح.</target>
<note />
</trans-unit>
<trans-unit id="ID3005">
<trans-unit id="ID2005">
<source>The specified token is not an authorization code.</source>
<target state="translated">الرمز المحدد ليس رمز تفويض.</target>
<note />
</trans-unit>
<trans-unit id="ID3006">
<trans-unit id="ID2006">
<source>The specified token is not an device code.</source>
<target state="translated">الرمز المحدد ليس رمز جهاز.</target>
<note />
</trans-unit>
<trans-unit id="ID3007">
<trans-unit id="ID2007">
<source>The specified token is not a refresh token.</source>
<target state="translated">الرمز المحدد ليس رمز تحديث.</target>
<note />
</trans-unit>
<trans-unit id="ID3008">
<trans-unit id="ID2008">
<source>The specified token is not an access token.</source>
<target state="translated">الرمز المحدد ليس رمز وصول.</target>
<note />
</trans-unit>
<trans-unit id="ID3009">
<trans-unit id="ID2009">
<source>The specified identity token is invalid.</source>
<target state="translated">رمز الهوية المحدد غير صالح.</target>
<note />
</trans-unit>
<trans-unit id="ID3010">
<trans-unit id="ID2010">
<source>The specified authorization code has already been redeemed.</source>
<target state="translated">تم بالفعل استرداد رمز التفويض المحدد.</target>
<note />
</trans-unit>
<trans-unit id="ID3011">
<trans-unit id="ID2011">
<source>The specified device code has already been redeemed.</source>
<target state="translated">تم بالفعل استرداد رمز الجهاز المحدد.</target>
<note />
</trans-unit>
<trans-unit id="ID3012">
<trans-unit id="ID2012">
<source>The specified refresh token has already been redeemed.</source>
<target state="translated">تم بالفعل استرداد رمز التحديث المحدد.</target>
<note />
</trans-unit>
<trans-unit id="ID3013">
<trans-unit id="ID2013">
<source>The specified token has already been redeemed.</source>
<target state="translated">تم بالفعل استرداد الرمز المميز المحدد.</target>
<note />
</trans-unit>
<trans-unit id="ID3014">
<trans-unit id="ID2014">
<source>The authorization has not been granted yet by the end user.</source>
<target state="translated">لم يتم منح التفويض بعد من قبل المستخدم النهائي.</target>
<note />
</trans-unit>
<trans-unit id="ID3015">
<trans-unit id="ID2015">
<source>The authorization was denied by the end user.</source>
<target state="translated">تم رفض الإذن من قبل المستخدم.</target>
<note />
</trans-unit>
<trans-unit id="ID3016">
<trans-unit id="ID2016">
<source>The specified authorization code is no longer valid.</source>
<target state="translated">رمز التفويض المحدد لم يعد صالحًا.</target>
<note />
</trans-unit>
<trans-unit id="ID3017">
<trans-unit id="ID2017">
<source>The specified device code is no longer valid.</source>
<target state="translated">رمز الجهاز المحدد لم يعد صالحًا.</target>
<note />
</trans-unit>
<trans-unit id="ID3018">
<trans-unit id="ID2018">
<source>The specified refresh token is no longer valid.</source>
<target state="translated">لم يعد رمز التحديث المحدد صالحًا.</target>
<note />
</trans-unit>
<trans-unit id="ID3019">
<trans-unit id="ID2019">
<source>The specified token is no longer valid.</source>
<target state="translated">لم يعد الرمز المحدد صالحًا.</target>
<note />
</trans-unit>
<trans-unit id="ID3020">
<trans-unit id="ID2020">
<source>The authorization associated with the authorization code is no longer valid.</source>
<target state="translated">لم يعد التفويض المرتبط برمز التفويض صالحًا.</target>
<note />
</trans-unit>
<trans-unit id="ID3021">
<trans-unit id="ID2021">
<source>The authorization associated with the device code is no longer valid.</source>
<target state="translated">لم يعد التفويض المرتبط برمز الجهاز صالحًا.</target>
<note />
</trans-unit>
<trans-unit id="ID3022">
<trans-unit id="ID2022">
<source>The authorization associated with the refresh token is no longer valid.</source>
<target state="translated">لم يعد التفويض المرتبط برمز التحديث صالحًا.</target>
<note />
</trans-unit>
<trans-unit id="ID3023">
<trans-unit id="ID2023">
<source>The authorization associated with the token is no longer valid.</source>
<target state="translated">التفويض المرتبط بالرمز لم يعد صالحًا.</target>
<note />
</trans-unit>
<trans-unit id="ID3024">
<trans-unit id="ID2024">
<source>The token request was rejected by the authentication server.</source>
<target state="translated">تم رفض طلب الرمز المميز من قبل خادم المصادقة.</target>
<note />
</trans-unit>
<trans-unit id="ID3025">
<trans-unit id="ID2025">
<source>The user information access demand was rejected by the authentication server.</source>
<target state="translated">تم رفض طلب الوصول إلى معلومات المستخدم من قبل خادم المصادقة.</target>
<note />
</trans-unit>
<trans-unit id="ID3026">
<trans-unit id="ID2026">
<source>The specified user code is no longer valid.</source>
<target state="translated">رمز المستخدم المحدد لم يعد صالحًا.</target>
<note />
</trans-unit>
<trans-unit id="ID3028">
<trans-unit id="ID2028">
<source>The '{0}' parameter is not supported.</source>
<target state="translated">المعلمة '{0}' غير مدعومة.</target>
<note />
</trans-unit>
<trans-unit id="ID3029">
<trans-unit id="ID2029">
<source>The mandatory '{0}' parameter is missing.</source>
<target state="translated">المعلمة الإلزامية '{0}' مفقودة.</target>
<note />
</trans-unit>
<trans-unit id="ID3030">
<trans-unit id="ID2030">
<source>The '{0}' parameter must be a valid absolute URL.</source>
<target state="translated">يجب أن تكون المعلمة '{0}' رابط مطلق صالح.</target>
<note />
</trans-unit>
<trans-unit id="ID3031">
<trans-unit id="ID2031">
<source>The '{0}' parameter must not include a fragment.</source>
<target state="translated">يجب ألا تتضمن المعلمة '{0}' جزءًا.</target>
<note />
</trans-unit>
<trans-unit id="ID3032">
<trans-unit id="ID2032">
<source>The specified '{0}' is not supported.</source>
<target state="translated">'{0}' المحدد غير مدعوم.</target>
<note />
</trans-unit>
<trans-unit id="ID3033">
<trans-unit id="ID2033">
<source>The specified '{0}'/'{1}' combination is invalid.</source>
<target state="translated">مجموعة '{0}' / "{1}" المحددة غير صالحة.</target>
<note />
</trans-unit>
<trans-unit id="ID3034">
<trans-unit id="ID2034">
<source>The mandatory '{0}' scope is missing.</source>
<target state="translated">النطاق الإلزامي '{0}' مفقود.</target>
<note />
</trans-unit>
<trans-unit id="ID3035">
<trans-unit id="ID2035">
<source>The '{0}' scope is not allowed.</source>
<target state="translated">النطاق '{0}' غير مسموح به.</target>
<note />
</trans-unit>
<trans-unit id="ID3036">
<trans-unit id="ID2036">
<source>The client identifier cannot be null or empty.</source>
<target state="translated">لا يمكن أن يكون معرف العميل خالياً أو فارغاً.</target>
<note />
</trans-unit>
<trans-unit id="ID3037">
<trans-unit id="ID2037">
<source>The '{0}' parameter cannot be used without '{1}'.</source>
<target state="translated">لا يمكن استخدام المعلمة '{0}' بدون "{1}".</target>
<note />
</trans-unit>
<trans-unit id="ID3038">
<trans-unit id="ID2038">
<source>The status cannot be null or empty.</source>
<target state="translated">لا يمكن أن تكون الحالة فارغة أو فارغة.</target>
<note />
</trans-unit>
<trans-unit id="ID3039">
<trans-unit id="ID2039">
<source>Scopes cannot be null or empty.</source>
<target state="translated">لا يمكن أن تكون النطاقات فارغة أو فارغة.</target>
<note />
</trans-unit>
<trans-unit id="ID3040">
<trans-unit id="ID2040">
<source>The '{0}' and '{1}' parameters can only be used with a response type containing '{2}'.</source>
<target state="translated">لا يمكن استخدام المعلمات '{0}' و "{1}" إلا مع نوع استجابة يحتوي على "{2}".</target>
<note />
</trans-unit>
<trans-unit id="ID3041">
<trans-unit id="ID2041">
<source>The specified '{0}' is not allowed when using PKCE.</source>
<target state="translated">'{0}' المحدد غير مسموح به عند استخدام PKCE.</target>
<note />
</trans-unit>
<trans-unit id="ID3042">
<trans-unit id="ID2042">
<source>Scopes cannot contain spaces.</source>
<target state="translated">لا يمكن أن تحتوي النطاقات على مسافات.</target>
<note />
</trans-unit>
<trans-unit id="ID3043">
<trans-unit id="ID2043">
<source>The specified '{0}' is not valid for this client application.</source>
<target state="translated">'{0}' المحدد غير صالح لتطبيق العميل هذا.</target>
<note />
</trans-unit>
<trans-unit id="ID3044">
<trans-unit id="ID2044">
<source>The scope name cannot be null or empty.</source>
<target state="translated">لا يمكن أن يكون اسم النطاق فارغاً.</target>
<note />
</trans-unit>
<trans-unit id="ID3045">
<trans-unit id="ID2045">
<source>The scope name cannot contain spaces.</source>
<target state="translated">لا يمكن أن يحتوي اسم النطاق على مسافات.</target>
<note />
</trans-unit>
<trans-unit id="ID3046">
<trans-unit id="ID2046">
<source>This client application is not allowed to use the authorization endpoint.</source>
<target state="translated">تطبيق العميل هذا غير مسموح له باستخدام نقطة نهاية التفويض.</target>
<note />
</trans-unit>
<trans-unit id="ID3047">
<trans-unit id="ID2047">
<source>The client application is not allowed to use the authorization code flow.</source>
<target state="translated">لا يُسمح لتطبيق العميل باستخدام تدفق رمز التفويض.</target>
<note />
</trans-unit>
<trans-unit id="ID3048">
<trans-unit id="ID2048">
<source>The client application is not allowed to use the implicit flow.</source>
<target state="translated">لا يُسمح لتطبيق العميل باستخدام التدفق الضمني.</target>
<note />
</trans-unit>
<trans-unit id="ID3049">
<trans-unit id="ID2049">
<source>The client application is not allowed to use the hybrid flow.</source>
<target state="translated">لا يُسمح لتطبيق العميل باستخدام التدفق المختلط.</target>
<note />
</trans-unit>
<trans-unit id="ID3051">
<trans-unit id="ID2051">
<source>This client application is not allowed to use the specified scope.</source>
<target state="translated">تطبيق العميل هذا غير مسموح له باستخدام النطاق المحدد.</target>
<note />
</trans-unit>
<trans-unit id="ID3052">
<trans-unit id="ID2052">
<source>The specified '{0}' is invalid.</source>
<target state="translated">'{0}' المحدد غير صالح.</target>
<note />
</trans-unit>
<trans-unit id="ID3053">
<trans-unit id="ID2053">
<source>The '{0}' parameter is not valid for this client application.</source>
<target state="translated">المعلمة '{0}' غير صالحة لتطبيق العميل هذا.</target>
<note />
</trans-unit>
<trans-unit id="ID3054">
<trans-unit id="ID2054">
<source>The '{0}' parameter required for this client application is missing.</source>
<target state="translated">المعلمة '{0}' المطلوبة لتطبيق العميل هذا مفقودة.</target>
<note />
</trans-unit>
<trans-unit id="ID3055">
<trans-unit id="ID2055">
<source>The specified client credentials are invalid.</source>
<target state="translated">بيانات اعتماد العميل المحددة غير صالحة.</target>
<note />
</trans-unit>
<trans-unit id="ID3056">
<trans-unit id="ID2056">
<source>This client application is not allowed to use the device endpoint.</source>
<target state="translated">لا يُسمح لتطبيق العميل هذا باستخدام نقطة نهاية الجهاز.</target>
<note />
</trans-unit>
<trans-unit id="ID3057">
<trans-unit id="ID2057">
<source>The '{0}' and '{1}' parameters are required when using the client credentials grant.</source>
<target state="translated">معلمات '{0}' و "{1}" مطلوبة عند استخدام منح بيانات اعتماد العميل.</target>
<note />
</trans-unit>
<trans-unit id="ID3058">
<trans-unit id="ID2058">
<source>The '{0}' parameter is required when using the device code grant.</source>
<target state="translated">المعلمة '{0}' مطلوبة عند استخدام منحة رمز الجهاز.</target>
<note />
</trans-unit>
<trans-unit id="ID3059">
<trans-unit id="ID2059">
<source>The mandatory '{0}' and/or '{1}' parameters are missing.</source>
<target state="translated">معلمات '{0}' و / أو "{1}" الإلزامية مفقودة.</target>
<note />
</trans-unit>
<trans-unit id="ID3060">
<trans-unit id="ID2060">
<source>A scope with the same name already exists.</source>
<target state="translated">يوجد نطاق بنفس الإسم.</target>
<note />
</trans-unit>
<trans-unit id="ID3063">
<trans-unit id="ID2063">
<source>This client application is not allowed to use the token endpoint.</source>
<target state="translated">لا يُسمح لتطبيق العميل هذا باستخدام نقطة نهاية الرمز المميز.</target>
<note />
</trans-unit>
<trans-unit id="ID3064">
<trans-unit id="ID2064">
<source>This client application is not allowed to use the specified grant type.</source>
<target state="translated">لا يُسمح لتطبيق العميل هذا باستخدام نوع المنحة المحدد.</target>
<note />
</trans-unit>
<trans-unit id="ID3065">
<trans-unit id="ID2065">
<source>The client application is not allowed to use the '{0}' scope.</source>
<target state="translated">غير مسموح لتطبيق العميل باستخدام النطاق '{0}'.</target>
<note />
</trans-unit>
<trans-unit id="ID3066">
<trans-unit id="ID2066">
<source>The specified authorization code cannot be used without sending a client identifier.</source>
<target state="translated">لا يمكن استخدام رمز التفويض المحدد بدون إرسال معرف العميل.</target>
<note />
</trans-unit>
<trans-unit id="ID3067">
<trans-unit id="ID2067">
<source>The specified device code cannot be used without sending a client identifier.</source>
<target state="translated">لا يمكن استخدام رمز الجهاز المحدد بدون إرسال معرف العميل.</target>
<note />
</trans-unit>
<trans-unit id="ID3068">
<trans-unit id="ID2068">
<source>The specified refresh token cannot be used without sending a client identifier.</source>
<target state="translated">لا يمكن استخدام رمز التحديث المحدد بدون إرسال معرف العميل.</target>
<note />
</trans-unit>
<trans-unit id="ID3069">
<trans-unit id="ID2069">
<source>The specified authorization code cannot be used by this client application.</source>
<target state="translated">لا يمكن استخدام رمز التفويض المحدد بواسطة تطبيق العميل هذا.</target>
<note />
</trans-unit>
<trans-unit id="ID3070">
<trans-unit id="ID2070">
<source>The specified device code cannot be used by this client application.</source>
<target state="translated">لا يمكن استخدام رمز الجهاز المحدد بواسطة تطبيق العميل هذا.</target>
<note />
</trans-unit>
<trans-unit id="ID3071">
<trans-unit id="ID2071">
<source>The specified refresh token cannot be used by this client application.</source>
<target state="translated">لا يمكن استخدام رمز التحديث المحدد بواسطة تطبيق العميل هذا.</target>
<note />
</trans-unit>
<trans-unit id="ID3072">
<trans-unit id="ID2072">
<source>The specified '{0}' parameter doesn't match the client redirection address the authorization code was initially sent to.</source>
<target state="translated">المعلمة '{0}' المحددة لا تطابق عنوان إعادة توجيه العميل الذي تم إرسال رمز التفويض إليه في البداية.</target>
<note />
</trans-unit>
<trans-unit id="ID3073">
<trans-unit id="ID2073">
<source>The '{0}' parameter cannot be used when no '{1}' was specified in the authorization request.</source>
<target state="translated">لا يمكن استخدام المعلمة '{0}' في حالة عدم تحديد "{1}" في طلب التفويض.</target>
<note />
</trans-unit>
<trans-unit id="ID3074">
<trans-unit id="ID2074">
<source>The '{0}' parameter is not valid in this context.</source>
<target state="translated">المعلمة '{0}' غير صالحة في هذا السياق.</target>
<note />
</trans-unit>
<trans-unit id="ID3075">
<trans-unit id="ID2075">
<source>This client application is not allowed to use the introspection endpoint.</source>
<target state="translated">لا يُسمح لتطبيق العميل هذا باستخدام نقطة نهاية الاستبطان.</target>
<note />
</trans-unit>
<trans-unit id="ID3076">
<trans-unit id="ID2076">
<source>The specified token cannot be introspected.</source>
<target state="translated">لا يمكن استبطان الرمز المميز المحدد.</target>
<note />
</trans-unit>
<trans-unit id="ID3077">
<trans-unit id="ID2077">
<source>The client application is not allowed to introspect the specified token.</source>
<target state="translated">لا يُسمح لتطبيق العميل بفحص الرمز المميز المحدد.</target>
<note />
</trans-unit>
<trans-unit id="ID3078">
<trans-unit id="ID2078">
<source>This client application is not allowed to use the revocation endpoint.</source>
<target state="translated">لا يُسمح لتطبيق العميل هذا باستخدام نقطة نهاية الإبطال.</target>
<note />
</trans-unit>
<trans-unit id="ID3079">
<trans-unit id="ID2079">
<source>This token cannot be revoked.</source>
<target state="translated">لا يمكن إبطال هذا الرمز المميز.</target>
<note />
</trans-unit>
<trans-unit id="ID3080">
<trans-unit id="ID2080">
<source>The client application is not allowed to revoke the specified token.</source>
<target state="translated">لا يُسمح لتطبيق العميل بإلغاء الرمز المميز المحدد.</target>
<note />
</trans-unit>
<trans-unit id="ID3081">
<trans-unit id="ID2081">
<source>The mandatory '{0}' header is missing.</source>
<target state="translated">header '{0}' الإلزامي مفقود.</target>
<note />
</trans-unit>
<trans-unit id="ID3082">
<trans-unit id="ID2082">
<source>The specified '{0}' header is invalid.</source>
<target state="translated">header '{0}' المحدد غير صالح.</target>
<note />
</trans-unit>
<trans-unit id="ID3083">
<trans-unit id="ID2083">
<source>This server only accepts HTTPS requests.</source>
<target state="translated">لا يقبل هذا الخادم سوى طلبات HTTPS.</target>
<note />
</trans-unit>
<trans-unit id="ID3084">
<trans-unit id="ID2084">
<source>The specified HTTP method is not valid.</source>
<target state="translated">طريقة HTTP المحددة غير صالحة.</target>
<note />
</trans-unit>
<trans-unit id="ID3085">
<trans-unit id="ID2085">
<source>A token with the same reference identifier already exists.</source>
<target state="translated">الرمز بنفس مرجع المعرف موجود مسبقاً.</target>
<note />
</trans-unit>
<trans-unit id="ID3086">
<trans-unit id="ID2086">
<source>The token type cannot be null or empty.</source>
<target state="translated">لا يمكن أن يكون نوع الرمز المميز خالياً أو فارغاً.</target>
<note />
</trans-unit>
<trans-unit id="ID3087">
<trans-unit id="ID2087">
<source>Multiple client credentials cannot be specified.</source>
<target state="translated">لا يمكن تحديد بيانات اعتماد متعددة للعملاء.</target>
<note />
</trans-unit>
<trans-unit id="ID3088">
<trans-unit id="ID2088">
<source>The issuer associated to the specified token is not valid.</source>
<target state="translated">المُصدر المرتبط بالرمز المحدد غير صالح.</target>
<note />
</trans-unit>
<trans-unit id="ID3089">
<trans-unit id="ID2089">
<source>The specified token is not of the expected type.</source>
<target state="translated">الرمز المميز المحدد ليس من النوع المتوقع.</target>
<note />
</trans-unit>
<trans-unit id="ID3090">
<trans-unit id="ID2090">
<source>The signing key associated to the specified token was not found.</source>
<target state="translated">لم يتم العثور على مفتاح التوقيع المرتبط بالرمز المميز المحدد.</target>
<note />
</trans-unit>
<trans-unit id="ID3091">
<trans-unit id="ID2091">
<source>The signature associated to the specified token is not valid.</source>
<target state="translated">التوقيع المرتبط بالرمز المحدد غير صالح.</target>
<note />
</trans-unit>
<trans-unit id="ID3092">
<trans-unit id="ID2092">
<source>This resource server is currently unavailable.</source>
<target state="translated">خادم الموارد غير متوفر حالياّ.</target>
<note />
</trans-unit>
<trans-unit id="ID3093">
<trans-unit id="ID2093">
<source>The specified token doesn't contain any audience.</source>
<target state="translated">لا يحتوي الرمز المميز المحدد على أي جمهور.</target>
<note />
</trans-unit>
<trans-unit id="ID3094">
<trans-unit id="ID2094">
<source>The specified token cannot be used with this resource server.</source>
<target state="translated">لا يمكن استخدام الرمز المميز مع خادم المورد هذا.</target>
<note />
</trans-unit>
<trans-unit id="ID3095">
<trans-unit id="ID2095">
<source>The user represented by the token is not allowed to perform the requested action.</source>
<target state="translated">لا يُسمح للمستخدم الذي يمثله الرمز المميز بتنفيذ الإجراء المطلوب.</target>
<note />
</trans-unit>
<trans-unit id="ID3096">
<trans-unit id="ID2096">
<source>No issuer could be found in the server configuration.</source>
<target state="translated">تعذر العثور على أي مُصدر في إعدادات الخادم.</target>
<note />
</trans-unit>
<trans-unit id="ID3097">
<trans-unit id="ID2097">
<source>A server configuration containing an invalid issuer was returned.</source>
<target state="translated">تم إرجاع إعدادات خادم يحتوي على مُصدر غير صالح.</target>
<note />
</trans-unit>
<trans-unit id="ID3098">
<trans-unit id="ID2098">
<source>The issuer returned in the server configuration is not valid.</source>
<target state="translated">المُصدر الذي تم إرجاعه في إعدادات الخادم غير صالح.</target>
<note />
</trans-unit>
<trans-unit id="ID3099">
<trans-unit id="ID2099">
<source>No JWKS endpoint could be found in the server configuration.</source>
<target state="translated">تعذر العثور على نقطة نهاية JWKS في إعدادات الخادم.</target>
<note />
</trans-unit>
<trans-unit id="ID3100">
<trans-unit id="ID2100">
<source>A server configuration containing an invalid JWKS endpoint URL was returned.</source>
<target state="translated">تم إرجاع إعدادات خادم يحتوي على رابط غير صالح لنقطة نهاية JWKS.</target>
<note />
</trans-unit>
<trans-unit id="ID3101">
<trans-unit id="ID2101">
<source>A server configuration containing an invalid introspection endpoint URL was returned.</source>
<target state="translated">تم إرجاع إعدادات خادم يحتوي على رابط غير صالح لنقطة نهاية الاستبطان.</target>
<note />
</trans-unit>
<trans-unit id="ID3102">
<trans-unit id="ID2102">
<source>The JWKS document didn't contain a valid '{0}' node with at least one key.</source>
<target state="translated">لا يحتوي مستند JWKS على عقدة '{0}' صالحة بمفتاح واحد على الأقل.</target>
<note />
</trans-unit>
<trans-unit id="ID3103">
<trans-unit id="ID2103">
<source>A JWKS response containing an unsupported key was returned.</source>
<target state="translated">تم إرجاع استجابة JWKS تحتوي على مفتاح غير مدعوم.</target>
<note />
</trans-unit>
<trans-unit id="ID3104">
<trans-unit id="ID2104">
<source>A JWKS response containing an invalid key was returned.</source>
<target state="translated">تم إرجاع استجابة JWKS تحتوي على مفتاح غير صالح.</target>
<note />
</trans-unit>
<trans-unit id="ID3105">
<trans-unit id="ID2105">
<source>The mandatory '{0}' parameter couldn't be found in the introspection response.</source>
<target state="translated">لا يمكن العثور على المعلمة '{0}' الإلزامية في استجابة التأمل.</target>
<note />
</trans-unit>
<trans-unit id="ID3106">
<trans-unit id="ID2106">
<source>The token was rejected by the remote authentication server.</source>
<target state="translated">تم رفض الرمز المميز بواسطة خادم المصادقة عن بُعد.</target>
<note />
</trans-unit>
<trans-unit id="ID3107">
<trans-unit id="ID2107">
<source>The '{0}' claim is malformed or isn't of the expected type.</source>
<target state="translated">المطالبة '{0}' مكتوبة بشكل غير صحيح أو أنها ليست من النوع المتوقع.</target>
<note />
</trans-unit>
<trans-unit id="ID3108">
<trans-unit id="ID2108">
<source>An introspection response containing a malformed issuer was returned.</source>
<target state="translated">تم إرجاع استجابة استبطان تحتوي على مُصدر تالف.</target>
<note />
</trans-unit>
<trans-unit id="ID3109">
<trans-unit id="ID2109">
<source>The issuer returned in the introspection response is not valid.</source>
<target state="translated">المُصدر الذي تم إرجاعه في استجابة التأمل غير صالح.</target>
<note />
</trans-unit>
<trans-unit id="ID3110">
<trans-unit id="ID2110">
<source>The type of the introspected token doesn't match the expected type.</source>
<target state="translated">لا يتطابق نوع الرمز المميز الذي تم استبطانه مع النوع المتوقع.</target>
<note />
</trans-unit>
<trans-unit id="ID3111">
<trans-unit id="ID2111">
<source>An application with the same client identifier already exists.</source>
<target state="translated">التطبيق بنفس معرف العميل موجود مسبقاً.</target>
<note />
</trans-unit>
<trans-unit id="ID3112">
<trans-unit id="ID2112">
<source>Only confidential, hybrid or public applications are supported by the default application manager.</source>
<target state="translated">يتم دعم التطبيقات السرية أو الهجينة أو العامة فقط من قبل مدير التطبيق الافتراضي.</target>
<note />
</trans-unit>
<trans-unit id="ID3113">
<trans-unit id="ID2113">
<source>The client secret cannot be null or empty for a confidential application.</source>
<target state="translated">لا يمكن أن يكون سر العميل خالياً أو فارغاً لتطبيق سري.</target>
<note />
</trans-unit>
<trans-unit id="ID3114">
<trans-unit id="ID2114">
<source>A client secret cannot be associated with a public application.</source>
<target state="translated">لا يمكن ربط سر العميل بتطبيق عام.</target>
<note />
</trans-unit>
<trans-unit id="ID3115">
<trans-unit id="ID2115">
<source>Callback URLs cannot contain a fragment.</source>
<target state="translated">لا يمكن أن تحتوي روابط معاودة الاتصال على جزء.</target>
<note />
</trans-unit>
<trans-unit id="ID3116">
<trans-unit id="ID2116">
<source>The authorization type cannot be null or empty.</source>
<target state="translated">لا يمكن أن يكون نوع التفويض خالياً أو فارغاً.</target>
<note />
</trans-unit>
<trans-unit id="ID3117">
<trans-unit id="ID2117">
<source>The specified authorization type is not supported by the default token manager.</source>
<target state="translated">نوع التفويض المحدد غير مدعوم من قبل مدير الرمز المميز الافتراضي.</target>
<note />
</trans-unit>
<trans-unit id="ID3118">
<trans-unit id="ID2118">
<source>The client type cannot be null or empty.</source>
<target state="translated">لا يمكن أن يكون نوع العميل خالياً أو فارغاً.</target>
<note />
</trans-unit>
<trans-unit id="ID3119">
<trans-unit id="ID2119">
<source>Callback URLs cannot be null or empty.</source>
<target state="translated">لا يمكن أن تكون روابط معاودة الاتصال خالية أو فارغة.</target>
<note />
</trans-unit>
<trans-unit id="ID3120">
<trans-unit id="ID2120">
<source>Callback URLs must be valid absolute URLs.</source>
<target state="translated">روابط معاودة الاتصال لابد أن تكون روابط مطلقة صالحة.</target>
<note />
</trans-unit>
<trans-unit id="ID9000">
<trans-unit id="ID8000">
<source>Removes orphaned tokens and authorizations from the database.</source>
<target state="translated">إزالة الرموز المميزة والتراخيص المعزولة من قاعدة البيانات.</target>
<note />
</trans-unit>
<trans-unit id="ID9001">
<trans-unit id="ID8001">
<source>Starts the scheduled task at regular intervals.</source>
<target state="translated">تبدأ المهمة المجدولة على فترات منتظمة.</target>
<note />

238
src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.de.xlf

@ -2,597 +2,597 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="de" original="../OpenIddictResources.resx">
<body>
<trans-unit id="ID3000">
<trans-unit id="ID2000">
<source>The security token is missing.</source>
<target state="translated">Der Security-Token fehlt.</target>
<note />
</trans-unit>
<trans-unit id="ID3001">
<trans-unit id="ID2001">
<source>The specified authorization code is invalid.</source>
<target state="translated">Der angegebene Authorisierungscode ist ungültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3002">
<trans-unit id="ID2002">
<source>The specified device code is invalid.</source>
<target state="translated">Der angegebene Gerätecode ist ungültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3003">
<trans-unit id="ID2003">
<source>The specified refresh token is invalid.</source>
<target state="translated">Der angegebene Refresh-Token ist ungültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3004">
<trans-unit id="ID2004">
<source>The specified token is invalid.</source>
<target state="translated">Der angegebene Token ist ungültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3005">
<trans-unit id="ID2005">
<source>The specified token is not an authorization code.</source>
<target state="translated">Der angegebene Token ist kein Authorisierungscode.</target>
<note />
</trans-unit>
<trans-unit id="ID3006">
<trans-unit id="ID2006">
<source>The specified token is not an device code.</source>
<target state="translated">Der angegebene Token ist kein Gerätecode.</target>
<note />
</trans-unit>
<trans-unit id="ID3007">
<trans-unit id="ID2007">
<source>The specified token is not a refresh token.</source>
<target state="translated">Der angegebene Token ist kein Refresh-Token.</target>
<note />
</trans-unit>
<trans-unit id="ID3008">
<trans-unit id="ID2008">
<source>The specified token is not an access token.</source>
<target state="translated">Der angegebene Token ist kein Authorisierungscode.</target>
<note />
</trans-unit>
<trans-unit id="ID3009">
<trans-unit id="ID2009">
<source>The specified identity token is invalid.</source>
<target state="translated">Der angegebene Token ist kein Identity Token.</target>
<note />
</trans-unit>
<trans-unit id="ID3010">
<trans-unit id="ID2010">
<source>The specified authorization code has already been redeemed.</source>
<target state="translated">Der angegebene Autorisierungscode wurde bereits eingelöst.</target>
<note />
</trans-unit>
<trans-unit id="ID3011">
<trans-unit id="ID2011">
<source>The specified device code has already been redeemed.</source>
<target state="translated">Der angegebene Gerätecode wurde bereits eingelöst.</target>
<note />
</trans-unit>
<trans-unit id="ID3012">
<trans-unit id="ID2012">
<source>The specified refresh token has already been redeemed.</source>
<target state="translated">Der angegebene Refresh-Token wurde bereits eingelöst.</target>
<note />
</trans-unit>
<trans-unit id="ID3013">
<trans-unit id="ID2013">
<source>The specified token has already been redeemed.</source>
<target state="translated">Der angegebene Token wurde bereits eingelöst.</target>
<note />
</trans-unit>
<trans-unit id="ID3014">
<trans-unit id="ID2014">
<source>The authorization has not been granted yet by the end user.</source>
<target state="translated">Die Freigabe wurde vom Endbenutzer noch nicht erteilt.</target>
<note />
</trans-unit>
<trans-unit id="ID3015">
<trans-unit id="ID2015">
<source>The authorization was denied by the end user.</source>
<target state="translated">Die Berechtigung wurde vom Endbenutzer verweigert.</target>
<note />
</trans-unit>
<trans-unit id="ID3016">
<trans-unit id="ID2016">
<source>The specified authorization code is no longer valid.</source>
<target state="translated">Der angegebene Autorisierungscode ist nicht mehr gültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3017">
<trans-unit id="ID2017">
<source>The specified device code is no longer valid.</source>
<target state="translated">Der angegebene Gerätecode ist nicht mehr gültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3018">
<trans-unit id="ID2018">
<source>The specified refresh token is no longer valid.</source>
<target state="translated">Der angegebene Refresh-Token ist nicht mehr gültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3019">
<trans-unit id="ID2019">
<source>The specified token is no longer valid.</source>
<target state="translated">Der angegebene Token ist nicht mehr gültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3020">
<trans-unit id="ID2020">
<source>The authorization associated with the authorization code is no longer valid.</source>
<target state="translated">Die mit dem Autorisierungscode verbundene Autorisierung ist nicht mehr gültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3021">
<trans-unit id="ID2021">
<source>The authorization associated with the device code is no longer valid.</source>
<target state="translated">Die mit dem Gerätecode verbundene Autorisierung ist nicht mehr gültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3022">
<trans-unit id="ID2022">
<source>The authorization associated with the refresh token is no longer valid.</source>
<target state="translated">Die mit dem Refresh-Token verbundene Autorisierung ist nicht mehr gültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3023">
<trans-unit id="ID2023">
<source>The authorization associated with the token is no longer valid.</source>
<target state="translated">Die mit dem Token verbundene Autorisierung ist nicht mehr gültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3024">
<trans-unit id="ID2024">
<source>The token request was rejected by the authentication server.</source>
<target state="translated">TDie Token-Anfrage wurde vom Authentifizierungsserver zurückgewiesen.</target>
<note />
</trans-unit>
<trans-unit id="ID3025">
<trans-unit id="ID2025">
<source>The user information access demand was rejected by the authentication server.</source>
<target state="translated">Die Anforderung für den Zugriff auf Benutzerinformationen wurde vom Authentifizierungsserver abgelehnt.</target>
<note />
</trans-unit>
<trans-unit id="ID3026">
<trans-unit id="ID2026">
<source>The specified user code is no longer valid.</source>
<target state="translated">Der angegebene Benutzercode ist nicht mehr gültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3028">
<trans-unit id="ID2028">
<source>The '{0}' parameter is not supported.</source>
<target state="translated">Der Parameter '{0}' wird nicht unterstützt.</target>
<note />
</trans-unit>
<trans-unit id="ID3029">
<trans-unit id="ID2029">
<source>The mandatory '{0}' parameter is missing.</source>
<target state="translated">Der verpflichtende Parameter '{0}' fehlt.</target>
<note />
</trans-unit>
<trans-unit id="ID3030">
<trans-unit id="ID2030">
<source>The '{0}' parameter must be a valid absolute URL.</source>
<target state="translated">Der Parameter '{0}' muss eine gültige, absolute URL sein.</target>
<note />
</trans-unit>
<trans-unit id="ID3031">
<trans-unit id="ID2031">
<source>The '{0}' parameter must not include a fragment.</source>
<target state="translated">Der Parameter '{0}' darf kein Fragment enthalten.</target>
<note />
</trans-unit>
<trans-unit id="ID3032">
<trans-unit id="ID2032">
<source>The specified '{0}' is not supported.</source>
<target state="translated">Der Parameter '{0}' wird nicht unterstützt.</target>
<note />
</trans-unit>
<trans-unit id="ID3033">
<trans-unit id="ID2033">
<source>The specified '{0}'/'{1}' combination is invalid.</source>
<target state="translated">Die angegebene Kombination '{0}'/'{1}' ist ungültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3034">
<trans-unit id="ID2034">
<source>The mandatory '{0}' scope is missing.</source>
<target state="translated">Der verpflichtende Scope '{0}' fehlt.</target>
<note />
</trans-unit>
<trans-unit id="ID3035">
<trans-unit id="ID2035">
<source>The '{0}' scope is not allowed.</source>
<target state="translated">Der Scope '{0}' ist nicht erlaubt.</target>
<note />
</trans-unit>
<trans-unit id="ID3036">
<trans-unit id="ID2036">
<source>The client identifier cannot be null or empty.</source>
<target state="translated">Der Client-Identifier darf nicht null oder leer sein.</target>
<note />
</trans-unit>
<trans-unit id="ID3037">
<trans-unit id="ID2037">
<source>The '{0}' parameter cannot be used without '{1}'.</source>
<target state="translated">Der Parameter '{0}' darf nicht ohne '{1}' benutzt werden.</target>
<note />
</trans-unit>
<trans-unit id="ID3038">
<trans-unit id="ID2038">
<source>The status cannot be null or empty.</source>
<target state="translated">Der Statuscode darf nicht null oder leer sein.</target>
<note />
</trans-unit>
<trans-unit id="ID3039">
<trans-unit id="ID2039">
<source>Scopes cannot be null or empty.</source>
<target state="translated">Scopes dürfen darf nicht null oder leer sein.</target>
<note />
</trans-unit>
<trans-unit id="ID3040">
<trans-unit id="ID2040">
<source>The '{0}' and '{1}' parameters can only be used with a response type containing '{2}'.</source>
<target state="translated">Die Parameter '{0}' und '{1}' können nur mit einem Response-Typ benutzt werden, der '{2}' enthält.</target>
<note />
</trans-unit>
<trans-unit id="ID3041">
<trans-unit id="ID2041">
<source>The specified '{0}' is not allowed when using PKCE.</source>
<target state="translated">Der Parameter '{0}' ist bei der Verwendung von PKCE nicht erlaubt.</target>
<note />
</trans-unit>
<trans-unit id="ID3042">
<trans-unit id="ID2042">
<source>Scopes cannot contain spaces.</source>
<target state="translated">Scopes dürfen keine Leerzeichen enthalten.</target>
<note />
</trans-unit>
<trans-unit id="ID3043">
<trans-unit id="ID2043">
<source>The specified '{0}' is not valid for this client application.</source>
<target state="translated">Der angegebene Parameter '{0}' ist für diese Client-Anwendung nicht gültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3044">
<trans-unit id="ID2044">
<source>The scope name cannot be null or empty.</source>
<target state="translated">Der Scope-Name darf nicht null oder leer sein.</target>
<note />
</trans-unit>
<trans-unit id="ID3045">
<trans-unit id="ID2045">
<source>The scope name cannot contain spaces.</source>
<target state="translated">Der Scope-Name darf keine Leerzeichen enthalten.</target>
<note />
</trans-unit>
<trans-unit id="ID3046">
<trans-unit id="ID2046">
<source>This client application is not allowed to use the authorization endpoint.</source>
<target state="translated">Die Client-Anwendung darf den Autorisierungsendpunkt nicht verwenden.</target>
<note />
</trans-unit>
<trans-unit id="ID3047">
<trans-unit id="ID2047">
<source>The client application is not allowed to use the authorization code flow.</source>
<target state="translated">Die Client-Anwendung darf den Authorization Code Flow nicht verwenden.</target>
<note />
</trans-unit>
<trans-unit id="ID3048">
<trans-unit id="ID2048">
<source>The client application is not allowed to use the implicit flow.</source>
<target state="translated">Die Client-Anwendung darf den Implicit Flow nicht verwenden.</target>
<note />
</trans-unit>
<trans-unit id="ID3049">
<trans-unit id="ID2049">
<source>The client application is not allowed to use the hybrid flow.</source>
<target state="translated">Die Client-Anwendung darf den Hybrid Flow nicht verwenden.</target>
<note />
</trans-unit>
<trans-unit id="ID3051">
<trans-unit id="ID2051">
<source>This client application is not allowed to use the specified scope.</source>
<target state="translated">Die Client-Anwendung darf den angegebenen Scope nicht verwenden.</target>
<note />
</trans-unit>
<trans-unit id="ID3052">
<trans-unit id="ID2052">
<source>The specified '{0}' is invalid.</source>
<target state="translated">Der angegebene Paramter '{0}' ist ungültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3053">
<trans-unit id="ID2053">
<source>The '{0}' parameter is not valid for this client application.</source>
<target state="translated">Der Parameter '{0}' ist für diese Client-Anwendung nicht gültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3054">
<trans-unit id="ID2054">
<source>The '{0}' parameter required for this client application is missing.</source>
<target state="translated">Der für diese Client-Anwendung erforderliche Parameter '{0}' fehlt.</target>
<note />
</trans-unit>
<trans-unit id="ID3055">
<trans-unit id="ID2055">
<source>The specified client credentials are invalid.</source>
<target state="translated">Die angegebenen Client Credentials sind ungültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3056">
<trans-unit id="ID2056">
<source>This client application is not allowed to use the device endpoint.</source>
<target state="translated">Diese Client-Anwendung darf den Device Endpoint nicht verwenden.</target>
<note />
</trans-unit>
<trans-unit id="ID3057">
<trans-unit id="ID2057">
<source>The '{0}' and '{1}' parameters are required when using the client credentials grant.</source>
<target state="translated">Die Parameter '{0}' und '{1}' sind erforderlich, wenn der Client Credentials Grant verwendet wird.</target>
<note />
</trans-unit>
<trans-unit id="ID3058">
<trans-unit id="ID2058">
<source>The '{0}' parameter is required when using the device code grant.</source>
<target state="translated">Der Parameter '{0}' ist erforderlich, wenn der Device Code Grant verwendet wird.</target>
<note />
</trans-unit>
<trans-unit id="ID3059">
<trans-unit id="ID2059">
<source>The mandatory '{0}' and/or '{1}' parameters are missing.</source>
<target state="translated">Die verpflichtenden Parameter '{0}' und/oder '{1}' fehlen.</target>
<note />
</trans-unit>
<trans-unit id="ID3060">
<trans-unit id="ID2060">
<source>A scope with the same name already exists.</source>
<target state="translated">Ein Scope mit dem gleichen Namen existiert bereits.</target>
<note />
</trans-unit>
<trans-unit id="ID3063">
<trans-unit id="ID2063">
<source>This client application is not allowed to use the token endpoint.</source>
<target state="translated">Die Client-Anwendung darf den Token-Endpoint nicht verwenden..</target>
<note />
</trans-unit>
<trans-unit id="ID3064">
<trans-unit id="ID2064">
<source>This client application is not allowed to use the specified grant type.</source>
<target state="translated">Diese Client-Anwendung darf den angegebenen Grant Type nicht verwenden.</target>
<note />
</trans-unit>
<trans-unit id="ID3065">
<trans-unit id="ID2065">
<source>The client application is not allowed to use the '{0}' scope.</source>
<target state="translated">Diese Client-Anwendung darf den '{0}' Scope nicht verwenden.</target>
<note />
</trans-unit>
<trans-unit id="ID3066">
<trans-unit id="ID2066">
<source>The specified authorization code cannot be used without sending a client identifier.</source>
<target state="translated">Der angegebene Autorisierungscode kann nicht verwendet werden, ohne eine Client-Kennung zu senden.</target>
<note />
</trans-unit>
<trans-unit id="ID3067">
<trans-unit id="ID2067">
<source>The specified device code cannot be used without sending a client identifier.</source>
<target state="translated">Der angegebene Gerätecode kann nicht verwendet werden, ohne eine Client-Kennung zu senden.</target>
<note />
</trans-unit>
<trans-unit id="ID3068">
<trans-unit id="ID2068">
<source>The specified refresh token cannot be used without sending a client identifier.</source>
<target state="translated">Das angegebene Refresh-Token kann nicht verwendet werden, ohne eine Client-Kennung zu senden.</target>
<note />
</trans-unit>
<trans-unit id="ID3069">
<trans-unit id="ID2069">
<source>The specified authorization code cannot be used by this client application.</source>
<target state="translated">Der angegebene Autorisierungscode kann von dieser Client-Anwendung nicht verwendet werden.</target>
<note />
</trans-unit>
<trans-unit id="ID3070">
<trans-unit id="ID2070">
<source>The specified device code cannot be used by this client application.</source>
<target state="translated">Der angegebene Gerätecode kann von dieser Client-Anwendung nicht verwendet werden.</target>
<note />
</trans-unit>
<trans-unit id="ID3071">
<trans-unit id="ID2071">
<source>The specified refresh token cannot be used by this client application.</source>
<target state="translated">Der angegebene Refresh-Token kann von dieser Client-Anwendung nicht verwendet werden.</target>
<note />
</trans-unit>
<trans-unit id="ID3072">
<trans-unit id="ID2072">
<source>The specified '{0}' parameter doesn't match the client redirection address the authorization code was initially sent to.</source>
<target state="translated">Der angegebene '{0}'-Parameter stimmt nicht mit der Redirect-URL des Clients überein, an die der Autorisierungscode ursprünglich gesendet wurde.</target>
<note />
</trans-unit>
<trans-unit id="ID3073">
<trans-unit id="ID2073">
<source>The '{0}' parameter cannot be used when no '{1}' was specified in the authorization request.</source>
<target state="translated">Der Parameter '{0}' kann nicht verwendet werden, wenn im Authorization Request kein '{1}' angegeben wurde.</target>
<note />
</trans-unit>
<trans-unit id="ID3074">
<trans-unit id="ID2074">
<source>The '{0}' parameter is not valid in this context.</source>
<target state="translated">Der Parameter '{0}' ist in diesem Kontext ungültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3075">
<trans-unit id="ID2075">
<source>This client application is not allowed to use the introspection endpoint.</source>
<target state="translated">Diese Client-Anwendung darf den Introspection-Endpoint nicht verwenden.</target>
<note />
</trans-unit>
<trans-unit id="ID3076">
<trans-unit id="ID2076">
<source>The specified token cannot be introspected.</source>
<target state="translated">Auf dem angegebenen Token kann kann keine Selbstprüfung durchgeführt werden.</target>
<note />
</trans-unit>
<trans-unit id="ID3077">
<trans-unit id="ID2077">
<source>The client application is not allowed to introspect the specified token.</source>
<target state="translated">Die Client-Anwendung ist nicht zur Selbstprüfung des angegebenen Tokens berechtigt.</target>
<note />
</trans-unit>
<trans-unit id="ID3078">
<trans-unit id="ID2078">
<source>This client application is not allowed to use the revocation endpoint.</source>
<target state="translated">Die Client-Anwendung ist zur Benutzung des Revocation-Endpoints nicht berechtigt.</target>
<note />
</trans-unit>
<trans-unit id="ID3079">
<trans-unit id="ID2079">
<source>This token cannot be revoked.</source>
<target state="translated">Dieser Token kann nicht widerrufen werden.</target>
<note />
</trans-unit>
<trans-unit id="ID3080">
<trans-unit id="ID2080">
<source>The client application is not allowed to revoke the specified token.</source>
<target state="translated">Die Client-Anwendung darf den angegebenen Token nicht widerrufen.</target>
<note />
</trans-unit>
<trans-unit id="ID3081">
<trans-unit id="ID2081">
<source>The mandatory '{0}' header is missing.</source>
<target state="translated">The mandatory '{0}' header is missing.</target>
<note />
</trans-unit>
<trans-unit id="ID3082">
<trans-unit id="ID2082">
<source>The specified '{0}' header is invalid.</source>
<target state="translated">Der verpflichtende '{0}'-Header fehlt.</target>
<note />
</trans-unit>
<trans-unit id="ID3083">
<trans-unit id="ID2083">
<source>This server only accepts HTTPS requests.</source>
<target state="translated">Der Server akzeptiert nur Anfragen über HTTPS.</target>
<note />
</trans-unit>
<trans-unit id="ID3084">
<trans-unit id="ID2084">
<source>The specified HTTP method is not valid.</source>
<target state="translated">Die angegebene HTTP-Methode ist ungültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3085">
<trans-unit id="ID2085">
<source>A token with the same reference identifier already exists.</source>
<target state="translated">Ein Token mit dem gleichen Referenzbezeichner existiert bereits.</target>
<note />
</trans-unit>
<trans-unit id="ID3086">
<trans-unit id="ID2086">
<source>The token type cannot be null or empty.</source>
<target state="translated">Der Tokentyp kann nicht null oder leer sein.</target>
<note />
</trans-unit>
<trans-unit id="ID3087">
<trans-unit id="ID2087">
<source>Multiple client credentials cannot be specified.</source>
<target state="translated">Mehrere Client Credentials können nicht angegeben werden.</target>
<note />
</trans-unit>
<trans-unit id="ID3088">
<trans-unit id="ID2088">
<source>The issuer associated to the specified token is not valid.</source>
<target state="translated">Der Issuer, der dem angegebenen Token zugeordnet ist, ist nicht gültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3089">
<trans-unit id="ID2089">
<source>The specified token is not of the expected type.</source>
<target state="translated">Der angegebene Token hat nicht den erwarteten Typ.</target>
<note />
</trans-unit>
<trans-unit id="ID3090">
<trans-unit id="ID2090">
<source>The signing key associated to the specified token was not found.</source>
<target state="translated">Der mit dem angegebenen Token verknüpfte Signierschlüssel wurde nicht gefunden.</target>
<note />
</trans-unit>
<trans-unit id="ID3091">
<trans-unit id="ID2091">
<source>The signature associated to the specified token is not valid.</source>
<target state="translated">Die mit dem angegebenen Token verbundene Signatur ist nicht gültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3092">
<trans-unit id="ID2092">
<source>This resource server is currently unavailable.</source>
<target state="translated">Der Resource Server ist derzeit nicht verfügbar.</target>
<note />
</trans-unit>
<trans-unit id="ID3093">
<trans-unit id="ID2093">
<source>The specified token doesn't contain any audience.</source>
<target state="translated">Das angegebene Token enthält keine Audience.</target>
<note />
</trans-unit>
<trans-unit id="ID3094">
<trans-unit id="ID2094">
<source>The specified token cannot be used with this resource server.</source>
<target state="translated">Das angegebene Token kann mit diesem Resource Server nicht verwendet werden.</target>
<note />
</trans-unit>
<trans-unit id="ID3095">
<trans-unit id="ID2095">
<source>The user represented by the token is not allowed to perform the requested action.</source>
<target state="translated">Der Benutzer, der durch das Token repräsentiert wird, darf die angeforderte Aktion nicht ausführen.</target>
<note />
</trans-unit>
<trans-unit id="ID3096">
<trans-unit id="ID2096">
<source>No issuer could be found in the server configuration.</source>
<target state="translated">In der Serverkonfiguration konnte kein Issuer gefunden werden.</target>
<note />
</trans-unit>
<trans-unit id="ID3097">
<trans-unit id="ID2097">
<source>A server configuration containing an invalid issuer was returned.</source>
<target state="translated">Es wurde eine Serverkonfiguration mit einem ungültigen Aussteller zurückgegeben.</target>
<note />
</trans-unit>
<trans-unit id="ID3098">
<trans-unit id="ID2098">
<source>The issuer returned in the server configuration is not valid.</source>
<target state="translated">Der in der Serverkonfiguration zurückgegebene Issuer ist nicht gültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3099">
<trans-unit id="ID2099">
<source>No JWKS endpoint could be found in the server configuration.</source>
<target state="translated">In der Serverkonfiguration konnte kein JWKS-Endpoint gefunden werden.</target>
<note />
</trans-unit>
<trans-unit id="ID3100">
<trans-unit id="ID2100">
<source>A server configuration containing an invalid JWKS endpoint URL was returned.</source>
<target state="translated">Es wurde eine Serverkonfiguration mit einer ungültigen JWKS-Endpoint-URL zurückgegeben.</target>
<note />
</trans-unit>
<trans-unit id="ID3101">
<trans-unit id="ID2101">
<source>A server configuration containing an invalid introspection endpoint URL was returned.</source>
<target state="translated">Es wurde eine Serverkonfiguration mit einer ungültigen Introspection-Endpoint-URL zurückgegeben.</target>
<note />
</trans-unit>
<trans-unit id="ID3102">
<trans-unit id="ID2102">
<source>The JWKS document didn't contain a valid '{0}' node with at least one key.</source>
<target state="translated">Das JWKS-Dokument enthielt keinen gültigen '{0}'-Knoten mit mindestens einem Schlüssel.</target>
<note />
</trans-unit>
<trans-unit id="ID3103">
<trans-unit id="ID2103">
<source>A JWKS response containing an unsupported key was returned.</source>
<target state="translated">Es wurde eine JWKS-Response mit einem nicht unterstützten Schlüssel zurückgegeben.</target>
<note />
</trans-unit>
<trans-unit id="ID3104">
<trans-unit id="ID2104">
<source>A JWKS response containing an invalid key was returned.</source>
<target state="translated">Es wurde eine JWKS-Response mit einem ungültigen Schlüssel zurückgegeben.</target>
<note />
</trans-unit>
<trans-unit id="ID3105">
<trans-unit id="ID2105">
<source>The mandatory '{0}' parameter couldn't be found in the introspection response.</source>
<target state="translated">Der verpflichtende Parameter '{0}' konnte in der Introspektionsantwort nicht gefunden werden.</target>
<note />
</trans-unit>
<trans-unit id="ID3106">
<trans-unit id="ID2106">
<source>The token was rejected by the remote authentication server.</source>
<target state="translated">Der Token wurde vom Remote-Authentifizierungsserver zurückgewiesen.</target>
<note />
</trans-unit>
<trans-unit id="ID3107">
<trans-unit id="ID2107">
<source>The '{0}' claim is malformed or isn't of the expected type.</source>
<target state="translated">Der '{0}'-Claim ist fehlerhaft oder entspricht nicht dem erwarteten Typ.</target>
<note />
</trans-unit>
<trans-unit id="ID3108">
<trans-unit id="ID2108">
<source>An introspection response containing a malformed issuer was returned.</source>
<target state="translated">Eine Introspektionsantwort mit einem fehlerhaften Issuer wurde zurückgeschickt.</target>
<note />
</trans-unit>
<trans-unit id="ID3109">
<trans-unit id="ID2109">
<source>The issuer returned in the introspection response is not valid.</source>
<target state="translated">The issuer returned in the introspection response is not valid.</target>
<note />
</trans-unit>
<trans-unit id="ID3110">
<trans-unit id="ID2110">
<source>The type of the introspected token doesn't match the expected type.</source>
<target state="translated">Der in der Selbstprüfungsantwort zurückgegebene Issuer ist nicht gültig.</target>
<note />
</trans-unit>
<trans-unit id="ID3111">
<trans-unit id="ID2111">
<source>An application with the same client identifier already exists.</source>
<target state="translated">Eine Anwendung mit dem gleichen Client-Identifier existiert bereits.</target>
<note />
</trans-unit>
<trans-unit id="ID3112">
<trans-unit id="ID2112">
<source>Only confidential, hybrid or public applications are supported by the default application manager.</source>
<target state="translated">Nur Confidential, Hybrid oder Public Anwendungen werden vom Standardanwendungsmanager unterstützt.</target>
<note />
</trans-unit>
<trans-unit id="ID3113">
<trans-unit id="ID2113">
<source>The client secret cannot be null or empty for a confidential application.</source>
<target state="translated">Das Client-Secret darf bei Confidential-Anwendungenkann nicht null oder leer sein.</target>
<note />
</trans-unit>
<trans-unit id="ID3114">
<trans-unit id="ID2114">
<source>A client secret cannot be associated with a public application.</source>
<target state="translated">Ein Client-Secret kann nicht mit einer Public-Anwendung assoziert werden.</target>
<note />
</trans-unit>
<trans-unit id="ID3115">
<trans-unit id="ID2115">
<source>Callback URLs cannot contain a fragment.</source>
<target state="translated">Callback URLs dürfen kein Fragment enthalten.</target>
<note />
</trans-unit>
<trans-unit id="ID3116">
<trans-unit id="ID2116">
<source>The authorization type cannot be null or empty.</source>
<target state="translated">Der Authorization Code kann nicht null oder leer sein.</target>
<note />
</trans-unit>
<trans-unit id="ID3117">
<trans-unit id="ID2117">
<source>The specified authorization type is not supported by the default token manager.</source>
<target state="translated">Der angegebene Authorization-Type wird vom Standard-Token-Manager nicht unterstützt.</target>
<note />
</trans-unit>
<trans-unit id="ID3118">
<trans-unit id="ID2118">
<source>The client type cannot be null or empty.</source>
<target state="translated">Der Client-Type darf nicht null oder leer sein.</target>
<note />
</trans-unit>
<trans-unit id="ID3119">
<trans-unit id="ID2119">
<source>Callback URLs cannot be null or empty.</source>
<target state="translated">Callback URLs dürfen nicht null oder leer sein.</target>
<note />
</trans-unit>
<trans-unit id="ID3120">
<trans-unit id="ID2120">
<source>Callback URLs must be valid absolute URLs.</source>
<target state="translated">Callback URLs müssen valide, absolute URLs sein.</target>
<note />
</trans-unit>
<trans-unit id="ID9000">
<trans-unit id="ID8000">
<source>Removes orphaned tokens and authorizations from the database.</source>
<target state="translated">Entfernt verwaiste Token und Berechtigungen aus der Datenbank.</target>
<note />
</trans-unit>
<trans-unit id="ID9001">
<trans-unit id="ID8001">
<source>Starts the scheduled task at regular intervals.</source>
<target state="translated">Startet die geplante Aufgabe in regelmäßigen Abständen.</target>
<note />

238
src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.es.xlf

@ -2,597 +2,597 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="es" original="../OpenIddictResources.resx">
<body>
<trans-unit id="ID3000">
<trans-unit id="ID2000">
<source>The security token is missing.</source>
<target state="translated">Falta el token de seguridad.</target>
<note />
</trans-unit>
<trans-unit id="ID3001">
<trans-unit id="ID2001">
<source>The specified authorization code is invalid.</source>
<target state="translated">El código de autorización provisto no es válido.</target>
<note />
</trans-unit>
<trans-unit id="ID3002">
<trans-unit id="ID2002">
<source>The specified device code is invalid.</source>
<target state="translated">El código de dispositivo provisto no es válido.</target>
<note />
</trans-unit>
<trans-unit id="ID3003">
<trans-unit id="ID2003">
<source>The specified refresh token is invalid.</source>
<target state="translated">El token de actualización provisto no es válido.</target>
<note />
</trans-unit>
<trans-unit id="ID3004">
<trans-unit id="ID2004">
<source>The specified token is invalid.</source>
<target state="translated">El token provisto no es válido.</target>
<note />
</trans-unit>
<trans-unit id="ID3005">
<trans-unit id="ID2005">
<source>The specified token is not an authorization code.</source>
<target state="translated">El token provisto no es un código de autorización.</target>
<note />
</trans-unit>
<trans-unit id="ID3006">
<trans-unit id="ID2006">
<source>The specified token is not an device code.</source>
<target state="translated">El token provisto no es un código de dispositivo.</target>
<note />
</trans-unit>
<trans-unit id="ID3007">
<trans-unit id="ID2007">
<source>The specified token is not a refresh token.</source>
<target state="translated">El token provisto no es un token de actualización.</target>
<note />
</trans-unit>
<trans-unit id="ID3008">
<trans-unit id="ID2008">
<source>The specified token is not an access token.</source>
<target state="translated">El token provisto no es un token de acceso.</target>
<note />
</trans-unit>
<trans-unit id="ID3009">
<trans-unit id="ID2009">
<source>The specified identity token is invalid.</source>
<target state="translated">El token provisto de identidad provisto no es válido.</target>
<note />
</trans-unit>
<trans-unit id="ID3010">
<trans-unit id="ID2010">
<source>The specified authorization code has already been redeemed.</source>
<target state="translated">El código de autorización provisto ya ha sido canjeado.</target>
<note />
</trans-unit>
<trans-unit id="ID3011">
<trans-unit id="ID2011">
<source>The specified device code has already been redeemed.</source>
<target state="translated">El código de dispositivo provisto ya ha sido canjeado.</target>
<note />
</trans-unit>
<trans-unit id="ID3012">
<trans-unit id="ID2012">
<source>The specified refresh token has already been redeemed.</source>
<target state="translated">El token de actualización provisto ya ha sido canjeado.</target>
<note />
</trans-unit>
<trans-unit id="ID3013">
<trans-unit id="ID2013">
<source>The specified token has already been redeemed.</source>
<target state="translated">El token provisto ya ha sido canjeado.</target>
<note />
</trans-unit>
<trans-unit id="ID3014">
<trans-unit id="ID2014">
<source>The authorization has not been granted yet by the end user.</source>
<target state="translated">El usuario final aún no ha concedido la autorización.</target>
<note />
</trans-unit>
<trans-unit id="ID3015">
<trans-unit id="ID2015">
<source>The authorization was denied by the end user.</source>
<target state="translated">La autorización fue denegada por el usuario final.</target>
<note />
</trans-unit>
<trans-unit id="ID3016">
<trans-unit id="ID2016">
<source>The specified authorization code is no longer valid.</source>
<target state="translated">El codigo de autorización provisto ya no es válido.</target>
<note />
</trans-unit>
<trans-unit id="ID3017">
<trans-unit id="ID2017">
<source>The specified device code is no longer valid.</source>
<target state="translated">El código de dispositivo provisto ya no es válido.</target>
<note />
</trans-unit>
<trans-unit id="ID3018">
<trans-unit id="ID2018">
<source>The specified refresh token is no longer valid.</source>
<target state="translated">El token de actualización provisto ya no es válido.</target>
<note />
</trans-unit>
<trans-unit id="ID3019">
<trans-unit id="ID2019">
<source>The specified token is no longer valid.</source>
<target state="translated">El token provisto ya no es válido.</target>
<note />
</trans-unit>
<trans-unit id="ID3020">
<trans-unit id="ID2020">
<source>The authorization associated with the authorization code is no longer valid.</source>
<target state="translated">La autorización asociada con el codigo de autorización ya no es válida.</target>
<note />
</trans-unit>
<trans-unit id="ID3021">
<trans-unit id="ID2021">
<source>The authorization associated with the device code is no longer valid.</source>
<target state="translated">La autorización asociada con el código de dispositivo ya no es válida.</target>
<note />
</trans-unit>
<trans-unit id="ID3022">
<trans-unit id="ID2022">
<source>The authorization associated with the refresh token is no longer valid.</source>
<target state="translated">La autorización asociada con el token de actualización ya no es válida.</target>
<note />
</trans-unit>
<trans-unit id="ID3023">
<trans-unit id="ID2023">
<source>The authorization associated with the token is no longer valid.</source>
<target state="translated">La autorización asociada con el token ya no es válida.</target>
<note />
</trans-unit>
<trans-unit id="ID3024">
<trans-unit id="ID2024">
<source>The token request was rejected by the authentication server.</source>
<target state="translated">La petición del token ha sido rechazada por el servidor de autenticación.</target>
<note />
</trans-unit>
<trans-unit id="ID3025">
<trans-unit id="ID2025">
<source>The user information access demand was rejected by the authentication server.</source>
<target state="translated">La demanda de acceso a la información del usuario ha sido rechazada por el servidor de autenticación.</target>
<note />
</trans-unit>
<trans-unit id="ID3026">
<trans-unit id="ID2026">
<source>The specified user code is no longer valid.</source>
<target state="translated">El código de usuario provisto ya no es válido.</target>
<note />
</trans-unit>
<trans-unit id="ID3028">
<trans-unit id="ID2028">
<source>The '{0}' parameter is not supported.</source>
<target state="translated">El parámetro '{0}' no esta soportado.</target>
<note />
</trans-unit>
<trans-unit id="ID3029">
<trans-unit id="ID2029">
<source>The mandatory '{0}' parameter is missing.</source>
<target state="translated">Falta el parámetro obligatorio '{0}'.</target>
<note />
</trans-unit>
<trans-unit id="ID3030">
<trans-unit id="ID2030">
<source>The '{0}' parameter must be a valid absolute URL.</source>
<target state="translated">El parámetro '{0}' debe ser una URL absoluta válida.</target>
<note />
</trans-unit>
<trans-unit id="ID3031">
<trans-unit id="ID2031">
<source>The '{0}' parameter must not include a fragment.</source>
<target state="translated">El parámetro '{0}' no debe incluir un fragmento.</target>
<note />
</trans-unit>
<trans-unit id="ID3032">
<trans-unit id="ID2032">
<source>The specified '{0}' is not supported.</source>
<target state="translated">El '{0}' provisto no esta soportado.</target>
<note />
</trans-unit>
<trans-unit id="ID3033">
<trans-unit id="ID2033">
<source>The specified '{0}'/'{1}' combination is invalid.</source>
<target state="translated">La combinación '{0}'/'{1}' no es válida.</target>
<note />
</trans-unit>
<trans-unit id="ID3034">
<trans-unit id="ID2034">
<source>The mandatory '{0}' scope is missing.</source>
<target state="translated">Falta el scope obligatorio '{0}'.</target>
<note />
</trans-unit>
<trans-unit id="ID3035">
<trans-unit id="ID2035">
<source>The '{0}' scope is not allowed.</source>
<target state="translated">El scope '{0}' no esta permitido.</target>
<note />
</trans-unit>
<trans-unit id="ID3036">
<trans-unit id="ID2036">
<source>The client identifier cannot be null or empty.</source>
<target state="translated">El identificador de cliente no puede ser nulo ni vacío.</target>
<note />
</trans-unit>
<trans-unit id="ID3037">
<trans-unit id="ID2037">
<source>The '{0}' parameter cannot be used without '{1}'.</source>
<target state="translated">El parámetro '{0}' debe ser utilizado en conjunto con '{1}'.</target>
<note />
</trans-unit>
<trans-unit id="ID3038">
<trans-unit id="ID2038">
<source>The status cannot be null or empty.</source>
<target state="translated">El estado no puede ser nulo ni vacío.</target>
<note />
</trans-unit>
<trans-unit id="ID3039">
<trans-unit id="ID2039">
<source>Scopes cannot be null or empty.</source>
<target state="translated">Los scopes no pueden ser nulos ni vacíos.</target>
<note />
</trans-unit>
<trans-unit id="ID3040">
<trans-unit id="ID2040">
<source>The '{0}' and '{1}' parameters can only be used with a response type containing '{2}'.</source>
<target state="translated">Los parámetros '{0}' y '{1}' pueden ser usados únicamente con un tipo de respuesta que contenga '{2}'.</target>
<note />
</trans-unit>
<trans-unit id="ID3041">
<trans-unit id="ID2041">
<source>The specified '{0}' is not allowed when using PKCE.</source>
<target state="translated">El '{0}' provisto no esta permitido cuando se utiliza PKCE.</target>
<note />
</trans-unit>
<trans-unit id="ID3042">
<trans-unit id="ID2042">
<source>Scopes cannot contain spaces.</source>
<target state="translated">Los scopes no pueden tener espacios.</target>
<note />
</trans-unit>
<trans-unit id="ID3043">
<trans-unit id="ID2043">
<source>The specified '{0}' is not valid for this client application.</source>
<target state="translated">El '{0}' provisto no es válido para esta aplicación de cliente.</target>
<note />
</trans-unit>
<trans-unit id="ID3044">
<trans-unit id="ID2044">
<source>The scope name cannot be null or empty.</source>
<target state="translated">El nombre del scope no puede ser nulo ni vacío.</target>
<note />
</trans-unit>
<trans-unit id="ID3045">
<trans-unit id="ID2045">
<source>The scope name cannot contain spaces.</source>
<target state="translated">Le nom de la portée ne peut pas contenir d'espace.</target>
<note />
</trans-unit>
<trans-unit id="ID3046">
<trans-unit id="ID2046">
<source>This client application is not allowed to use the authorization endpoint.</source>
<target state="translated">La aplicación de cliente no esta permitida a utilizar el destino de autorización.</target>
<note />
</trans-unit>
<trans-unit id="ID3047">
<trans-unit id="ID2047">
<source>The client application is not allowed to use the authorization code flow.</source>
<target state="translated">La aplicación de cliente no esta permitida a utilizar el flujo de código de autorización.</target>
<note />
</trans-unit>
<trans-unit id="ID3048">
<trans-unit id="ID2048">
<source>The client application is not allowed to use the implicit flow.</source>
<target state="translated">La aplicación de cliente no esta permitida a utilizar el flujo implícito.</target>
<note />
</trans-unit>
<trans-unit id="ID3049">
<trans-unit id="ID2049">
<source>The client application is not allowed to use the hybrid flow.</source>
<target state="translated">La aplicación de cliente no esta permitida a utilizar el flujo híbrido.</target>
<note />
</trans-unit>
<trans-unit id="ID3051">
<trans-unit id="ID2051">
<source>This client application is not allowed to use the specified scope.</source>
<target state="translated">La aplicación de cliente no esta permitida a utilizar el scope provisto.</target>
<note />
</trans-unit>
<trans-unit id="ID3052">
<trans-unit id="ID2052">
<source>The specified '{0}' is invalid.</source>
<target state="translated">El '{0}' provisto no es válida.</target>
<note />
</trans-unit>
<trans-unit id="ID3053">
<trans-unit id="ID2053">
<source>The '{0}' parameter is not valid for this client application.</source>
<target state="translated">El parámetro '{0}' no es válido para esta aplicación de cliente.</target>
<note />
</trans-unit>
<trans-unit id="ID3054">
<trans-unit id="ID2054">
<source>The '{0}' parameter required for this client application is missing.</source>
<target state="translated">Flata el parámetro obligatorio '{0}' para esta aplicación de cliente.</target>
<note />
</trans-unit>
<trans-unit id="ID3055">
<trans-unit id="ID2055">
<source>The specified client credentials are invalid.</source>
<target state="translated">Las credenciales del cliente provista no son válidas.</target>
<note />
</trans-unit>
<trans-unit id="ID3056">
<trans-unit id="ID2056">
<source>This client application is not allowed to use the device endpoint.</source>
<target state="translated">La aplicación de cliente no esta permitida a utilizar el destino de dispositivo.</target>
<note />
</trans-unit>
<trans-unit id="ID3057">
<trans-unit id="ID2057">
<source>The '{0}' and '{1}' parameters are required when using the client credentials grant.</source>
<target state="translated">Los parámetros '{0}' y '{1}' son obligatorios cuando la concesión de credenciales de cliente es utilizada.</target>
<note />
</trans-unit>
<trans-unit id="ID3058">
<trans-unit id="ID2058">
<source>The '{0}' parameter is required when using the device code grant.</source>
<target state="translated">El parámetro '{0}' es obligatorios cuando la concesion de código de dispositivo es utlizada.</target>
<note />
</trans-unit>
<trans-unit id="ID3059">
<trans-unit id="ID2059">
<source>The mandatory '{0}' and/or '{1}' parameters are missing.</source>
<target state="translated">Faltan los paramétros obligatorios '{0}' y/o '{1}'.</target>
<note />
</trans-unit>
<trans-unit id="ID3060">
<trans-unit id="ID2060">
<source>A scope with the same name already exists.</source>
<target state="translated">Un scope con el mismo nombre ya existe.</target>
<note />
</trans-unit>
<trans-unit id="ID3063">
<trans-unit id="ID2063">
<source>This client application is not allowed to use the token endpoint.</source>
<target state="translated">La aplicación de cliente no esta permitida a utilizar el destino de token.</target>
<note />
</trans-unit>
<trans-unit id="ID3064">
<trans-unit id="ID2064">
<source>This client application is not allowed to use the specified grant type.</source>
<target state="translated">La aplicación de cliente no esta permitida a utilizar el tipo de concesion especificada.</target>
<note />
</trans-unit>
<trans-unit id="ID3065">
<trans-unit id="ID2065">
<source>The client application is not allowed to use the '{0}' scope.</source>
<target state="translated">La aplicación de cliente no esta permitida a utilizar la concesion '{0}'.</target>
<note />
</trans-unit>
<trans-unit id="ID3066">
<trans-unit id="ID2066">
<source>The specified authorization code cannot be used without sending a client identifier.</source>
<target state="translated">El código de autorización provisto no puede ser utilizado sin enviar un identificador de cliente.</target>
<note />
</trans-unit>
<trans-unit id="ID3067">
<trans-unit id="ID2067">
<source>The specified device code cannot be used without sending a client identifier.</source>
<target state="translated">El código de dispositivo provisto no puede ser utilizado sin enviar un identificador de cliente.</target>
<note />
</trans-unit>
<trans-unit id="ID3068">
<trans-unit id="ID2068">
<source>The specified refresh token cannot be used without sending a client identifier.</source>
<target state="translated">El token de actualización provisto no puede ser utilizado sin enviar un identificador de cliente.</target>
<note />
</trans-unit>
<trans-unit id="ID3069">
<trans-unit id="ID2069">
<source>The specified authorization code cannot be used by this client application.</source>
<target state="translated">El código de autorización provisto no puede ser utilizado por ésta aplicación de cliente.</target>
<note />
</trans-unit>
<trans-unit id="ID3070">
<trans-unit id="ID2070">
<source>The specified device code cannot be used by this client application.</source>
<target state="translated">El código de dispositivo provisto no puede ser utilizado por ésta aplicación de cliente.</target>
<note />
</trans-unit>
<trans-unit id="ID3071">
<trans-unit id="ID2071">
<source>The specified refresh token cannot be used by this client application.</source>
<target state="translated">El código de actualización provisto no puede ser utilizado por ésta aplicación de cliente.</target>
<note />
</trans-unit>
<trans-unit id="ID3072">
<trans-unit id="ID2072">
<source>The specified '{0}' parameter doesn't match the client redirection address the authorization code was initially sent to.</source>
<target state="translated">El parámetro '{0}' no concuerda con la dirección de redireccionamiento de cliente inicialmente provista en el código de autorización.</target>
<note />
</trans-unit>
<trans-unit id="ID3073">
<trans-unit id="ID2073">
<source>The '{0}' parameter cannot be used when no '{1}' was specified in the authorization request.</source>
<target state="translated">El parámetro '{0}' no puede ser utilizado cuando '{1}' fue especificado en la petición de autorizacion..</target>
<note />
</trans-unit>
<trans-unit id="ID3074">
<trans-unit id="ID2074">
<source>The '{0}' parameter is not valid in this context.</source>
<target state="translated">El parámetro '{0}' no es válido en este contexto.</target>
<note />
</trans-unit>
<trans-unit id="ID3075">
<trans-unit id="ID2075">
<source>This client application is not allowed to use the introspection endpoint.</source>
<target state="translated">La aplicación de cliente no esta permitida a utilizar el destino de introspección</target>
<note />
</trans-unit>
<trans-unit id="ID3076">
<trans-unit id="ID2076">
<source>The specified token cannot be introspected.</source>
<target state="translated">El token provisto no se puede introspectar.</target>
<note />
</trans-unit>
<trans-unit id="ID3077">
<trans-unit id="ID2077">
<source>The client application is not allowed to introspect the specified token.</source>
<target state="translated">La aplicación de cliente no está permitida a introspectar el token provisto.</target>
<note />
</trans-unit>
<trans-unit id="ID3078">
<trans-unit id="ID2078">
<source>This client application is not allowed to use the revocation endpoint.</source>
<target state="translated">La aplicación de cliente no está permitida a utilizar el destino de revocación.</target>
<note />
</trans-unit>
<trans-unit id="ID3079">
<trans-unit id="ID2079">
<source>This token cannot be revoked.</source>
<target state="translated">Este token no puede ser revocado.</target>
<note />
</trans-unit>
<trans-unit id="ID3080">
<trans-unit id="ID2080">
<source>The client application is not allowed to revoke the specified token.</source>
<target state="translated">La aplicación de cliente no esta permitida a revocar el token provisto.</target>
<note />
</trans-unit>
<trans-unit id="ID3081">
<trans-unit id="ID2081">
<source>The mandatory '{0}' header is missing.</source>
<target state="translated">Falta el encabezamiento obligatorio '{0}'.</target>
<note />
</trans-unit>
<trans-unit id="ID3082">
<trans-unit id="ID2082">
<source>The specified '{0}' header is invalid.</source>
<target state="translated">El encabezamiento '{0}' no es válido.</target>
<note />
</trans-unit>
<trans-unit id="ID3083">
<trans-unit id="ID2083">
<source>This server only accepts HTTPS requests.</source>
<target state="translated">Este servidor solo soporta peticiones HTTPS.</target>
<note />
</trans-unit>
<trans-unit id="ID3084">
<trans-unit id="ID2084">
<source>The specified HTTP method is not valid.</source>
<target state="translated">El método HTTP provisto no es válido.</target>
<note />
</trans-unit>
<trans-unit id="ID3085">
<trans-unit id="ID2085">
<source>A token with the same reference identifier already exists.</source>
<target state="translated">Un token con la misma referencia identificatoria ya existe.</target>
<note />
</trans-unit>
<trans-unit id="ID3086">
<trans-unit id="ID2086">
<source>The token type cannot be null or empty.</source>
<target state="translated">El tipo de token no puede ser ni null ni vacío.</target>
<note />
</trans-unit>
<trans-unit id="ID3087">
<trans-unit id="ID2087">
<source>Multiple client credentials cannot be specified.</source>
<target state="translated">No se pueden especificar multiples credenciales de cliente.</target>
<note />
</trans-unit>
<trans-unit id="ID3088">
<trans-unit id="ID2088">
<source>The issuer associated to the specified token is not valid.</source>
<target state="translated">El emisor asociado al token especificado no es válido.</target>
<note />
</trans-unit>
<trans-unit id="ID3089">
<trans-unit id="ID2089">
<source>The specified token is not of the expected type.</source>
<target state="translated">El token especificado no es del tipo esperado.</target>
<note />
</trans-unit>
<trans-unit id="ID3090">
<trans-unit id="ID2090">
<source>The signing key associated to the specified token was not found.</source>
<target state="translated">No se encontró la clave de firma asociada al token especificado.</target>
<note />
</trans-unit>
<trans-unit id="ID3091">
<trans-unit id="ID2091">
<source>The signature associated to the specified token is not valid.</source>
<target state="translated">La firma asociada al token especificado no es válida.</target>
<note />
</trans-unit>
<trans-unit id="ID3092">
<trans-unit id="ID2092">
<source>This resource server is currently unavailable.</source>
<target state="translated">Este servidor de recursos no está disponible actualmente.</target>
<note />
</trans-unit>
<trans-unit id="ID3093">
<trans-unit id="ID2093">
<source>The specified token doesn't contain any audience.</source>
<target state="translated">El token especificado no contiene ninguna audiencia.</target>
<note />
</trans-unit>
<trans-unit id="ID3094">
<trans-unit id="ID2094">
<source>The specified token cannot be used with this resource server.</source>
<target state="translated">El token especificado no se puede utilizar con este servidor de recursos.</target>
<note />
</trans-unit>
<trans-unit id="ID3095">
<trans-unit id="ID2095">
<source>The user represented by the token is not allowed to perform the requested action.</source>
<target state="translated">El usuario representado por el token no puede realizar la acción solicitada.</target>
<note />
</trans-unit>
<trans-unit id="ID3096">
<trans-unit id="ID2096">
<source>No issuer could be found in the server configuration.</source>
<target state="translated">No se pudo encontrar ningún emisor en la configuración del servidor.</target>
<note />
</trans-unit>
<trans-unit id="ID3097">
<trans-unit id="ID2097">
<source>A server configuration containing an invalid issuer was returned.</source>
<target state="translated">La respuesta de la configuración de servidor contiene un emisor inválido.</target>
<note />
</trans-unit>
<trans-unit id="ID3098">
<trans-unit id="ID2098">
<source>The issuer returned in the server configuration is not valid.</source>
<target state="translated">El emisor devuelto en la configuración del servidor no es válido.</target>
<note />
</trans-unit>
<trans-unit id="ID3099">
<trans-unit id="ID2099">
<source>No JWKS endpoint could be found in the server configuration.</source>
<target state="translated">No se pudo encontrar ningún destino JWKS en la configuración del servidor.</target>
<note />
</trans-unit>
<trans-unit id="ID3100">
<trans-unit id="ID2100">
<source>A server configuration containing an invalid JWKS endpoint URL was returned.</source>
<target state="translated">La respuesta de la configuración de servidor contiene una URL de destino JWKS inválida.</target>
<note />
</trans-unit>
<trans-unit id="ID3101">
<trans-unit id="ID2101">
<source>A server configuration containing an invalid introspection endpoint URL was returned.</source>
<target state="translated">La respuesta de la configuración de servidor contiene una URL de destino de introspección inválida.</target>
<note />
</trans-unit>
<trans-unit id="ID3102">
<trans-unit id="ID2102">
<source>The JWKS document didn't contain a valid '{0}' node with at least one key.</source>
<target state="translated">El documento JWKS no contenía un nodo '{0}' válido con al menos una clave.</target>
<note />
</trans-unit>
<trans-unit id="ID3103">
<trans-unit id="ID2103">
<source>A JWKS response containing an unsupported key was returned.</source>
<target state="translated">La clave contenida en la respuesta JWKS no está soportada.</target>
<note />
</trans-unit>
<trans-unit id="ID3104">
<trans-unit id="ID2104">
<source>A JWKS response containing an invalid key was returned.</source>
<target state="translated">La clave contenida en la respuesta JWKS es inválida.</target>
<note />
</trans-unit>
<trans-unit id="ID3105">
<trans-unit id="ID2105">
<source>The mandatory '{0}' parameter couldn't be found in the introspection response.</source>
<target state="translated">No se pudo encontrar el parámetro obligatorio '{0}' en la respuesta de introspección.</target>
<note />
</trans-unit>
<trans-unit id="ID3106">
<trans-unit id="ID2106">
<source>The token was rejected by the remote authentication server.</source>
<target state="translated">El token fue rechazado por el servidor de autenticación remoto.</target>
<note />
</trans-unit>
<trans-unit id="ID3107">
<trans-unit id="ID2107">
<source>The '{0}' claim is malformed or isn't of the expected type.</source>
<target state="translated">La afirmación "{0}" tiene un formato incorrecto o no es del tipo esperado.</target>
<note />
</trans-unit>
<trans-unit id="ID3108">
<trans-unit id="ID2108">
<source>An introspection response containing a malformed issuer was returned.</source>
<target state="translated">La respuesta de introspección contiene un emisor con un formato incorrecto.</target>
<note />
</trans-unit>
<trans-unit id="ID3109">
<trans-unit id="ID2109">
<source>The issuer returned in the introspection response is not valid.</source>
<target state="translated">El emisor devuelto en la respuesta de introspección no es válido.</target>
<note />
</trans-unit>
<trans-unit id="ID3110">
<trans-unit id="ID2110">
<source>The type of the introspected token doesn't match the expected type.</source>
<target state="translated">El tipo de token introspectado no coincide con el tipo esperado.</target>
<note />
</trans-unit>
<trans-unit id="ID3111">
<trans-unit id="ID2111">
<source>An application with the same client identifier already exists.</source>
<target state="translated">Ya existe una aplicación con el mismo identificador de cliente.</target>
<note />
</trans-unit>
<trans-unit id="ID3112">
<trans-unit id="ID2112">
<source>Only confidential, hybrid or public applications are supported by the default application manager.</source>
<target state="translated">El administrador de aplicaciones predeterminado solo admite aplicaciones confidenciales, híbridas o públicas.</target>
<note />
</trans-unit>
<trans-unit id="ID3113">
<trans-unit id="ID2113">
<source>The client secret cannot be null or empty for a confidential application.</source>
<target state="translated">El secreto del cliente no puede ser nulo ni vacío para una aplicación confidencial.</target>
<note />
</trans-unit>
<trans-unit id="ID3114">
<trans-unit id="ID2114">
<source>A client secret cannot be associated with a public application.</source>
<target state="translated">Un secreto de cliente no se puede asociar a una aplicación pública.</target>
<note />
</trans-unit>
<trans-unit id="ID3115">
<trans-unit id="ID2115">
<source>Callback URLs cannot contain a fragment.</source>
<target state="translated">Las URL de retorno no pueden contener un fragmento.</target>
<note />
</trans-unit>
<trans-unit id="ID3116">
<trans-unit id="ID2116">
<source>The authorization type cannot be null or empty.</source>
<target state="translated">El tipo de autorización no puede ser nulo ni vacío.</target>
<note />
</trans-unit>
<trans-unit id="ID3117">
<trans-unit id="ID2117">
<source>The specified authorization type is not supported by the default token manager.</source>
<target state="translated">El tipo de autorización provisto no es compatible con el administrador de tokens predeterminado.</target>
<note />
</trans-unit>
<trans-unit id="ID3118">
<trans-unit id="ID2118">
<source>The client type cannot be null or empty.</source>
<target state="translated">El tipo de cliente no puede ser nulo ni vacío.</target>
<note />
</trans-unit>
<trans-unit id="ID3119">
<trans-unit id="ID2119">
<source>Callback URLs cannot be null or empty.</source>
<target state="translated">Las URL de retorno no pueden ser nulas ni vacías.</target>
<note />
</trans-unit>
<trans-unit id="ID3120">
<trans-unit id="ID2120">
<source>Callback URLs must be valid absolute URLs.</source>
<target state="translated">Las URL de retorno deben ser URL absolutas válidas.</target>
<note />
</trans-unit>
<trans-unit id="ID9000">
<trans-unit id="ID8000">
<source>Removes orphaned tokens and authorizations from the database.</source>
<target state="translated">Elimina tokens y autorizaciones huérfanos de la base de datos.</target>
<note />
</trans-unit>
<trans-unit id="ID9001">
<trans-unit id="ID8001">
<source>Starts the scheduled task at regular intervals.</source>
<target state="translated">Inicia la tarea programada en intervalos regulares.</target>
<note />

238
src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.fr.xlf

@ -2,597 +2,597 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="fr" original="../OpenIddictResources.resx">
<body>
<trans-unit id="ID3000">
<trans-unit id="ID2000">
<source>The security token is missing.</source>
<target state="translated">Le jeton de sécurité est manquant.</target>
<note />
</trans-unit>
<trans-unit id="ID3001">
<trans-unit id="ID2001">
<source>The specified authorization code is invalid.</source>
<target state="translated">Le code d'autorisation spécifié n'est pas valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3002">
<trans-unit id="ID2002">
<source>The specified device code is invalid.</source>
<target state="translated">Le code d'appareil spécifié n'est pas valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3003">
<trans-unit id="ID2003">
<source>The specified refresh token is invalid.</source>
<target state="translated">Le jeton de rafraîchissement spécifié n'est pas valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3004">
<trans-unit id="ID2004">
<source>The specified token is invalid.</source>
<target state="translated">Le jeton spécifié n'est pas valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3005">
<trans-unit id="ID2005">
<source>The specified token is not an authorization code.</source>
<target state="translated">Le jeton spécifié n'est pas un code d'autorisation.</target>
<note />
</trans-unit>
<trans-unit id="ID3006">
<trans-unit id="ID2006">
<source>The specified token is not an device code.</source>
<target state="translated">Le jeton spécifié n'est pas un code d'appareil.</target>
<note />
</trans-unit>
<trans-unit id="ID3007">
<trans-unit id="ID2007">
<source>The specified token is not a refresh token.</source>
<target state="translated">Le jeton spécifié n'est pas un jeton d'actualisation.</target>
<note />
</trans-unit>
<trans-unit id="ID3008">
<trans-unit id="ID2008">
<source>The specified token is not an access token.</source>
<target state="translated">Le jeton spécifié n'est pas un jeton d'accès.</target>
<note />
</trans-unit>
<trans-unit id="ID3009">
<trans-unit id="ID2009">
<source>The specified identity token is invalid.</source>
<target state="translated">Le jeton d'identité spécifié n'est pas valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3010">
<trans-unit id="ID2010">
<source>The specified authorization code has already been redeemed.</source>
<target state="translated">Le jeton d'autorisation spécifié a déjà été échangé.</target>
<note />
</trans-unit>
<trans-unit id="ID3011">
<trans-unit id="ID2011">
<source>The specified device code has already been redeemed.</source>
<target state="translated">Le jeton d'appareil spécifié a déjà été échangé.</target>
<note />
</trans-unit>
<trans-unit id="ID3012">
<trans-unit id="ID2012">
<source>The specified refresh token has already been redeemed.</source>
<target state="translated">Le jeton de rafraîchissement spécifié a déjà été échangé.</target>
<note />
</trans-unit>
<trans-unit id="ID3013">
<trans-unit id="ID2013">
<source>The specified token has already been redeemed.</source>
<target state="translated">Le jeton spécifié a déjà été échangé.</target>
<note />
</trans-unit>
<trans-unit id="ID3014">
<trans-unit id="ID2014">
<source>The authorization has not been granted yet by the end user.</source>
<target state="translated">L'autorisation n'a pas encore été accordée par l'utilisateur final.</target>
<note />
</trans-unit>
<trans-unit id="ID3015">
<trans-unit id="ID2015">
<source>The authorization was denied by the end user.</source>
<target state="translated">L'autorisation a été refusée par l'utilisateur final.</target>
<note />
</trans-unit>
<trans-unit id="ID3016">
<trans-unit id="ID2016">
<source>The specified authorization code is no longer valid.</source>
<target state="translated">Le code d'autorisation spécifié n'est plus valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3017">
<trans-unit id="ID2017">
<source>The specified device code is no longer valid.</source>
<target state="translated">Le code d'appareil spécifié n'est plus valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3018">
<trans-unit id="ID2018">
<source>The specified refresh token is no longer valid.</source>
<target state="translated">Le jeton d'actualisation spécifié n'est plus valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3019">
<trans-unit id="ID2019">
<source>The specified token is no longer valid.</source>
<target state="translated">Le jeton spécifié n'est plus valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3020">
<trans-unit id="ID2020">
<source>The authorization associated with the authorization code is no longer valid.</source>
<target state="translated">L'autorisation associée au code d'autorisation n'est plus valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3021">
<trans-unit id="ID2021">
<source>The authorization associated with the device code is no longer valid.</source>
<target state="translated">L'autorisation associée au code d'appareil n'est plus valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3022">
<trans-unit id="ID2022">
<source>The authorization associated with the refresh token is no longer valid.</source>
<target state="translated">L'autorisation associée au jeton d'actualisation n'est plus valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3023">
<trans-unit id="ID2023">
<source>The authorization associated with the token is no longer valid.</source>
<target state="translated">L'autorisation associée au jeton n'est plus valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3024">
<trans-unit id="ID2024">
<source>The token request was rejected by the authentication server.</source>
<target state="translated">La demande de jeton a été rejetée par le serveur d'authentification.</target>
<note />
</trans-unit>
<trans-unit id="ID3025">
<trans-unit id="ID2025">
<source>The user information access demand was rejected by the authentication server.</source>
<target state="translated">La demande d'information utilisateur a été rejetée par le serveur d'authentification.</target>
<note />
</trans-unit>
<trans-unit id="ID3026">
<trans-unit id="ID2026">
<source>The specified user code is no longer valid.</source>
<target state="translated">Le code utilisateur spécifié n'est plus valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3028">
<trans-unit id="ID2028">
<source>The '{0}' parameter is not supported.</source>
<target state="translated">Le paramètre '{0}' n'est pas supporté.</target>
<note />
</trans-unit>
<trans-unit id="ID3029">
<trans-unit id="ID2029">
<source>The mandatory '{0}' parameter is missing.</source>
<target state="translated">Le paramètre obligatoire '{0}' est manquant.</target>
<note />
</trans-unit>
<trans-unit id="ID3030">
<trans-unit id="ID2030">
<source>The '{0}' parameter must be a valid absolute URL.</source>
<target state="translated">Le paramètre '{0}' doit être une URL valide et absolue.</target>
<note />
</trans-unit>
<trans-unit id="ID3031">
<trans-unit id="ID2031">
<source>The '{0}' parameter must not include a fragment.</source>
<target state="translated">Le paramètre '{0}' ne doit pas comporter de fragment.</target>
<note />
</trans-unit>
<trans-unit id="ID3032">
<trans-unit id="ID2032">
<source>The specified '{0}' is not supported.</source>
<target state="translated">Le '{0}' spécifié n'est pas supporté.</target>
<note />
</trans-unit>
<trans-unit id="ID3033">
<trans-unit id="ID2033">
<source>The specified '{0}'/'{1}' combination is invalid.</source>
<target state="translated">La combinaison '{0}'/'{1}' spécifiée n'est pas valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3034">
<trans-unit id="ID2034">
<source>The mandatory '{0}' scope is missing.</source>
<target state="translated">La portée obligatoire '{0}' est manquante.</target>
<note />
</trans-unit>
<trans-unit id="ID3035">
<trans-unit id="ID2035">
<source>The '{0}' scope is not allowed.</source>
<target state="translated">La portée '{0}' n'est pas autorisée.</target>
<note />
</trans-unit>
<trans-unit id="ID3036">
<trans-unit id="ID2036">
<source>The client identifier cannot be null or empty.</source>
<target state="translated">L'identifiant client ne peut pas être null ou vide.</target>
<note />
</trans-unit>
<trans-unit id="ID3037">
<trans-unit id="ID2037">
<source>The '{0}' parameter cannot be used without '{1}'.</source>
<target state="translated">Le paramètre '{0}' ne peut pas être utilisé sans '{1}'.</target>
<note />
</trans-unit>
<trans-unit id="ID3038">
<trans-unit id="ID2038">
<source>The status cannot be null or empty.</source>
<target state="translated">Le statut ne peut pas être null ou vide.</target>
<note />
</trans-unit>
<trans-unit id="ID3039">
<trans-unit id="ID2039">
<source>Scopes cannot be null or empty.</source>
<target state="translated">Les portées ne peuvent pas être null ou vides.</target>
<note />
</trans-unit>
<trans-unit id="ID3040">
<trans-unit id="ID2040">
<source>The '{0}' and '{1}' parameters can only be used with a response type containing '{2}'.</source>
<target state="translated">Les paramètres '{0}' et '{1}' ne peuvent être utilisés qu'avec un type de réponse contenant '{2}'.</target>
<note />
</trans-unit>
<trans-unit id="ID3041">
<trans-unit id="ID2041">
<source>The specified '{0}' is not allowed when using PKCE.</source>
<target state="translated">Le '{0}' spécifié n'est pas autorisé lorsque PKCE est utilisé.</target>
<note />
</trans-unit>
<trans-unit id="ID3042">
<trans-unit id="ID2042">
<source>Scopes cannot contain spaces.</source>
<target state="translated">Les portées ne peuvent pas contenir d'espace.</target>
<note />
</trans-unit>
<trans-unit id="ID3043">
<trans-unit id="ID2043">
<source>The specified '{0}' is not valid for this client application.</source>
<target state="translated">Le '{0}' spécifié n'est pas valide pour cette application cliente.</target>
<note />
</trans-unit>
<trans-unit id="ID3044">
<trans-unit id="ID2044">
<source>The scope name cannot be null or empty.</source>
<target state="translated">Le nom de la portée ne peut pas être null ou vide.</target>
<note />
</trans-unit>
<trans-unit id="ID3045">
<trans-unit id="ID2045">
<source>The scope name cannot contain spaces.</source>
<target state="translated">Le nom de la portée ne peut pas contenir d'espace.</target>
<note />
</trans-unit>
<trans-unit id="ID3046">
<trans-unit id="ID2046">
<source>This client application is not allowed to use the authorization endpoint.</source>
<target state="translated">Cette application cliente n'est pas autorisée à utiliser le point de terminaison d'autorisation.</target>
<note />
</trans-unit>
<trans-unit id="ID3047">
<trans-unit id="ID2047">
<source>The client application is not allowed to use the authorization code flow.</source>
<target state="translated">Cette application cliente n'est pas autorisée à utiliser le flux d'autorisation par code.</target>
<note />
</trans-unit>
<trans-unit id="ID3048">
<trans-unit id="ID2048">
<source>The client application is not allowed to use the implicit flow.</source>
<target state="translated">Cette application cliente n'est pas autorisée à utiliser le flux implicite.</target>
<note />
</trans-unit>
<trans-unit id="ID3049">
<trans-unit id="ID2049">
<source>The client application is not allowed to use the hybrid flow.</source>
<target state="translated">Cette application cliente n'est pas autorisée à utiliser le flux hybride.</target>
<note />
</trans-unit>
<trans-unit id="ID3051">
<trans-unit id="ID2051">
<source>This client application is not allowed to use the specified scope.</source>
<target state="translated">Cette application cliente n'est pas autorisée à utiliser la portée spécifiée.</target>
<note />
</trans-unit>
<trans-unit id="ID3052">
<trans-unit id="ID2052">
<source>The specified '{0}' is invalid.</source>
<target state="translated">Le '{0}' spécifié n'est pas valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3053">
<trans-unit id="ID2053">
<source>The '{0}' parameter is not valid for this client application.</source>
<target state="translated">Le paramètre '{0}' n'est pas valide pour cette application cliente.</target>
<note />
</trans-unit>
<trans-unit id="ID3054">
<trans-unit id="ID2054">
<source>The '{0}' parameter required for this client application is missing.</source>
<target state="translated">Le paramètre '{0}' requis pour cette application cliente est manquant.</target>
<note />
</trans-unit>
<trans-unit id="ID3055">
<trans-unit id="ID2055">
<source>The specified client credentials are invalid.</source>
<target state="translated">Les identifiants client spécifiés ne sont pas valides.</target>
<note />
</trans-unit>
<trans-unit id="ID3056">
<trans-unit id="ID2056">
<source>This client application is not allowed to use the device endpoint.</source>
<target state="translated">Cette application cliente n'est pas autorisée à utiliser le point de terminaison d'appareil.</target>
<note />
</trans-unit>
<trans-unit id="ID3057">
<trans-unit id="ID2057">
<source>The '{0}' and '{1}' parameters are required when using the client credentials grant.</source>
<target state="translated">Les paramètres '{0}' et '{1}' sont requis lors que l'accès par identifiants client est utilisé.</target>
<note />
</trans-unit>
<trans-unit id="ID3058">
<trans-unit id="ID2058">
<source>The '{0}' parameter is required when using the device code grant.</source>
<target state="translated">Le paramètre '{0}' est requis lorsque l'accès par code d'appareil est utilisé.</target>
<note />
</trans-unit>
<trans-unit id="ID3059">
<trans-unit id="ID2059">
<source>The mandatory '{0}' and/or '{1}' parameters are missing.</source>
<target state="translated">Les paramètres obligatoires '{0}' et/ou '{1}' sont manquants.</target>
<note />
</trans-unit>
<trans-unit id="ID3060">
<trans-unit id="ID2060">
<source>A scope with the same name already exists.</source>
<target state="translated">Une portée avec le même nom existe déjà.</target>
<note />
</trans-unit>
<trans-unit id="ID3063">
<trans-unit id="ID2063">
<source>This client application is not allowed to use the token endpoint.</source>
<target state="translated">Cette application cliente n'est pas autorisée à utiliser le point de terminaison d'obtention de jeton.</target>
<note />
</trans-unit>
<trans-unit id="ID3064">
<trans-unit id="ID2064">
<source>This client application is not allowed to use the specified grant type.</source>
<target state="translated">Cette application cliente n'est pas autorisée à utiliser le type d'accès spécifié.</target>
<note />
</trans-unit>
<trans-unit id="ID3065">
<trans-unit id="ID2065">
<source>The client application is not allowed to use the '{0}' scope.</source>
<target state="translated">Cette application cliente n'est pas autorisée à utiliser la portée '{0}'.</target>
<note />
</trans-unit>
<trans-unit id="ID3066">
<trans-unit id="ID2066">
<source>The specified authorization code cannot be used without sending a client identifier.</source>
<target state="translated">Le code d'autorisation spécifié ne peut pas être utilisé sans envoyer d'identifiant client.</target>
<note />
</trans-unit>
<trans-unit id="ID3067">
<trans-unit id="ID2067">
<source>The specified device code cannot be used without sending a client identifier.</source>
<target state="translated">Le code d'appareil spécifié ne peut pas être utilisé sans envoyer d'identifiant client.</target>
<note />
</trans-unit>
<trans-unit id="ID3068">
<trans-unit id="ID2068">
<source>The specified refresh token cannot be used without sending a client identifier.</source>
<target state="translated">Le jeton de rafraîchissement spécifié ne peut pas être utilisé sans envoyer d'identifiant client.</target>
<note />
</trans-unit>
<trans-unit id="ID3069">
<trans-unit id="ID2069">
<source>The specified authorization code cannot be used by this client application.</source>
<target state="translated">Le code d'autorisation spécifié ne peut pas être utilisé par cette application cliente.</target>
<note />
</trans-unit>
<trans-unit id="ID3070">
<trans-unit id="ID2070">
<source>The specified device code cannot be used by this client application.</source>
<target state="translated">Le code d'appareil spécifié ne peut pas être utilisé par cette application cliente.</target>
<note />
</trans-unit>
<trans-unit id="ID3071">
<trans-unit id="ID2071">
<source>The specified refresh token cannot be used by this client application.</source>
<target state="translated">Le jeton de rafraîchissement spécifié ne peut pas être utilisé par cette application cliente.</target>
<note />
</trans-unit>
<trans-unit id="ID3072">
<trans-unit id="ID2072">
<source>The specified '{0}' parameter doesn't match the client redirection address the authorization code was initially sent to.</source>
<target state="translated">Le paramètre '{0}' spécifié ne correspond pas à l'adresse de redirection client à laquelle le code d'autorisation a été initialement envoyé.</target>
<note />
</trans-unit>
<trans-unit id="ID3073">
<trans-unit id="ID2073">
<source>The '{0}' parameter cannot be used when no '{1}' was specified in the authorization request.</source>
<target state="translated">Le paramètre '{0}' ne peut pas être utilisé lorsqu'aucun '{1}' n'a été spécifié dans la demande d'autorisation.</target>
<note />
</trans-unit>
<trans-unit id="ID3074">
<trans-unit id="ID2074">
<source>The '{0}' parameter is not valid in this context.</source>
<target state="translated">Le paramètre '{0}' n'est pas valide dans ce contexte.</target>
<note />
</trans-unit>
<trans-unit id="ID3075">
<trans-unit id="ID2075">
<source>This client application is not allowed to use the introspection endpoint.</source>
<target state="translated">Cette application cliente n'est pas autorisée à utiliser le point de terminaison d'introspection.</target>
<note />
</trans-unit>
<trans-unit id="ID3076">
<trans-unit id="ID2076">
<source>The specified token cannot be introspected.</source>
<target state="translated">Le jeton spécifié ne peut pas être introspecté.</target>
<note />
</trans-unit>
<trans-unit id="ID3077">
<trans-unit id="ID2077">
<source>The client application is not allowed to introspect the specified token.</source>
<target state="translated">L'application cliente n'est pas autorisée à introspecter le jeton spécifié.</target>
<note />
</trans-unit>
<trans-unit id="ID3078">
<trans-unit id="ID2078">
<source>This client application is not allowed to use the revocation endpoint.</source>
<target state="translated">Cette application cliente n'est pas autorisée à utiliser le point de terminaison de révocation.</target>
<note />
</trans-unit>
<trans-unit id="ID3079">
<trans-unit id="ID2079">
<source>This token cannot be revoked.</source>
<target state="translated">Ce jeton ne peut pas être révoqué.</target>
<note />
</trans-unit>
<trans-unit id="ID3080">
<trans-unit id="ID2080">
<source>The client application is not allowed to revoke the specified token.</source>
<target state="translated">Cette application cliente n'est pas autorisée à révoquer le jeton spécifié.</target>
<note />
</trans-unit>
<trans-unit id="ID3081">
<trans-unit id="ID2081">
<source>The mandatory '{0}' header is missing.</source>
<target state="translated">L'en-tête obligatoire '{0}' est manquant.</target>
<note />
</trans-unit>
<trans-unit id="ID3082">
<trans-unit id="ID2082">
<source>The specified '{0}' header is invalid.</source>
<target state="translated">L'en-tête '{0}' spécifié n'est pas valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3083">
<trans-unit id="ID2083">
<source>This server only accepts HTTPS requests.</source>
<target state="translated">Ce serveur n'accepte que des requêtes HTTPS.</target>
<note />
</trans-unit>
<trans-unit id="ID3084">
<trans-unit id="ID2084">
<source>The specified HTTP method is not valid.</source>
<target state="translated">La méthode HTTP spécifiée n'est pas valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3085">
<trans-unit id="ID2085">
<source>A token with the same reference identifier already exists.</source>
<target state="translated">Un jeton avec le même identifiant par référence existe déjà.</target>
<note />
</trans-unit>
<trans-unit id="ID3086">
<trans-unit id="ID2086">
<source>The token type cannot be null or empty.</source>
<target state="translated">Le type de jeton ne peut pas être null ou vide.</target>
<note />
</trans-unit>
<trans-unit id="ID3087">
<trans-unit id="ID2087">
<source>Multiple client credentials cannot be specified.</source>
<target state="translated">Plusieurs identifiants client ne peuvent pas être spécifiés.</target>
<note />
</trans-unit>
<trans-unit id="ID3088">
<trans-unit id="ID2088">
<source>The issuer associated to the specified token is not valid.</source>
<target state="translated">L'émetteur associé au jeton spécifié n'est pas valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3089">
<trans-unit id="ID2089">
<source>The specified token is not of the expected type.</source>
<target state="translated">Le jeton spécifié n'est pas du type attendu.</target>
<note />
</trans-unit>
<trans-unit id="ID3090">
<trans-unit id="ID2090">
<source>The signing key associated to the specified token was not found.</source>
<target state="translated">La clé de signature associée au jeton spécifié n'a pas été trouvée.</target>
<note />
</trans-unit>
<trans-unit id="ID3091">
<trans-unit id="ID2091">
<source>The signature associated to the specified token is not valid.</source>
<target state="translated">La signature associée au jeton spécifiée n'est pas valid.</target>
<note />
</trans-unit>
<trans-unit id="ID3092">
<trans-unit id="ID2092">
<source>This resource server is currently unavailable.</source>
<target state="translated">Ce serveur de ressource est actuellement indisponible.</target>
<note />
</trans-unit>
<trans-unit id="ID3093">
<trans-unit id="ID2093">
<source>The specified token doesn't contain any audience.</source>
<target state="translated">Le jeton spécifié ne contient aucune audience.</target>
<note />
</trans-unit>
<trans-unit id="ID3094">
<trans-unit id="ID2094">
<source>The specified token cannot be used with this resource server.</source>
<target state="translated">Le jeton spécifié ne peut pas être utilisé par ce serveur de ressource.</target>
<note />
</trans-unit>
<trans-unit id="ID3095">
<trans-unit id="ID2095">
<source>The user represented by the token is not allowed to perform the requested action.</source>
<target state="translated">L'utilisateur représenté par le jeton n'est pas autorisé à exécuter l'action demandée.</target>
<note />
</trans-unit>
<trans-unit id="ID3096">
<trans-unit id="ID2096">
<source>No issuer could be found in the server configuration.</source>
<target state="translated">Aucun émetteur n'a pu être trouvé dans la configuration du serveur.</target>
<note />
</trans-unit>
<trans-unit id="ID3097">
<trans-unit id="ID2097">
<source>A server configuration containing an invalid issuer was returned.</source>
<target state="translated">Une configuration serveur contenant un émetteur non valide a été retournée.</target>
<note />
</trans-unit>
<trans-unit id="ID3098">
<trans-unit id="ID2098">
<source>The issuer returned in the server configuration is not valid.</source>
<target state="translated">L'émetteur retourné dans la configuration du serveur n'est pas valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3099">
<trans-unit id="ID2099">
<source>No JWKS endpoint could be found in the server configuration.</source>
<target state="translated">Aucun point de terminaison JWKS n'a pu être trouvé dans la configuration du serveur.</target>
<note />
</trans-unit>
<trans-unit id="ID3100">
<trans-unit id="ID2100">
<source>A server configuration containing an invalid JWKS endpoint URL was returned.</source>
<target state="translated">Une configuration serveur contenant une URL invalide pour le point de terminaison JWKS a été retournée.</target>
<note />
</trans-unit>
<trans-unit id="ID3101">
<trans-unit id="ID2101">
<source>A server configuration containing an invalid introspection endpoint URL was returned.</source>
<target state="translated">Une configuration serveur contenant une URL invalide pour le point de terminaison d'introspection a été retournée.</target>
<note />
</trans-unit>
<trans-unit id="ID3102">
<trans-unit id="ID2102">
<source>The JWKS document didn't contain a valid '{0}' node with at least one key.</source>
<target state="translated">Le document JWKS ne contenait pas de nœud '{0}' valide comportant au moins une clé.</target>
<note />
</trans-unit>
<trans-unit id="ID3103">
<trans-unit id="ID2103">
<source>A JWKS response containing an unsupported key was returned.</source>
<target state="translated">Une réponse JWKS contenant une clé non supportée a été retournée.</target>
<note />
</trans-unit>
<trans-unit id="ID3104">
<trans-unit id="ID2104">
<source>A JWKS response containing an invalid key was returned.</source>
<target state="translated">Une réponse JWKS contenant une clé non valide a été retournée.</target>
<note />
</trans-unit>
<trans-unit id="ID3105">
<trans-unit id="ID2105">
<source>The mandatory '{0}' parameter couldn't be found in the introspection response.</source>
<target state="translated">Le paramètre obligatoire '{0}' n'a pu être trouvé dans la réponse d'introspection.</target>
<note />
</trans-unit>
<trans-unit id="ID3106">
<trans-unit id="ID2106">
<source>The token was rejected by the remote authentication server.</source>
<target state="translated">Le jeton a été rejeté par le serveur d'authentification distant.</target>
<note />
</trans-unit>
<trans-unit id="ID3107">
<trans-unit id="ID2107">
<source>The '{0}' claim is malformed or isn't of the expected type.</source>
<target state="translated">La revendication '{0}' est malformée ou n'est pas du type attendu.</target>
<note />
</trans-unit>
<trans-unit id="ID3108">
<trans-unit id="ID2108">
<source>An introspection response containing a malformed issuer was returned.</source>
<target state="translated">Une réponse d'introspection contenant un émetteur malformé a été retournée.</target>
<note />
</trans-unit>
<trans-unit id="ID3109">
<trans-unit id="ID2109">
<source>The issuer returned in the introspection response is not valid.</source>
<target state="translated">L'émetteur retourné dans la réponse d'introspection n'est pas valide.</target>
<note />
</trans-unit>
<trans-unit id="ID3110">
<trans-unit id="ID2110">
<source>The type of the introspected token doesn't match the expected type.</source>
<target state="translated">Le type du jeton introspecté ne correspond pas au type attendu.</target>
<note />
</trans-unit>
<trans-unit id="ID3111">
<trans-unit id="ID2111">
<source>An application with the same client identifier already exists.</source>
<target state="translated">Une application avec le même identifiant client existe déjà.</target>
<note />
</trans-unit>
<trans-unit id="ID3112">
<trans-unit id="ID2112">
<source>Only confidential, hybrid or public applications are supported by the default application manager.</source>
<target state="translated">Seules les applications confidentielles, hybrides ou publiques sont supportées par le gestionnaire d'application par défaut.</target>
<note />
</trans-unit>
<trans-unit id="ID3113">
<trans-unit id="ID2113">
<source>The client secret cannot be null or empty for a confidential application.</source>
<target state="translated">Le secret client ne peut pas être null ou vide pour une application confidentielle.</target>
<note />
</trans-unit>
<trans-unit id="ID3114">
<trans-unit id="ID2114">
<source>A client secret cannot be associated with a public application.</source>
<target state="translated">Un secret client ne peut pas être associé à une application publique.</target>
<note />
</trans-unit>
<trans-unit id="ID3115">
<trans-unit id="ID2115">
<source>Callback URLs cannot contain a fragment.</source>
<target state="translated">Les URLs de rappel ne peuvent pas contenir de fragment.</target>
<note />
</trans-unit>
<trans-unit id="ID3116">
<trans-unit id="ID2116">
<source>The authorization type cannot be null or empty.</source>
<target state="translated">Le type d'autorisation ne peut pas être null ou vide.</target>
<note />
</trans-unit>
<trans-unit id="ID3117">
<trans-unit id="ID2117">
<source>The specified authorization type is not supported by the default token manager.</source>
<target state="translated">Le type d'autorisation spécifié n'est pas supporté par le gestionnaire de jeton par défaut.</target>
<note />
</trans-unit>
<trans-unit id="ID3118">
<trans-unit id="ID2118">
<source>The client type cannot be null or empty.</source>
<target state="translated">Le type de client ne peut pas être null ou vide.</target>
<note />
</trans-unit>
<trans-unit id="ID3119">
<trans-unit id="ID2119">
<source>Callback URLs cannot be null or empty.</source>
<target state="translated">Les URLs de rappel ne peuvent pas être null ou vides.</target>
<note />
</trans-unit>
<trans-unit id="ID3120">
<trans-unit id="ID2120">
<source>Callback URLs must be valid absolute URLs.</source>
<target state="translated">Les URLs de rappel doit être des URLs valides et absolues.</target>
<note />
</trans-unit>
<trans-unit id="ID9000">
<trans-unit id="ID8000">
<source>Removes orphaned tokens and authorizations from the database.</source>
<target state="translated">Supprime les jetons et autorisations orphelines de la base de données.</target>
<note />
</trans-unit>
<trans-unit id="ID9001">
<trans-unit id="ID8001">
<source>Starts the scheduled task at regular intervals.</source>
<target state="translated">Démarre la tâche planifiée à intervalles réguliers.</target>
<note />

238
src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.gu.xlf

@ -2,597 +2,597 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="gu" original="../OpenIddictResources.resx">
<body>
<trans-unit id="ID3000">
<trans-unit id="ID2000">
<source>The security token is missing.</source>
<target state="translated">સુરક્ષા ટોકન ખૂટે છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3001">
<trans-unit id="ID2001">
<source>The specified authorization code is invalid.</source>
<target state="translated">ઉલ્લેખિત અધિકૃતતા કોડ અમાન્ય છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3002">
<trans-unit id="ID2002">
<source>The specified device code is invalid.</source>
<target state="translated">ઉલ્લેખિત ઉપકરણ કોડ અમાન્ય છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3003">
<trans-unit id="ID2003">
<source>The specified refresh token is invalid.</source>
<target state="translated">ઉલ્લેખિત રીફ્રેશ ટોકન અમાન્ય છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3004">
<trans-unit id="ID2004">
<source>The specified token is invalid.</source>
<target state="translated">ઉલ્લેખિત ટોકન અમાન્ય છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3005">
<trans-unit id="ID2005">
<source>The specified token is not an authorization code.</source>
<target state="translated">ઉલ્લેખિત ટોકન એ અધિકૃતતા કોડ નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3006">
<trans-unit id="ID2006">
<source>The specified token is not an device code.</source>
<target state="translated">ઉલ્લેખિત ટોકન એ કોઈ ડિવાઇસ કોડ નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3007">
<trans-unit id="ID2007">
<source>The specified token is not a refresh token.</source>
<target state="translated">ઉલ્લેખિત ટોકન રીફ્રેશ ટોકન નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3008">
<trans-unit id="ID2008">
<source>The specified token is not an access token.</source>
<target state="translated">ઉલ્લેખિત ટોકન એ પ્રવેશ ટોકન નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3009">
<trans-unit id="ID2009">
<source>The specified identity token is invalid.</source>
<target state="translated">ઉલ્લેખિત ઓળખ ટોકન અમાન્ય છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3010">
<trans-unit id="ID2010">
<source>The specified authorization code has already been redeemed.</source>
<target state="translated">ઉલ્લેખિત અધિકૃતતા કોડ પહેલાથી જ રિડિમ થઈ ગયો છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3011">
<trans-unit id="ID2011">
<source>The specified device code has already been redeemed.</source>
<target state="translated">ઉલ્લેખિત ડિવાઇસ કોડ પહેલાથી રિડિમ થઈ ગયો છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3012">
<trans-unit id="ID2012">
<source>The specified refresh token has already been redeemed.</source>
<target state="translated">ઉલ્લેખિત રીફ્રેશ ટોકન પહેલાથી જ રિડિમ કરવામાં આવ્યું છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3013">
<trans-unit id="ID2013">
<source>The specified token has already been redeemed.</source>
<target state="translated">ઉલ્લેખિત ટોકન પહેલાથી જ રિડીમ કરવામાં આવ્યું છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3014">
<trans-unit id="ID2014">
<source>The authorization has not been granted yet by the end user.</source>
<target state="translated">અંતિમ વપરાશકર્તા દ્વારા હજી સુધી અધિકૃતતા આપવામાં આવી નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3015">
<trans-unit id="ID2015">
<source>The authorization was denied by the end user.</source>
<target state="translated">અંતિમ વપરાશકર્તા દ્વારા અધિકૃતતા નકારી હતી.</target>
<note />
</trans-unit>
<trans-unit id="ID3016">
<trans-unit id="ID2016">
<source>The specified authorization code is no longer valid.</source>
<target state="translated">ઉલ્લેખિત અધિકૃતતા કોડ હવે માન્ય નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3017">
<trans-unit id="ID2017">
<source>The specified device code is no longer valid.</source>
<target state="translated">ઉલ્લેખિત ઉપકરણ કોડ હવે માન્ય નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3018">
<trans-unit id="ID2018">
<source>The specified refresh token is no longer valid.</source>
<target state="translated">ઉલ્લેખિત રીફ્રેશ ટોકન હવે માન્ય નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3019">
<trans-unit id="ID2019">
<source>The specified token is no longer valid.</source>
<target state="translated">ઉલ્લેખિત ટોકન હવે માન્ય નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3020">
<trans-unit id="ID2020">
<source>The authorization associated with the authorization code is no longer valid.</source>
<target state="translated">અધિકૃતતા કોડ સાથે સંકળાયેલ અધિકૃતતા હવે માન્ય નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3021">
<trans-unit id="ID2021">
<source>The authorization associated with the device code is no longer valid.</source>
<target state="translated">ડિવાઇસ કોડ સાથે સંકળાયેલ અધિકૃતતા હવે માન્ય નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3022">
<trans-unit id="ID2022">
<source>The authorization associated with the refresh token is no longer valid.</source>
<target state="translated">રીફ્રેશ ટોકન સાથે સંકળાયેલ અધિકૃતતા હવે માન્ય નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3023">
<trans-unit id="ID2023">
<source>The authorization associated with the token is no longer valid.</source>
<target state="translated">ટોકન સાથે સંકળાયેલ અધિકૃતતા હવે માન્ય નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3024">
<trans-unit id="ID2024">
<source>The token request was rejected by the authentication server.</source>
<target state="translated">પ્રમાણીકરણ સર્વર દ્વારા ટોકન વિનંતીને નકારી કા .ી હતી.</target>
<note />
</trans-unit>
<trans-unit id="ID3025">
<trans-unit id="ID2025">
<source>The user information access demand was rejected by the authentication server.</source>
<target state="translated">વપરાશકર્તા માહિતી પ્રવેશ માંગને પ્રમાણીકરણ સર્વર દ્વારા નકારી હતી.</target>
<note />
</trans-unit>
<trans-unit id="ID3026">
<trans-unit id="ID2026">
<source>The specified user code is no longer valid.</source>
<target state="translated">ઉલ્લેખિત વપરાશકર્તા કોડ હવે માન્ય નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3028">
<trans-unit id="ID2028">
<source>The '{0}' parameter is not supported.</source>
<target state="translated">'{0}' પેરામીટર સપોર્ટેડ નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3029">
<trans-unit id="ID2029">
<source>The mandatory '{0}' parameter is missing.</source>
<target state="translated">ફરજિયાત '{0}' પરિમાણ ખૂટે છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3030">
<trans-unit id="ID2030">
<source>The '{0}' parameter must be a valid absolute URL.</source>
<target state="translated">'{0}' પરિમાણ એક માન્ય સંપૂર્ણ URL હોવું આવશ્યક છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3031">
<trans-unit id="ID2031">
<source>The '{0}' parameter must not include a fragment.</source>
<target state="translated">'{0}' પરિમાણમાં કોઈ ટુકડો શામેલ હોવો જોઈએ નહીં.</target>
<note />
</trans-unit>
<trans-unit id="ID3032">
<trans-unit id="ID2032">
<source>The specified '{0}' is not supported.</source>
<target state="translated">ઉલ્લેખિત '{0}' સપોર્ટેડ નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3033">
<trans-unit id="ID2033">
<source>The specified '{0}'/'{1}' combination is invalid.</source>
<target state="translated">ઉલ્લેખિત '{0}' / '{1}' સંયોજન અમાન્ય છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3034">
<trans-unit id="ID2034">
<source>The mandatory '{0}' scope is missing.</source>
<target state="translated">ફરજિયાત '{0}' અવકાશ ખૂટે છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3035">
<trans-unit id="ID2035">
<source>The '{0}' scope is not allowed.</source>
<target state="translated">'{0}' અવકાશની મંજૂરી નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3036">
<trans-unit id="ID2036">
<source>The client identifier cannot be null or empty.</source>
<target state="translated">ક્લાયંટ ઓળખકર્તા નલ અથવા ખાલી હોઈ શકતા નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3037">
<trans-unit id="ID2037">
<source>The '{0}' parameter cannot be used without '{1}'.</source>
<target state="translated">'{0}' પરિમાણનો ઉપયોગ '{1}' વગર કરી શકાતો નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3038">
<trans-unit id="ID2038">
<source>The status cannot be null or empty.</source>
<target state="translated">સ્થિતિ નલ અથવા ખાલી હોઈ શકતી નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3039">
<trans-unit id="ID2039">
<source>Scopes cannot be null or empty.</source>
<target state="translated">અવકાશ શૂન્ય અથવા ખાલી ન હોઈ શકે.</target>
<note />
</trans-unit>
<trans-unit id="ID3040">
<trans-unit id="ID2040">
<source>The '{0}' and '{1}' parameters can only be used with a response type containing '{2}'.</source>
<target state="translated">'{0}' અને '{1}' પરિમાણો ફક્ત '{2}' ધરાવતા પ્રતિભાવ પ્રકાર સાથે જ વાપરી શકાય છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3041">
<trans-unit id="ID2041">
<source>The specified '{0}' is not allowed when using PKCE.</source>
<target state="translated">ઉલ્લેખિત '{0}' ને પીકેસીઇનો ઉપયોગ કરતી વખતે મંજૂરી નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3042">
<trans-unit id="ID2042">
<source>Scopes cannot contain spaces.</source>
<target state="translated">અવકાશમાં જગ્યાઓ શામેલ હોઈ શકતી નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3043">
<trans-unit id="ID2043">
<source>The specified '{0}' is not valid for this client application.</source>
<target state="translated">ઉલ્લેખિત '{0}' આ ક્લાયંટ એપ્લિકેશન માટે માન્ય નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3044">
<trans-unit id="ID2044">
<source>The scope name cannot be null or empty.</source>
<target state="translated">અવકાશનું નામ નલ અથવા ખાલી હોઈ શકતું નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3045">
<trans-unit id="ID2045">
<source>The scope name cannot contain spaces.</source>
<target state="translated">અવકાશ નામમાં જગ્યાઓ શામેલ હોઈ શકતી નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3046">
<trans-unit id="ID2046">
<source>This client application is not allowed to use the authorization endpoint.</source>
<target state="translated">આ ક્લાયંટ એપ્લિકેશનને અધિકૃતતા એન્ડપોઇન્ટનો ઉપયોગ કરવાની મંજૂરી નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3047">
<trans-unit id="ID2047">
<source>The client application is not allowed to use the authorization code flow.</source>
<target state="translated">ક્લાયંટ એપ્લિકેશનને અધિકૃતતા કોડ ફ્લોનો ઉપયોગ કરવાની મંજૂરી નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3048">
<trans-unit id="ID2048">
<source>The client application is not allowed to use the implicit flow.</source>
<target state="translated">ક્લાયંટ એપ્લિકેશનને ગર્ભિત પ્રવાહનો ઉપયોગ કરવાની મંજૂરી નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3049">
<trans-unit id="ID2049">
<source>The client application is not allowed to use the hybrid flow.</source>
<target state="translated">ક્લાયંટ એપ્લિકેશનને હાઇબ્રિડ ફ્લોનો ઉપયોગ કરવાની મંજૂરી નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3051">
<trans-unit id="ID2051">
<source>This client application is not allowed to use the specified scope.</source>
<target state="translated">આ ક્લાયંટ એપ્લિકેશનને ઉલ્લેખિત અવકાશનો ઉપયોગ કરવાની મંજૂરી નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3052">
<trans-unit id="ID2052">
<source>The specified '{0}' is invalid.</source>
<target state="translated">ઉલ્લેખિત '{0}' અમાન્ય છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3053">
<trans-unit id="ID2053">
<source>The '{0}' parameter is not valid for this client application.</source>
<target state="translated">આ ક્લાયંટ એપ્લિકેશન માટે '{0}' પરિમાણ માન્ય નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3054">
<trans-unit id="ID2054">
<source>The '{0}' parameter required for this client application is missing.</source>
<target state="translated">આ ક્લાયંટ એપ્લિકેશન માટે જરૂરી '{0}' પરિમાણ ખૂટે છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3055">
<trans-unit id="ID2055">
<source>The specified client credentials are invalid.</source>
<target state="translated">ઉલ્લેખિત ગ્રાહકના ઓળખપત્રો અમાન્ય છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3056">
<trans-unit id="ID2056">
<source>This client application is not allowed to use the device endpoint.</source>
<target state="translated">આ ક્લાયંટ એપ્લિકેશનને ડિવાઇસ એન્ડપોઇન્ટનો ઉપયોગ કરવાની મંજૂરી નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3057">
<trans-unit id="ID2057">
<source>The '{0}' and '{1}' parameters are required when using the client credentials grant.</source>
<target state="translated">ક્લાયંટ ઓળખાણપત્ર અનુદાનનો ઉપયોગ કરતી વખતે '{0}' અને '{1}' પરિમાણો આવશ્યક છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3058">
<trans-unit id="ID2058">
<source>The '{0}' parameter is required when using the device code grant.</source>
<target state="translated">ડિવાઇસ કોડ ગ્રાન્ટનો ઉપયોગ કરતી વખતે '{0}' પેરામીટર આવશ્યક છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3059">
<trans-unit id="ID2059">
<source>The mandatory '{0}' and/or '{1}' parameters are missing.</source>
<target state="translated">ફરજિયાત '{0}' અને/અથવા '{1}' પરિમાણો ખૂટે છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3060">
<trans-unit id="ID2060">
<source>A scope with the same name already exists.</source>
<target state="translated">સમાન નામનો અવકાશ પહેલેથી અસ્તિત્વમાં છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3063">
<trans-unit id="ID2063">
<source>This client application is not allowed to use the token endpoint.</source>
<target state="translated">આ ક્લાયંટ એપ્લિકેશનને ટોકન એન્ડપોઇન્ટનો ઉપયોગ કરવાની મંજૂરી નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3064">
<trans-unit id="ID2064">
<source>This client application is not allowed to use the specified grant type.</source>
<target state="translated">આ ક્લાયંટ એપ્લિકેશનને ઉલ્લેખિત અનુદાન પ્રકારનો ઉપયોગ કરવાની મંજૂરી નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3065">
<trans-unit id="ID2065">
<source>The client application is not allowed to use the '{0}' scope.</source>
<target state="translated">ક્લાયંટ એપ્લિકેશનને '{0}' અવકાશનો ઉપયોગ કરવાની મંજૂરી નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3066">
<trans-unit id="ID2066">
<source>The specified authorization code cannot be used without sending a client identifier.</source>
<target state="translated">ઉલ્લેખિત અધિકૃતતા કોડનો ઉપયોગ ક્લાયંટ ઓળખકર્તાને મોકલ્યા વગર કરી શકાતો નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3067">
<trans-unit id="ID2067">
<source>The specified device code cannot be used without sending a client identifier.</source>
<target state="translated">ઉલ્લેખિત ડિવાઇસ કોડનો ઉપયોગ ક્લાયંટ ઓળખકર્તાને મોકલ્યા વગર કરી શકાતો નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3068">
<trans-unit id="ID2068">
<source>The specified refresh token cannot be used without sending a client identifier.</source>
<target state="translated">ઉલ્લેખિત રિફ્રેશ ટોકનનો ઉપયોગ ક્લાયંટ ઓળખકર્તાને મોકલ્યા વગર કરી શકાતો નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3069">
<trans-unit id="ID2069">
<source>The specified authorization code cannot be used by this client application.</source>
<target state="translated">ઉલ્લેખિત અધિકૃતતા કોડનો ઉપયોગ આ ક્લાયંટ એપ્લિકેશન દ્વારા કરી શકાતો નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3070">
<trans-unit id="ID2070">
<source>The specified device code cannot be used by this client application.</source>
<target state="translated">ઉલ્લેખિત ડિવાઇસ કોડનો ઉપયોગ આ ક્લાયંટ એપ્લિકેશન દ્વારા કરી શકાતો નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3071">
<trans-unit id="ID2071">
<source>The specified refresh token cannot be used by this client application.</source>
<target state="translated">ઉલ્લેખિત રીફ્રેશ ટોકનનો ઉપયોગ આ ક્લાયંટ એપ્લિકેશન દ્વારા કરી શકાતો નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3072">
<trans-unit id="ID2072">
<source>The specified '{0}' parameter doesn't match the client redirection address the authorization code was initially sent to.</source>
<target state="translated">ઉલ્લેખિત '{0}' પરિમાણ ક્લાયંટ રીડાયરેક્શન સરનામાં સાથે મેળ ખાતું નથી જે શરૂઆતમાં અધિકૃતિ કોડને મોકલવામાં આવ્યું હતું.</target>
<note />
</trans-unit>
<trans-unit id="ID3073">
<trans-unit id="ID2073">
<source>The '{0}' parameter cannot be used when no '{1}' was specified in the authorization request.</source>
<target state="translated">જ્યારે '{0}' પરિમાણનો ઉપયોગ સત્તાધિકરણ વિનંતીમાં કોઈ '{1}' ઉલ્લેખિત ન થાય ત્યારે કરી શકાશે નહીં.</target>
<note />
</trans-unit>
<trans-unit id="ID3074">
<trans-unit id="ID2074">
<source>The '{0}' parameter is not valid in this context.</source>
<target state="translated">'{0}' પરિમાણ આ સંદર્ભમાં માન્ય નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3075">
<trans-unit id="ID2075">
<source>This client application is not allowed to use the introspection endpoint.</source>
<target state="translated">આ ક્લાયંટ એપ્લિકેશનને આત્મનિરીક્ષણ અંતિમ બિંદુનો ઉપયોગ કરવાની મંજૂરી નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3076">
<trans-unit id="ID2076">
<source>The specified token cannot be introspected.</source>
<target state="translated">ઉલ્લેખિત ટોકન આત્મનિરીક્ષણ કરી શકાતું નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3077">
<trans-unit id="ID2077">
<source>The client application is not allowed to introspect the specified token.</source>
<target state="translated">ક્લાયંટ એપ્લિકેશનને ઉલ્લેખિત ટોકનને આત્મનિરીક્ષણ કરવાની મંજૂરી નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3078">
<trans-unit id="ID2078">
<source>This client application is not allowed to use the revocation endpoint.</source>
<target state="translated">આ ક્લાયંટ એપ્લિકેશનને રિવોલ્યુશન એન્ડપોઇન્ટનો ઉપયોગ કરવાની મંજૂરી નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3079">
<trans-unit id="ID2079">
<source>This token cannot be revoked.</source>
<target state="translated">આ ટોકન રદ કરી શકાતું નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3080">
<trans-unit id="ID2080">
<source>The client application is not allowed to revoke the specified token.</source>
<target state="translated">ક્લાયંટ એપ્લિકેશનને ઉલ્લેખિત ટોકન રદ કરવાની મંજૂરી નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3081">
<trans-unit id="ID2081">
<source>The mandatory '{0}' header is missing.</source>
<target state="translated">ફરજિયાત '{0}' હેડર ખૂટે છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3082">
<trans-unit id="ID2082">
<source>The specified '{0}' header is invalid.</source>
<target state="translated">ઉલ્લેખિત '{0}' મથાળું અમાન્ય છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3083">
<trans-unit id="ID2083">
<source>This server only accepts HTTPS requests.</source>
<target state="translated">આ સર્વર ફક્ત HTTPS વિનંતીઓ સ્વીકારે છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3084">
<trans-unit id="ID2084">
<source>The specified HTTP method is not valid.</source>
<target state="translated">ઉલ્લેખિત એચટીટીપી પદ્ધતિ માન્ય નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3085">
<trans-unit id="ID2085">
<source>A token with the same reference identifier already exists.</source>
<target state="translated">સમાન સંદર્ભ ઓળખકર્તા સાથેનું એક ટોકન પહેલાથી અસ્તિત્વમાં છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3086">
<trans-unit id="ID2086">
<source>The token type cannot be null or empty.</source>
<target state="translated">ટોકન પ્રકાર નલ અથવા ખાલી હોઈ શકતો નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3087">
<trans-unit id="ID2087">
<source>Multiple client credentials cannot be specified.</source>
<target state="translated">મલ્ટીપલ ક્લાયંટ ઓળખપત્રોનો ઉલ્લેખ કરી શકાતો નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3088">
<trans-unit id="ID2088">
<source>The issuer associated to the specified token is not valid.</source>
<target state="translated">ઉલ્લેખિત ટોકન સાથે સંકળાયેલ ઇશ્યુઅર માન્ય નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3089">
<trans-unit id="ID2089">
<source>The specified token is not of the expected type.</source>
<target state="translated">ઉલ્લેખિત ટોકન અપેક્ષિત પ્રકારનું નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3090">
<trans-unit id="ID2090">
<source>The signing key associated to the specified token was not found.</source>
<target state="translated">ઉલ્લેખિત ટોકન સાથે સંકળાયેલ સાઇનિંગ કી મળી ન હતી.</target>
<note />
</trans-unit>
<trans-unit id="ID3091">
<trans-unit id="ID2091">
<source>The signature associated to the specified token is not valid.</source>
<target state="translated">ઉલ્લેખિત ટોકન સાથે સંકળાયેલ સહી માન્ય નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3092">
<trans-unit id="ID2092">
<source>This resource server is currently unavailable.</source>
<target state="translated">આ સંસાધન સર્વર હાલમાં અનુપલબ્ધ છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3093">
<trans-unit id="ID2093">
<source>The specified token doesn't contain any audience.</source>
<target state="translated">ઉલ્લેખિત ટોકનમાં કોઈ પ્રેક્ષક શામેલ નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3094">
<trans-unit id="ID2094">
<source>The specified token cannot be used with this resource server.</source>
<target state="translated">ઉલ્લેખિત ટોકનનો ઉપયોગ આ સાધન સર્વર સાથે કરી શકાતો નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3095">
<trans-unit id="ID2095">
<source>The user represented by the token is not allowed to perform the requested action.</source>
<target state="translated">ટોકન દ્વારા રજૂ કરાયેલ વપરાશકર્તાને વિનંતી કરેલી ક્રિયા કરવાની મંજૂરી નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3096">
<trans-unit id="ID2096">
<source>No issuer could be found in the server configuration.</source>
<target state="translated">સર્વર ગોઠવણીમાં કોઈ જારી કરનાર મળી શક્યો નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3097">
<trans-unit id="ID2097">
<source>A server configuration containing an invalid issuer was returned.</source>
<target state="translated">અમાન્ય અદા કરનારનો સર્વર ગોઠવણી પાછો ફર્યો હતો.</target>
<note />
</trans-unit>
<trans-unit id="ID3098">
<trans-unit id="ID2098">
<source>The issuer returned in the server configuration is not valid.</source>
<target state="translated">સર્વર ગોઠવણીમાં પાછો આપનાર માન્ય નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3099">
<trans-unit id="ID2099">
<source>No JWKS endpoint could be found in the server configuration.</source>
<target state="translated">સર્વર ગોઠવણીમાં કોઈ જેડબ્લ્યુકેએસ સમાપ્ત બિંદુ મળી શક્યું નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3100">
<trans-unit id="ID2100">
<source>A server configuration containing an invalid JWKS endpoint URL was returned.</source>
<target state="translated">અમાન્ય જેડબ્લ્યુકેએસ અંતિમ બિંદુ URL ધરાવતો સર્વર ગોઠવણી પાછો ફર્યો હતો.</target>
<note />
</trans-unit>
<trans-unit id="ID3101">
<trans-unit id="ID2101">
<source>A server configuration containing an invalid introspection endpoint URL was returned.</source>
<target state="translated">અમાન્ય આત્મનિરીક્ષણ અંતિમ બિંદુ URL ધરાવતો સર્વર ગોઠવણી પાછો ફર્યો હતો.</target>
<note />
</trans-unit>
<trans-unit id="ID3102">
<trans-unit id="ID2102">
<source>The JWKS document didn't contain a valid '{0}' node with at least one key.</source>
<target state="translated">જેડબ્લ્યુકેએસ દસ્તાવેજમાં ઓછામાં ઓછી એક કી સાથે માન્ય '{0}' નોડ શામેલ નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3103">
<trans-unit id="ID2103">
<source>A JWKS response containing an unsupported key was returned.</source>
<target state="translated">અસમર્થિત કી ધરાવતા જેડબ્લ્યુકેએસ નો જવાબ પાછો ફર્યો.</target>
<note />
</trans-unit>
<trans-unit id="ID3104">
<trans-unit id="ID2104">
<source>A JWKS response containing an invalid key was returned.</source>
<target state="translated">અમાન્ય કી ધરાવતા જેડબ્લ્યુકેએસ પ્રતિસાદ પાછો ફર્યો.</target>
<note />
</trans-unit>
<trans-unit id="ID3105">
<trans-unit id="ID2105">
<source>The mandatory '{0}' parameter couldn't be found in the introspection response.</source>
<target state="translated">ફરજિયાત '{0}' પરિમાણ આત્મનિરીક્ષણ પ્રતિસાદમાં શોધી શકાયું નહીં.</target>
<note />
</trans-unit>
<trans-unit id="ID3106">
<trans-unit id="ID2106">
<source>The token was rejected by the remote authentication server.</source>
<target state="translated">દૂરસ્થ પ્રમાણીકરણ સર્વર દ્વારા ટોકન નામંજૂર કરવામાં આવ્યું હતું.</target>
<note />
</trans-unit>
<trans-unit id="ID3107">
<trans-unit id="ID2107">
<source>The '{0}' claim is malformed or isn't of the expected type.</source>
<target state="translated">'{0}' દાવો દૂષિત છે અથવા અપેક્ષિત પ્રકારનો નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3108">
<trans-unit id="ID2108">
<source>An introspection response containing a malformed issuer was returned.</source>
<target state="translated">દૂષિત અદા કરનારનો આત્મનિરીક્ષણ પ્રતિસાદ પાછો ફર્યો.</target>
<note />
</trans-unit>
<trans-unit id="ID3109">
<trans-unit id="ID2109">
<source>The issuer returned in the introspection response is not valid.</source>
<target state="translated">આ રજૂઆત કરનાર આત્મનિરીક્ષણ પ્રતિસાદમાં પરત માન્ય નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3110">
<trans-unit id="ID2110">
<source>The type of the introspected token doesn't match the expected type.</source>
<target state="translated">આત્મનિરીક્ષણવાળા ટોકનનો પ્રકાર અપેક્ષિત પ્રકાર સાથે મેળ ખાતો નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3111">
<trans-unit id="ID2111">
<source>An application with the same client identifier already exists.</source>
<target state="translated">સમાન ક્લાયંટ ઓળખકર્તા સાથેની એક એપ્લિકેશન પહેલેથી અસ્તિત્વમાં છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3112">
<trans-unit id="ID2112">
<source>Only confidential, hybrid or public applications are supported by the default application manager.</source>
<target state="translated">મૂળભૂત એપ્લિકેશન મેનેજર દ્વારા ફક્ત ગોપનીય, વર્ણસંકર અથવા સાર્વજનિક એપ્લિકેશનોને ટેકો આપવામાં આવે છે.</target>
<note />
</trans-unit>
<trans-unit id="ID3113">
<trans-unit id="ID2113">
<source>The client secret cannot be null or empty for a confidential application.</source>
<target state="translated">ગુપ્ત એપ્લિકેશન માટે ક્લાયંટ ક્લાયંટ નલ અથવા ખાલી હોઈ શકતું નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3114">
<trans-unit id="ID2114">
<source>A client secret cannot be associated with a public application.</source>
<target state="translated">ક્લાયંટ સિક્રેટ જાહેર એપ્લિકેશન સાથે સંકળાયેલ હોઈ શકે નહીં.</target>
<note />
</trans-unit>
<trans-unit id="ID3115">
<trans-unit id="ID2115">
<source>Callback URLs cannot contain a fragment.</source>
<target state="translated">કોલબેક URL માં કોઈ ટુકડો હોઈ શકતો નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3116">
<trans-unit id="ID2116">
<source>The authorization type cannot be null or empty.</source>
<target state="translated">અધિકૃતતાનો પ્રકાર નલ અથવા ખાલી હોઈ શકતો નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3117">
<trans-unit id="ID2117">
<source>The specified authorization type is not supported by the default token manager.</source>
<target state="translated">ઉલ્લેખિત અધિકૃતતાનો પ્રકાર મૂળભૂત ટોકન મેનેજર દ્વારા સપોર્ટેડ નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3118">
<trans-unit id="ID2118">
<source>The client type cannot be null or empty.</source>
<target state="translated">ક્લાયંટનો પ્રકાર નલ અથવા ખાલી હોઈ શકતો નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3119">
<trans-unit id="ID2119">
<source>Callback URLs cannot be null or empty.</source>
<target state="translated">ક કોલબેક URL ને નલ અથવા ખાલી હોઈ શકતા નથી.</target>
<note />
</trans-unit>
<trans-unit id="ID3120">
<trans-unit id="ID2120">
<source>Callback URLs must be valid absolute URLs.</source>
<target state="translated">ક કોલબેક URL માન્ય પૂર્ણ URL હોવા આવશ્યક છે.</target>
<note />
</trans-unit>
<trans-unit id="ID9000">
<trans-unit id="ID8000">
<source>Removes orphaned tokens and authorizations from the database.</source>
<target state="translated">ડેટાબેઝમાંથી અનાથ ટોકન્સ અને અધિકૃતિઓ દૂર કરે છે.</target>
<note />
</trans-unit>
<trans-unit id="ID9001">
<trans-unit id="ID8001">
<source>Starts the scheduled task at regular intervals.</source>
<target state="translated">નિયમિત અંતરાલે સુનિશ્ચિત કાર્ય શરૂ કરે છે.</target>
<note />

238
src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.hi.xlf

@ -2,597 +2,597 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="hi" original="../OpenIddictResources.resx">
<body>
<trans-unit id="ID3000">
<trans-unit id="ID2000">
<source>The security token is missing.</source>
<target state="translated">सुरक्षा टोकन गायब है.</target>
<note />
</trans-unit>
<trans-unit id="ID3001">
<trans-unit id="ID2001">
<source>The specified authorization code is invalid.</source>
<target state="translated">निर्दिष्ट प्राधिकरण कोड अमान्य है.</target>
<note />
</trans-unit>
<trans-unit id="ID3002">
<trans-unit id="ID2002">
<source>The specified device code is invalid.</source>
<target state="translated">निर्दिष्ट डिवाइस कोड अमान्य है.</target>
<note />
</trans-unit>
<trans-unit id="ID3003">
<trans-unit id="ID2003">
<source>The specified refresh token is invalid.</source>
<target state="translated">निर्दिष्ट ताज़ा टोकन अमान्य है.</target>
<note />
</trans-unit>
<trans-unit id="ID3004">
<trans-unit id="ID2004">
<source>The specified token is invalid.</source>
<target state="translated">निर्दिष्ट टोकन अमान्य है.</target>
<note />
</trans-unit>
<trans-unit id="ID3005">
<trans-unit id="ID2005">
<source>The specified token is not an authorization code.</source>
<target state="translated">निर्दिष्ट टोकन एक प्राधिकरण कोड नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3006">
<trans-unit id="ID2006">
<source>The specified token is not an device code.</source>
<target state="translated">निर्दिष्ट टोकन डिवाइस कोड नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3007">
<trans-unit id="ID2007">
<source>The specified token is not a refresh token.</source>
<target state="translated">निर्दिष्ट टोकन एक ताज़ा टोकन नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3008">
<trans-unit id="ID2008">
<source>The specified token is not an access token.</source>
<target state="translated">निर्दिष्ट टोकन एक्सेस टोकन नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3009">
<trans-unit id="ID2009">
<source>The specified identity token is invalid.</source>
<target state="translated">निर्दिष्ट पहचान टोकन अमान्य है.</target>
<note />
</trans-unit>
<trans-unit id="ID3010">
<trans-unit id="ID2010">
<source>The specified authorization code has already been redeemed.</source>
<target state="translated">निर्दिष्ट प्राधिकरण कोड पहले ही भुनाया जा चुका है.</target>
<note />
</trans-unit>
<trans-unit id="ID3011">
<trans-unit id="ID2011">
<source>The specified device code has already been redeemed.</source>
<target state="translated">निर्दिष्ट डिवाइस कोड पहले ही भुनाया जा चुका है.</target>
<note />
</trans-unit>
<trans-unit id="ID3012">
<trans-unit id="ID2012">
<source>The specified refresh token has already been redeemed.</source>
<target state="translated">निर्दिष्ट ताज़ा टोकन पहले ही भुनाया जा चुका है.</target>
<note />
</trans-unit>
<trans-unit id="ID3013">
<trans-unit id="ID2013">
<source>The specified token has already been redeemed.</source>
<target state="translated">निर्दिष्ट टोकन को पहले ही भुनाया जा चुका है.</target>
<note />
</trans-unit>
<trans-unit id="ID3014">
<trans-unit id="ID2014">
<source>The authorization has not been granted yet by the end user.</source>
<target state="translated">अंतिम उपयोगकर्ता द्वारा प्राधिकरण अभी तक प्रदान नहीं किया गया है.</target>
<note />
</trans-unit>
<trans-unit id="ID3015">
<trans-unit id="ID2015">
<source>The authorization was denied by the end user.</source>
<target state="translated">प्राधिकरण को अंतिम उपयोगकर्ता द्वारा अस्वीकार कर दिया गया था.</target>
<note />
</trans-unit>
<trans-unit id="ID3016">
<trans-unit id="ID2016">
<source>The specified authorization code is no longer valid.</source>
<target state="translated">निर्दिष्ट प्राधिकरण कोड अब मान्य नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3017">
<trans-unit id="ID2017">
<source>The specified device code is no longer valid.</source>
<target state="translated">निर्दिष्ट डिवाइस कोड अब मान्य नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3018">
<trans-unit id="ID2018">
<source>The specified refresh token is no longer valid.</source>
<target state="translated">निर्दिष्ट ताज़ा टोकन अब मान्य नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3019">
<trans-unit id="ID2019">
<source>The specified token is no longer valid.</source>
<target state="translated">निर्दिष्ट टोकन अब मान्य नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3020">
<trans-unit id="ID2020">
<source>The authorization associated with the authorization code is no longer valid.</source>
<target state="translated">प्राधिकरण कोड से संबद्ध प्राधिकरण अब मान्य नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3021">
<trans-unit id="ID2021">
<source>The authorization associated with the device code is no longer valid.</source>
<target state="translated">डिवाइस कोड से संबद्ध प्राधिकरण अब मान्य नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3022">
<trans-unit id="ID2022">
<source>The authorization associated with the refresh token is no longer valid.</source>
<target state="translated">ताज़ा टोकन से संबद्ध प्राधिकरण अब मान्य नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3023">
<trans-unit id="ID2023">
<source>The authorization associated with the token is no longer valid.</source>
<target state="translated">टोकन से जुड़ा प्राधिकरण अब मान्य नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3024">
<trans-unit id="ID2024">
<source>The token request was rejected by the authentication server.</source>
<target state="translated">टोकन अनुरोध प्रमाणीकरण सर्वर द्वारा अस्वीकार कर दिया गया था.</target>
<note />
</trans-unit>
<trans-unit id="ID3025">
<trans-unit id="ID2025">
<source>The user information access demand was rejected by the authentication server.</source>
<target state="translated">प्रमाणीकरण सर्वर द्वारा उपयोगकर्ता सूचना पहुंच मांग को अस्वीकार कर दिया गया था.</target>
<note />
</trans-unit>
<trans-unit id="ID3026">
<trans-unit id="ID2026">
<source>The specified user code is no longer valid.</source>
<target state="translated">निर्दिष्ट उपयोगकर्ता कोड अब मान्य नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3028">
<trans-unit id="ID2028">
<source>The '{0}' parameter is not supported.</source>
<target state="translated">'{0}' पैरामीटर समर्थित नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3029">
<trans-unit id="ID2029">
<source>The mandatory '{0}' parameter is missing.</source>
<target state="translated">अनिवार्य '{0}' पैरामीटर गायब है.</target>
<note />
</trans-unit>
<trans-unit id="ID3030">
<trans-unit id="ID2030">
<source>The '{0}' parameter must be a valid absolute URL.</source>
<target state="translated">'{0}' पैरामीटर एक मान्य पूर्ण URL होना चाहिए.</target>
<note />
</trans-unit>
<trans-unit id="ID3031">
<trans-unit id="ID2031">
<source>The '{0}' parameter must not include a fragment.</source>
<target state="translated">'{0}' पैरामीटर में एक टुकड़ा शामिल नहीं होना चाहिए.</target>
<note />
</trans-unit>
<trans-unit id="ID3032">
<trans-unit id="ID2032">
<source>The specified '{0}' is not supported.</source>
<target state="translated">निर्दिष्ट '{0}' समर्थित नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3033">
<trans-unit id="ID2033">
<source>The specified '{0}'/'{1}' combination is invalid.</source>
<target state="translated">निर्दिष्ट '{0}' / '{1}' संयोजन अमान्य है.</target>
<note />
</trans-unit>
<trans-unit id="ID3034">
<trans-unit id="ID2034">
<source>The mandatory '{0}' scope is missing.</source>
<target state="translated">अनिवार्य '{0}' स्कोप गायब है.</target>
<note />
</trans-unit>
<trans-unit id="ID3035">
<trans-unit id="ID2035">
<source>The '{0}' scope is not allowed.</source>
<target state="translated">'{0}' स्कोप की अनुमति नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3036">
<trans-unit id="ID2036">
<source>The client identifier cannot be null or empty.</source>
<target state="translated">क्लाइंट पहचानकर्ता रिक्त या रिक्त नहीं हो सकता.</target>
<note />
</trans-unit>
<trans-unit id="ID3037">
<trans-unit id="ID2037">
<source>The '{0}' parameter cannot be used without '{1}'.</source>
<target state="translated">'{0}' पैरामीटर का उपयोग '{1}' के बिना नहीं किया जा सकता है.</target>
<note />
</trans-unit>
<trans-unit id="ID3038">
<trans-unit id="ID2038">
<source>The status cannot be null or empty.</source>
<target state="translated">स्थिति शून्य या रिक्त नहीं हो सकती.</target>
<note />
</trans-unit>
<trans-unit id="ID3039">
<trans-unit id="ID2039">
<source>Scopes cannot be null or empty.</source>
<target state="translated">स्कोप्स शून्य या रिक्त नहीं हो सकते.</target>
<note />
</trans-unit>
<trans-unit id="ID3040">
<trans-unit id="ID2040">
<source>The '{0}' and '{1}' parameters can only be used with a response type containing '{2}'.</source>
<target state="translated">'{0}' और '{1}' मापदंडों का उपयोग केवल '{2}' वाले प्रतिक्रिया प्रकार के साथ किया जा सकता है.</target>
<note />
</trans-unit>
<trans-unit id="ID3041">
<trans-unit id="ID2041">
<source>The specified '{0}' is not allowed when using PKCE.</source>
<target state="translated">PKCE का उपयोग करते समय निर्दिष्ट '{0}' की अनुमति नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3042">
<trans-unit id="ID2042">
<source>Scopes cannot contain spaces.</source>
<target state="translated">स्कोप में स्थान नहीं हो सकते.</target>
<note />
</trans-unit>
<trans-unit id="ID3043">
<trans-unit id="ID2043">
<source>The specified '{0}' is not valid for this client application.</source>
<target state="translated">निर्दिष्ट '{0}' इस क्लाइंट एप्लिकेशन के लिए मान्य नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3044">
<trans-unit id="ID2044">
<source>The scope name cannot be null or empty.</source>
<target state="translated">स्कोप नाम शून्य या रिक्त नहीं हो सकता.</target>
<note />
</trans-unit>
<trans-unit id="ID3045">
<trans-unit id="ID2045">
<source>The scope name cannot contain spaces.</source>
<target state="translated">स्कोप नाम में रिक्त स्थान नहीं हो सकते.</target>
<note />
</trans-unit>
<trans-unit id="ID3046">
<trans-unit id="ID2046">
<source>This client application is not allowed to use the authorization endpoint.</source>
<target state="translated">इस क्लाइंट एप्लिकेशन को प्राधिकरण समापन बिंदु का उपयोग करने की अनुमति नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3047">
<trans-unit id="ID2047">
<source>The client application is not allowed to use the authorization code flow.</source>
<target state="translated">क्लाइंट एप्लिकेशन को प्राधिकरण कोड प्रवाह का उपयोग करने की अनुमति नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3048">
<trans-unit id="ID2048">
<source>The client application is not allowed to use the implicit flow.</source>
<target state="translated">क्लाइंट एप्लिकेशन को निहित प्रवाह का उपयोग करने की अनुमति नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3049">
<trans-unit id="ID2049">
<source>The client application is not allowed to use the hybrid flow.</source>
<target state="translated">हाइब्रिड प्रवाह का उपयोग करने के लिए क्लाइंट एप्लिकेशन को अनुमति नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3051">
<trans-unit id="ID2051">
<source>This client application is not allowed to use the specified scope.</source>
<target state="translated">इस क्लाइंट एप्लिकेशन को निर्दिष्ट दायरे का उपयोग करने की अनुमति नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3052">
<trans-unit id="ID2052">
<source>The specified '{0}' is invalid.</source>
<target state="translated">निर्दिष्ट '{0}' अमान्य है.</target>
<note />
</trans-unit>
<trans-unit id="ID3053">
<trans-unit id="ID2053">
<source>The '{0}' parameter is not valid for this client application.</source>
<target state="translated">इस क्लाइंट एप्लिकेशन के लिए '{0}' पैरामीटर मान्य नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3054">
<trans-unit id="ID2054">
<source>The '{0}' parameter required for this client application is missing.</source>
<target state="translated">इस क्लाइंट एप्लिकेशन के लिए आवश्यक '{0}' पैरामीटर गायब है.</target>
<note />
</trans-unit>
<trans-unit id="ID3055">
<trans-unit id="ID2055">
<source>The specified client credentials are invalid.</source>
<target state="translated">निर्दिष्ट क्लाइंट क्रेडेंशियल अमान्य हैं.</target>
<note />
</trans-unit>
<trans-unit id="ID3056">
<trans-unit id="ID2056">
<source>This client application is not allowed to use the device endpoint.</source>
<target state="translated">इस क्लाइंट एप्लिकेशन को डिवाइस एंडपॉइंट का उपयोग करने की अनुमति नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3057">
<trans-unit id="ID2057">
<source>The '{0}' and '{1}' parameters are required when using the client credentials grant.</source>
<target state="translated">क्लाइंट क्रेडेंशियल्स अनुदान का उपयोग करते समय '{0}' और '{1}' मापदंडों की आवश्यकता होती है.</target>
<note />
</trans-unit>
<trans-unit id="ID3058">
<trans-unit id="ID2058">
<source>The '{0}' parameter is required when using the device code grant.</source>
<target state="translated">डिवाइस कोड अनुदान का उपयोग करते समय '{0}' पैरामीटर की आवश्यकता होती है.</target>
<note />
</trans-unit>
<trans-unit id="ID3059">
<trans-unit id="ID2059">
<source>The mandatory '{0}' and/or '{1}' parameters are missing.</source>
<target state="translated">अनिवार्य '{0}' और / या '{1}' पैरामीटर गायब हैं.</target>
<note />
</trans-unit>
<trans-unit id="ID3060">
<trans-unit id="ID2060">
<source>A scope with the same name already exists.</source>
<target state="translated">समान नाम वाला स्कोप पहले से मौजूद है.</target>
<note />
</trans-unit>
<trans-unit id="ID3063">
<trans-unit id="ID2063">
<source>This client application is not allowed to use the token endpoint.</source>
<target state="translated">इस क्लाइंट एप्लिकेशन को टोकन समापन बिंदु का उपयोग करने की अनुमति नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3064">
<trans-unit id="ID2064">
<source>This client application is not allowed to use the specified grant type.</source>
<target state="translated">इस ग्राहक एप्लिकेशन को निर्दिष्ट अनुदान प्रकार का उपयोग करने की अनुमति नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3065">
<trans-unit id="ID2065">
<source>The client application is not allowed to use the '{0}' scope.</source>
<target state="translated">क्लाइंट एप्लिकेशन को '{0}' स्कोप का उपयोग करने की अनुमति नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3066">
<trans-unit id="ID2066">
<source>The specified authorization code cannot be used without sending a client identifier.</source>
<target state="translated">क्लाइंट पहचानकर्ता को भेजे बिना निर्दिष्ट प्राधिकरण कोड का उपयोग नहीं किया जा सकता है.</target>
<note />
</trans-unit>
<trans-unit id="ID3067">
<trans-unit id="ID2067">
<source>The specified device code cannot be used without sending a client identifier.</source>
<target state="translated">क्लाइंट पहचानकर्ता को भेजे बिना निर्दिष्ट डिवाइस कोड का उपयोग नहीं किया जा सकता है.</target>
<note />
</trans-unit>
<trans-unit id="ID3068">
<trans-unit id="ID2068">
<source>The specified refresh token cannot be used without sending a client identifier.</source>
<target state="translated">निर्दिष्ट ताज़ा टोकन का उपयोग ग्राहक पहचानकर्ता को भेजे बिना नहीं किया जा सकता है.</target>
<note />
</trans-unit>
<trans-unit id="ID3069">
<trans-unit id="ID2069">
<source>The specified authorization code cannot be used by this client application.</source>
<target state="translated">इस क्लाइंट एप्लिकेशन द्वारा निर्दिष्ट प्राधिकरण कोड का उपयोग नहीं किया जा सकता है.</target>
<note />
</trans-unit>
<trans-unit id="ID3070">
<trans-unit id="ID2070">
<source>The specified device code cannot be used by this client application.</source>
<target state="translated">इस क्लाइंट एप्लिकेशन द्वारा निर्दिष्ट डिवाइस कोड का उपयोग नहीं किया जा सकता है.</target>
<note />
</trans-unit>
<trans-unit id="ID3071">
<trans-unit id="ID2071">
<source>The specified refresh token cannot be used by this client application.</source>
<target state="translated">निर्दिष्ट ताज़ा टोकन का उपयोग इस क्लाइंट एप्लिकेशन द्वारा नहीं किया जा सकता है.</target>
<note />
</trans-unit>
<trans-unit id="ID3072">
<trans-unit id="ID2072">
<source>The specified '{0}' parameter doesn't match the client redirection address the authorization code was initially sent to.</source>
<target state="translated">निर्दिष्ट '{0}' पैरामीटर ग्राहक पुनर्निर्देशन पते से मेल नहीं खाता है जो प्राधिकरण कोड शुरू में भेजा गया था.</target>
<note />
</trans-unit>
<trans-unit id="ID3073">
<trans-unit id="ID2073">
<source>The '{0}' parameter cannot be used when no '{1}' was specified in the authorization request.</source>
<target state="translated">प्राधिकरण अनुरोध में कोई {{1} 'पैरामीटर का उपयोग नहीं किया जा सकता है.</target>
<note />
</trans-unit>
<trans-unit id="ID3074">
<trans-unit id="ID2074">
<source>The '{0}' parameter is not valid in this context.</source>
<target state="translated">इस संदर्भ में '{0}' पैरामीटर मान्य नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3075">
<trans-unit id="ID2075">
<source>This client application is not allowed to use the introspection endpoint.</source>
<target state="translated">इस ग्राहक एप्लिकेशन को आत्मनिरीक्षण समापन बिंदु का उपयोग करने की अनुमति नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3076">
<trans-unit id="ID2076">
<source>The specified token cannot be introspected.</source>
<target state="translated">निर्दिष्ट टोकन आत्मनिरीक्षण नहीं किया जा सकता है.</target>
<note />
</trans-unit>
<trans-unit id="ID3077">
<trans-unit id="ID2077">
<source>The client application is not allowed to introspect the specified token.</source>
<target state="translated">क्लाइंट एप्लिकेशन को निर्दिष्ट टोकन का आत्मनिरीक्षण करने की अनुमति नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3078">
<trans-unit id="ID2078">
<source>This client application is not allowed to use the revocation endpoint.</source>
<target state="translated">इस क्लाइंट एप्लिकेशन को प्रत्यावर्तन समापन बिंदु का उपयोग करने की अनुमति नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3079">
<trans-unit id="ID2079">
<source>This token cannot be revoked.</source>
<target state="translated">इस टोकन को निरस्त नहीं किया जा सकता है.</target>
<note />
</trans-unit>
<trans-unit id="ID3080">
<trans-unit id="ID2080">
<source>The client application is not allowed to revoke the specified token.</source>
<target state="translated">क्लाइंट एप्लिकेशन को निर्दिष्ट टोकन को रद्द करने की अनुमति नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3081">
<trans-unit id="ID2081">
<source>The mandatory '{0}' header is missing.</source>
<target state="translated">अनिवार्य '{0}' शीर्षक गायब है.</target>
<note />
</trans-unit>
<trans-unit id="ID3082">
<trans-unit id="ID2082">
<source>The specified '{0}' header is invalid.</source>
<target state="translated">निर्दिष्ट '{0}' शीर्षक अमान्य है.</target>
<note />
</trans-unit>
<trans-unit id="ID3083">
<trans-unit id="ID2083">
<source>This server only accepts HTTPS requests.</source>
<target state="translated">यह सर्वर केवल HTTPS अनुरोध स्वीकार करता है.</target>
<note />
</trans-unit>
<trans-unit id="ID3084">
<trans-unit id="ID2084">
<source>The specified HTTP method is not valid.</source>
<target state="translated">निर्दिष्ट HTTP विधि मान्य नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3085">
<trans-unit id="ID2085">
<source>A token with the same reference identifier already exists.</source>
<target state="translated">समान संदर्भ पहचानकर्ता के साथ एक टोकन पहले से मौजूद है.</target>
<note />
</trans-unit>
<trans-unit id="ID3086">
<trans-unit id="ID2086">
<source>The token type cannot be null or empty.</source>
<target state="translated">टोकन प्रकार शून्य या रिक्त नहीं हो सकता.</target>
<note />
</trans-unit>
<trans-unit id="ID3087">
<trans-unit id="ID2087">
<source>Multiple client credentials cannot be specified.</source>
<target state="translated">एकाधिक क्लाइंट क्रेडेंशियल निर्दिष्ट नहीं किए जा सकते हैं.</target>
<note />
</trans-unit>
<trans-unit id="ID3088">
<trans-unit id="ID2088">
<source>The issuer associated to the specified token is not valid.</source>
<target state="translated">निर्दिष्ट टोकन से संबंधित जारीकर्ता मान्य नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3089">
<trans-unit id="ID2089">
<source>The specified token is not of the expected type.</source>
<target state="translated">निर्दिष्ट टोकन अपेक्षित प्रकार का नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3090">
<trans-unit id="ID2090">
<source>The signing key associated to the specified token was not found.</source>
<target state="translated">निर्दिष्ट टोकन से संबंधित हस्ताक्षरित कुंजी नहीं मिली.</target>
<note />
</trans-unit>
<trans-unit id="ID3091">
<trans-unit id="ID2091">
<source>The signature associated to the specified token is not valid.</source>
<target state="translated">निर्दिष्ट टोकन से संबंधित हस्ताक्षर मान्य नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3092">
<trans-unit id="ID2092">
<source>This resource server is currently unavailable.</source>
<target state="translated">वर्तमान में यह संसाधन सर्वर अनुपलब्ध है.</target>
<note />
</trans-unit>
<trans-unit id="ID3093">
<trans-unit id="ID2093">
<source>The specified token doesn't contain any audience.</source>
<target state="translated">निर्दिष्ट टोकन में कोई भी श्रोता नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3094">
<trans-unit id="ID2094">
<source>The specified token cannot be used with this resource server.</source>
<target state="translated">निर्दिष्ट टोकन का उपयोग इस संसाधन सर्वर के साथ नहीं किया जा सकता है.</target>
<note />
</trans-unit>
<trans-unit id="ID3095">
<trans-unit id="ID2095">
<source>The user represented by the token is not allowed to perform the requested action.</source>
<target state="translated">टोकन द्वारा प्रस्तुत उपयोगकर्ता को अनुरोधित कार्रवाई करने की अनुमति नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3096">
<trans-unit id="ID2096">
<source>No issuer could be found in the server configuration.</source>
<target state="translated">सर्वर कॉन्फ़िगरेशन में कोई जारीकर्ता नहीं मिला.</target>
<note />
</trans-unit>
<trans-unit id="ID3097">
<trans-unit id="ID2097">
<source>A server configuration containing an invalid issuer was returned.</source>
<target state="translated">अमान्य जारीकर्ता वाला सर्वर कॉन्फ़िगरेशन वापस कर दिया गया था.</target>
<note />
</trans-unit>
<trans-unit id="ID3098">
<trans-unit id="ID2098">
<source>The issuer returned in the server configuration is not valid.</source>
<target state="translated">सर्वर कॉन्फ़िगरेशन में जारीकर्ता मान्य नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3099">
<trans-unit id="ID2099">
<source>No JWKS endpoint could be found in the server configuration.</source>
<target state="translated">सर्वर कॉन्फ़िगरेशन में कोई JWKS समापन बिंदु नहीं मिला.</target>
<note />
</trans-unit>
<trans-unit id="ID3100">
<trans-unit id="ID2100">
<source>A server configuration containing an invalid JWKS endpoint URL was returned.</source>
<target state="translated">अमान्य JWKS समापन बिंदु URL वाला सर्वर कॉन्फ़िगरेशन लौटाया गया था.</target>
<note />
</trans-unit>
<trans-unit id="ID3101">
<trans-unit id="ID2101">
<source>A server configuration containing an invalid introspection endpoint URL was returned.</source>
<target state="translated">अमान्य इंट्रॉस्पेशन एंडपॉइंट URL वाले सर्वर कॉन्फ़िगरेशन को लौटा दिया गया था.</target>
<note />
</trans-unit>
<trans-unit id="ID3102">
<trans-unit id="ID2102">
<source>The JWKS document didn't contain a valid '{0}' node with at least one key.</source>
<target state="translated">JWKS दस्तावेज़ में कम से कम एक कुंजी के साथ एक वैध '{0}' नोड नहीं था.</target>
<note />
</trans-unit>
<trans-unit id="ID3103">
<trans-unit id="ID2103">
<source>A JWKS response containing an unsupported key was returned.</source>
<target state="translated">एक असमर्थित कुंजी वाली JWKS प्रतिक्रिया लौटा दी गई थी.</target>
<note />
</trans-unit>
<trans-unit id="ID3104">
<trans-unit id="ID2104">
<source>A JWKS response containing an invalid key was returned.</source>
<target state="translated">अमान्य कुंजी वाली JWKS प्रतिक्रिया लौटा दी गई थी।</target>
<note />
</trans-unit>
<trans-unit id="ID3105">
<trans-unit id="ID2105">
<source>The mandatory '{0}' parameter couldn't be found in the introspection response.</source>
<target state="translated">आत्मनिरीक्षण प्रतिक्रिया में अनिवार्य '{0}' पैरामीटर नहीं मिला.</target>
<note />
</trans-unit>
<trans-unit id="ID3106">
<trans-unit id="ID2106">
<source>The token was rejected by the remote authentication server.</source>
<target state="translated">रिमोट प्रमाणीकरण सर्वर द्वारा टोकन को अस्वीकार कर दिया गया था.</target>
<note />
</trans-unit>
<trans-unit id="ID3107">
<trans-unit id="ID2107">
<source>The '{0}' claim is malformed or isn't of the expected type.</source>
<target state="translated">'{0}' दावा विकृत है या अपेक्षित प्रकार का नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3108">
<trans-unit id="ID2108">
<source>An introspection response containing a malformed issuer was returned.</source>
<target state="translated">एक विकृत जारीकर्ता युक्त आत्मनिरीक्षण प्रतिक्रिया लौटा दी गई.</target>
<note />
</trans-unit>
<trans-unit id="ID3109">
<trans-unit id="ID2109">
<source>The issuer returned in the introspection response is not valid.</source>
<target state="translated">जारीकर्ता आत्मनिरीक्षण प्रतिक्रिया में लौटाया गया मान्य नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3110">
<trans-unit id="ID2110">
<source>The type of the introspected token doesn't match the expected type.</source>
<target state="translated">अंतर्मुखी टोकन का प्रकार अपेक्षित प्रकार से मेल नहीं खाता है.</target>
<note />
</trans-unit>
<trans-unit id="ID3111">
<trans-unit id="ID2111">
<source>An application with the same client identifier already exists.</source>
<target state="translated">समान क्लाइंट पहचानकर्ता के साथ एक एप्लिकेशन पहले से मौजूद है.</target>
<note />
</trans-unit>
<trans-unit id="ID3112">
<trans-unit id="ID2112">
<source>Only confidential, hybrid or public applications are supported by the default application manager.</source>
<target state="translated">केवल गोपनीय, हाइब्रिड या सार्वजनिक एप्लिकेशन डिफ़ॉल्ट एप्लिकेशन मैनेजर द्वारा समर्थित हैं.</target>
<note />
</trans-unit>
<trans-unit id="ID3113">
<trans-unit id="ID2113">
<source>The client secret cannot be null or empty for a confidential application.</source>
<target state="translated">गोपनीय के लिए क्लाइंट रहस्य शून्य या रिक्त नहीं हो सकता.</target>
<note />
</trans-unit>
<trans-unit id="ID3114">
<trans-unit id="ID2114">
<source>A client secret cannot be associated with a public application.</source>
<target state="translated">एक ग्राहक रहस्य एक सार्वजनिक आवेदन के साथ संबद्ध नहीं किया जा सकता है.</target>
<note />
</trans-unit>
<trans-unit id="ID3115">
<trans-unit id="ID2115">
<source>Callback URLs cannot contain a fragment.</source>
<target state="translated">कॉलबैक URL में एक टुकड़ा नहीं हो सकता.</target>
<note />
</trans-unit>
<trans-unit id="ID3116">
<trans-unit id="ID2116">
<source>The authorization type cannot be null or empty.</source>
<target state="translated">प्राधिकरण प्रकार शून्य या रिक्त नहीं हो सकता.</target>
<note />
</trans-unit>
<trans-unit id="ID3117">
<trans-unit id="ID2117">
<source>The specified authorization type is not supported by the default token manager.</source>
<target state="translated">निर्दिष्ट प्राधिकरण प्रकार डिफ़ॉल्ट टोकन प्रबंधक द्वारा समर्थित नहीं है.</target>
<note />
</trans-unit>
<trans-unit id="ID3118">
<trans-unit id="ID2118">
<source>The client type cannot be null or empty.</source>
<target state="translated">क्लाइंट प्रकार रिक्त या रिक्त नहीं हो सकता.</target>
<note />
</trans-unit>
<trans-unit id="ID3119">
<trans-unit id="ID2119">
<source>Callback URLs cannot be null or empty.</source>
<target state="translated">कॉलबैक URL शून्य या रिक्त नहीं हो सकते.</target>
<note />
</trans-unit>
<trans-unit id="ID3120">
<trans-unit id="ID2120">
<source>Callback URLs must be valid absolute URLs.</source>
<target state="translated">कॉलबैक URL मान्य निरपेक्ष URL होने चाहिए.</target>
<note />
</trans-unit>
<trans-unit id="ID9000">
<trans-unit id="ID8000">
<source>Removes orphaned tokens and authorizations from the database.</source>
<target state="translated">डेटाबेस से अनाथ टोकन और प्राधिकरणों को निकालता है.</target>
<note />
</trans-unit>
<trans-unit id="ID9001">
<trans-unit id="ID8001">
<source>Starts the scheduled task at regular intervals.</source>
<target state="translated">नियमित अंतराल पर निर्धारित कार्य शुरू करता है.</target>
<note />

238
src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.it.xlf

@ -2,597 +2,597 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="it" original="../OpenIddictResources.resx">
<body>
<trans-unit id="ID3000">
<trans-unit id="ID2000">
<source>The security token is missing.</source>
<target state="translated">Il token di sicurezza è mancante.</target>
<note/>
</trans-unit>
<trans-unit id="ID3001">
<trans-unit id="ID2001">
<source>The specified authorization code is invalid.</source>
<target state="translated">Il codice di autorizzazione specificato non è valido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3002">
<trans-unit id="ID2002">
<source>The specified device code is invalid.</source>
<target state="translated">Il codice del dispositivo specificato non è valido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3003">
<trans-unit id="ID2003">
<source>The specified refresh token is invalid.</source>
<target state="translated">Il token di aggiornamento specificato non è valido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3004">
<trans-unit id="ID2004">
<source>The specified token is invalid.</source>
<target state="translated">Il token specificato non è valido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3005">
<trans-unit id="ID2005">
<source>The specified token is not an authorization code.</source>
<target state="translated">Il token specificato non è un codice di autorizzazione.</target>
<note/>
</trans-unit>
<trans-unit id="ID3006">
<trans-unit id="ID2006">
<source>The specified token is not an device code.</source>
<target state="translated">Il token specificato non è un codice del dispositivo.</target>
<note/>
</trans-unit>
<trans-unit id="ID3007">
<trans-unit id="ID2007">
<source>The specified token is not a refresh token.</source>
<target state="translated">Il token specificato non è un token di aggiornamento.</target>
<note/>
</trans-unit>
<trans-unit id="ID3008">
<trans-unit id="ID2008">
<source>The specified token is not an access token.</source>
<target state="translated">Il token specificato non è un token di accesso.</target>
<note/>
</trans-unit>
<trans-unit id="ID3009">
<trans-unit id="ID2009">
<source>The specified identity token is invalid.</source>
<target state="translated">Il token di identità specificato non è valido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3010">
<trans-unit id="ID2010">
<source>The specified authorization code has already been redeemed.</source>
<target state="translated">Il codice di autorizzazione specificato è già stato utilizzato.</target>
<note/>
</trans-unit>
<trans-unit id="ID3011">
<trans-unit id="ID2011">
<source>The specified device code has already been redeemed.</source>
<target state="translated">Il codice di dispositivo specificato è già stato utilizzato.</target>
<note/>
</trans-unit>
<trans-unit id="ID3012">
<trans-unit id="ID2012">
<source>The specified refresh token has already been redeemed.</source>
<target state="translated">Il token di aggiornamento specificato è già stato utilizzato.</target>
<note/>
</trans-unit>
<trans-unit id="ID3013">
<trans-unit id="ID2013">
<source>The specified token has already been redeemed.</source>
<target state="translated">Il codice specificato è già stato utilizzato.</target>
<note/>
</trans-unit>
<trans-unit id="ID3014">
<trans-unit id="ID2014">
<source>The authorization has not been granted yet by the end user.</source>
<target state="translated">L'autorizzazione non è ancora stata concessa dall'utente finale.</target>
<note/>
</trans-unit>
<trans-unit id="ID3015">
<trans-unit id="ID2015">
<source>The authorization was denied by the end user.</source>
<target state="translated">L'autorizzazione è stata negata dall'utente finale.</target>
<note/>
</trans-unit>
<trans-unit id="ID3016">
<trans-unit id="ID2016">
<source>The specified authorization code is no longer valid.</source>
<target state="translated">Il codice di autorizzazione specificato non è più valido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3017">
<trans-unit id="ID2017">
<source>The specified device code is no longer valid.</source>
<target state="translated">Il codice del dispositivo specificato non è più valido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3018">
<trans-unit id="ID2018">
<source>The specified refresh token is no longer valid.</source>
<target state="translated">Il token di aggiornamento specificato non è più valido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3019">
<trans-unit id="ID2019">
<source>The specified token is no longer valid.</source>
<target state="translated">Il token specificato non è più valido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3020">
<trans-unit id="ID2020">
<source>The authorization associated with the authorization code is no longer valid.</source>
<target state="translated">L'autorizzazione associata con il codice di autorizzazione non è più valida.</target>
<note/>
</trans-unit>
<trans-unit id="ID3021">
<trans-unit id="ID2021">
<source>The authorization associated with the device code is no longer valid.</source>
<target state="translated">L'autorizzazione associata con il codice del dispositivo non è più valida.</target>
<note/>
</trans-unit>
<trans-unit id="ID3022">
<trans-unit id="ID2022">
<source>The authorization associated with the refresh token is no longer valid.</source>
<target state="translated">L'autorizzazione associata con il token di aggiornamento non è più valida.</target>
<note/>
</trans-unit>
<trans-unit id="ID3023">
<trans-unit id="ID2023">
<source>The authorization associated with the token is no longer valid.</source>
<target state="translated">L'autorizzazione associata con il token non è più valida.</target>
<note/>
</trans-unit>
<trans-unit id="ID3024">
<trans-unit id="ID2024">
<source>The token request was rejected by the authentication server.</source>
<target state="translated">La richiesta del token è stata respinta dal server di autenticazione.</target>
<note/>
</trans-unit>
<trans-unit id="ID3025">
<trans-unit id="ID2025">
<source>The user information access demand was rejected by the authentication server.</source>
<target state="translated">La richiesta di accesso alle informazioni dell'utente è stata rifiutata dal server di autenticazione.</target>
<note/>
</trans-unit>
<trans-unit id="ID3026">
<trans-unit id="ID2026">
<source>The specified user code is no longer valid.</source>
<target state="translated">Il codice utente specificato non è più valido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3028">
<trans-unit id="ID2028">
<source>The '{0}' parameter is not supported.</source>
<target state="translated">Il parametro '{0}' non è supportato.</target>
<note/>
</trans-unit>
<trans-unit id="ID3029">
<trans-unit id="ID2029">
<source>The mandatory '{0}' parameter is missing.</source>
<target state="translated">Manca il parametro obbligatorio '{0}'.</target>
<note/>
</trans-unit>
<trans-unit id="ID3030">
<trans-unit id="ID2030">
<source>The '{0}' parameter must be a valid absolute URL.</source>
<target state="translated">Il parametro '{0}' deve essere un URL assoluto valido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3031">
<trans-unit id="ID2031">
<source>The '{0}' parameter must not include a fragment.</source>
<target state="translated">Il parametro '{0}' non deve includere un frammento di URL.</target>
<note/>
</trans-unit>
<trans-unit id="ID3032">
<trans-unit id="ID2032">
<source>The specified '{0}' is not supported.</source>
<target state="translated">Il '{0}' specificato non è supportato.</target>
<note/>
</trans-unit>
<trans-unit id="ID3033">
<trans-unit id="ID2033">
<source>The specified '{0}'/'{1}' combination is invalid.</source>
<target state="translated">La combinazione '{0}' / '{1}' specificata non è valida.</target>
<note/>
</trans-unit>
<trans-unit id="ID3034">
<trans-unit id="ID2034">
<source>The mandatory '{0}' scope is missing.</source>
<target state="translated">Manca l'ambito obbligatorio '{0}'.</target>
<note/>
</trans-unit>
<trans-unit id="ID3035">
<trans-unit id="ID2035">
<source>The '{0}' scope is not allowed.</source>
<target state="translated">L'ambito '{0}' non è consentito.</target>
<note/>
</trans-unit>
<trans-unit id="ID3036">
<trans-unit id="ID2036">
<source>The client identifier cannot be null or empty.</source>
<target state="translated">L'identificatore del client non può essere nullo o vuoto.</target>
<note/>
</trans-unit>
<trans-unit id="ID3037">
<trans-unit id="ID2037">
<source>The '{0}' parameter cannot be used without '{1}'.</source>
<target state="translated">Il parametro '{0}' non può essere utilizzato senza '{1}'.</target>
<note/>
</trans-unit>
<trans-unit id="ID3038">
<trans-unit id="ID2038">
<source>The status cannot be null or empty.</source>
<target state="translated">Lo stato non può essere nullo o vuoto.</target>
<note/>
</trans-unit>
<trans-unit id="ID3039">
<trans-unit id="ID2039">
<source>Scopes cannot be null or empty.</source>
<target state="translated">Gli ambiti non possono essere nulli o vuoti.</target>
<note/>
</trans-unit>
<trans-unit id="ID3040">
<trans-unit id="ID2040">
<source>The '{0}' and '{1}' parameters can only be used with a response type containing '{2}'.</source>
<target state="translated">I parametri '{0}' e '{1}' possono essere utilizzati solo con un tipo di risposta contenente '{2}'.</target>
<note/>
</trans-unit>
<trans-unit id="ID3041">
<trans-unit id="ID2041">
<source>The specified '{0}' is not allowed when using PKCE.</source>
<target state="translated">Il '{0}' specificato non è consentito quando si utilizza PKCE.</target>
<note/>
</trans-unit>
<trans-unit id="ID3042">
<trans-unit id="ID2042">
<source>Scopes cannot contain spaces.</source>
<target state="translated">Gli ambiti non possono contenere spazi.</target>
<note/>
</trans-unit>
<trans-unit id="ID3043">
<trans-unit id="ID2043">
<source>The specified '{0}' is not valid for this client application.</source>
<target state="translated">Il '{0}' specificato non è valido per questa applicazione client.</target>
<note/>
</trans-unit>
<trans-unit id="ID3044">
<trans-unit id="ID2044">
<source>The scope name cannot be null or empty.</source>
<target state="translated">Il nome dell'ambito non può essere nullo o vuoto.</target>
<note/>
</trans-unit>
<trans-unit id="ID3045">
<trans-unit id="ID2045">
<source>The scope name cannot contain spaces.</source>
<target state="translated">Il nome dell'ambito non può contenere spazi.</target>
<note/>
</trans-unit>
<trans-unit id="ID3046">
<trans-unit id="ID2046">
<source>This client application is not allowed to use the authorization endpoint.</source>
<target state="translated">L'applicazione client non è autorizzata a utilizzare l'endpoint di autorizzazione.</target>
<note/>
</trans-unit>
<trans-unit id="ID3047">
<trans-unit id="ID2047">
<source>The client application is not allowed to use the authorization code flow.</source>
<target state="translated">L'applicazione client non è autorizzata a utilizzare il flusso del codice di autorizzazione.</target>
<note/>
</trans-unit>
<trans-unit id="ID3048">
<trans-unit id="ID2048">
<source>The client application is not allowed to use the implicit flow.</source>
<target state="translated">L'applicazione client non è autorizzata a utilizzare il flusso implicito.</target>
<note/>
</trans-unit>
<trans-unit id="ID3049">
<trans-unit id="ID2049">
<source>The client application is not allowed to use the hybrid flow.</source>
<target state="translated">L'applicazione client non è autorizzata a utilizzare il flusso ibrido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3051">
<trans-unit id="ID2051">
<source>This client application is not allowed to use the specified scope.</source>
<target state="translated">L'applicazione client non è autorizzata a utilizzare l'ambito specificato.</target>
<note/>
</trans-unit>
<trans-unit id="ID3052">
<trans-unit id="ID2052">
<source>The specified '{0}' is invalid.</source>
<target state="translated">Il '{0}' specificato non è valido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3053">
<trans-unit id="ID2053">
<source>The '{0}' parameter is not valid for this client application.</source>
<target state="translated">Il parametro '{0}' non è valido per questa applicazione client.</target>
<note/>
</trans-unit>
<trans-unit id="ID3054">
<trans-unit id="ID2054">
<source>The '{0}' parameter required for this client application is missing.</source>
<target state="translated">Manca il parametro '{0}' richiesto per questa applicazione client.</target>
<note/>
</trans-unit>
<trans-unit id="ID3055">
<trans-unit id="ID2055">
<source>The specified client credentials are invalid.</source>
<target state="translated">Le credenziali client specificate non sono valide.</target>
<note/>
</trans-unit>
<trans-unit id="ID3056">
<trans-unit id="ID2056">
<source>This client application is not allowed to use the device endpoint.</source>
<target state="translated">L'applicazione client non è autorizzata a utilizzare l'endpoint del dispositivo.</target>
<note/>
</trans-unit>
<trans-unit id="ID3057">
<trans-unit id="ID2057">
<source>The '{0}' and '{1}' parameters are required when using the client credentials grant.</source>
<target state="translated">I parametri '{0}' e '{1}' sono obbligatori quando si utilizza la concessione delle credenziali del client.</target>
<note/>
</trans-unit>
<trans-unit id="ID3058">
<trans-unit id="ID2058">
<source>The '{0}' parameter is required when using the device code grant.</source>
<target state="translated">Il parametro '{0}' è obbligatorio quando si utilizza la concessione del codice del dispositivo.</target>
<note/>
</trans-unit>
<trans-unit id="ID3059">
<trans-unit id="ID2059">
<source>The mandatory '{0}' and/or '{1}' parameters are missing.</source>
<target state="translated">Mancano i parametri obbligatori '{0}' e / o '{1}'.</target>
<note/>
</trans-unit>
<trans-unit id="ID3060">
<trans-unit id="ID2060">
<source>A scope with the same name already exists.</source>
<target state="translated">Esiste già un ambito con lo stesso nome.</target>
<note/>
</trans-unit>
<trans-unit id="ID3063">
<trans-unit id="ID2063">
<source>This client application is not allowed to use the token endpoint.</source>
<target state="translated">L'applicazione client non è autorizzata a utilizzare l'endpoint del token.</target>
<note/>
</trans-unit>
<trans-unit id="ID3064">
<trans-unit id="ID2064">
<source>This client application is not allowed to use the specified grant type.</source>
<target state="translated">L'applicazione client non è autorizzata a utilizzare il tipo di concessione specificato.</target>
<note/>
</trans-unit>
<trans-unit id="ID3065">
<trans-unit id="ID2065">
<source>The client application is not allowed to use the '{0}' scope.</source>
<target state="translated">L'applicazione client non può utilizzare l'ambito '{0}'.</target>
<note/>
</trans-unit>
<trans-unit id="ID3066">
<trans-unit id="ID2066">
<source>The specified authorization code cannot be used without sending a client identifier.</source>
<target state="translated">Il codice di autorizzazione specificato non può essere utilizzato senza inviare un identificativo client.</target>
<note/>
</trans-unit>
<trans-unit id="ID3067">
<trans-unit id="ID2067">
<source>The specified device code cannot be used without sending a client identifier.</source>
<target state="translated">Il codice dispositivo specificato non può essere utilizzato senza inviare un identificativo client.</target>
<note/>
</trans-unit>
<trans-unit id="ID3068">
<trans-unit id="ID2068">
<source>The specified refresh token cannot be used without sending a client identifier.</source>
<target state="translated">Il token di aggiornamento specificato non può essere utilizzato senza inviare un identificatore client.</target>
<note/>
</trans-unit>
<trans-unit id="ID3069">
<trans-unit id="ID2069">
<source>The specified authorization code cannot be used by this client application.</source>
<target state="translated">Il codice di autorizzazione specificato non può essere utilizzato da questa applicazione client.</target>
<note/>
</trans-unit>
<trans-unit id="ID3070">
<trans-unit id="ID2070">
<source>The specified device code cannot be used by this client application.</source>
<target state="translated">Il codice del dispositivo specificato non può essere utilizzato da questa applicazione client.</target>
<note/>
</trans-unit>
<trans-unit id="ID3071">
<trans-unit id="ID2071">
<source>The specified refresh token cannot be used by this client application.</source>
<target state="translated">Il token di aggiornamento specificato non può essere utilizzato da questa applicazione client.</target>
<note/>
</trans-unit>
<trans-unit id="ID3072">
<trans-unit id="ID2072">
<source>The specified '{0}' parameter doesn't match the client redirection address the authorization code was initially sent to.</source>
<target state="translated">Il parametro '{0}' specificato non corrisponde all'indirizzo di reindirizzamento del client a cui è stato inizialmente inviato il codice di autorizzazione.</target>
<note/>
</trans-unit>
<trans-unit id="ID3073">
<trans-unit id="ID2073">
<source>The '{0}' parameter cannot be used when no '{1}' was specified in the authorization request.</source>
<target state="translated">Il parametro '{0}' non può essere utilizzato se non è stato specificato alcun '{1}' nella richiesta di autorizzazione.</target>
<note/>
</trans-unit>
<trans-unit id="ID3074">
<trans-unit id="ID2074">
<source>The '{0}' parameter is not valid in this context.</source>
<target state="translated">Il parametro '{0}' non è valido in questo contesto.</target>
<note/>
</trans-unit>
<trans-unit id="ID3075">
<trans-unit id="ID2075">
<source>This client application is not allowed to use the introspection endpoint.</source>
<target state="translated">L'applicazione client non può utilizzare l'endpoint di introspezione.</target>
<note/>
</trans-unit>
<trans-unit id="ID3076">
<trans-unit id="ID2076">
<source>The specified token cannot be introspected.</source>
<target state="translated">Il token specificato non può essere esaminato.</target>
<note/>
</trans-unit>
<trans-unit id="ID3077">
<trans-unit id="ID2077">
<source>The client application is not allowed to introspect the specified token.</source>
<target state="translated">L'applicazione client non è autorizzata a esaminare il token specificato.</target>
<note/>
</trans-unit>
<trans-unit id="ID3078">
<trans-unit id="ID2078">
<source>This client application is not allowed to use the revocation endpoint.</source>
<target state="translated">L'applicazione client non è autorizzata a utilizzare l'endpoint di revoca.</target>
<note/>
</trans-unit>
<trans-unit id="ID3079">
<trans-unit id="ID2079">
<source>This token cannot be revoked.</source>
<target state="translated">Questo token non può essere revocato.</target>
<note/>
</trans-unit>
<trans-unit id="ID3080">
<trans-unit id="ID2080">
<source>The client application is not allowed to revoke the specified token.</source>
<target state="translated">L'applicazione client non è autorizzata a revocare il token specificato.</target>
<note/>
</trans-unit>
<trans-unit id="ID3081">
<trans-unit id="ID2081">
<source>The mandatory '{0}' header is missing.</source>
<target state="translated">Manca l'intestazione '{0}' obbligatoria.</target>
<note/>
</trans-unit>
<trans-unit id="ID3082">
<trans-unit id="ID2082">
<source>The specified '{0}' header is invalid.</source>
<target state="translated">L'intestazione '{0}' specificata non è valida.</target>
<note/>
</trans-unit>
<trans-unit id="ID3083">
<trans-unit id="ID2083">
<source>This server only accepts HTTPS requests.</source>
<target state="translated">Questo server accetta solo richieste HTTPS.</target>
<note/>
</trans-unit>
<trans-unit id="ID3084">
<trans-unit id="ID2084">
<source>The specified HTTP method is not valid.</source>
<target state="translated">Il metodo HTTP specificato non è valido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3085">
<trans-unit id="ID2085">
<source>A token with the same reference identifier already exists.</source>
<target state="translated">Esiste già un token con lo stesso identificatore di riferimento.</target>
<note/>
</trans-unit>
<trans-unit id="ID3086">
<trans-unit id="ID2086">
<source>The token type cannot be null or empty.</source>
<target state="translated">Il tipo di token non può essere nullo o vuoto.</target>
<note/>
</trans-unit>
<trans-unit id="ID3087">
<trans-unit id="ID2087">
<source>Multiple client credentials cannot be specified.</source>
<target state="translated">Non è possibile specificare più credenziali client.</target>
<note/>
</trans-unit>
<trans-unit id="ID3088">
<trans-unit id="ID2088">
<source>The issuer associated to the specified token is not valid.</source>
<target state="translated">L'emittente associato al token specificato non è valido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3089">
<trans-unit id="ID2089">
<source>The specified token is not of the expected type.</source>
<target state="translated">Il token specificato non è del tipo previsto.</target>
<note/>
</trans-unit>
<trans-unit id="ID3090">
<trans-unit id="ID2090">
<source>The signing key associated to the specified token was not found.</source>
<target state="translated">La chiave di firma associata al token specificato non è stata trovata.</target>
<note/>
</trans-unit>
<trans-unit id="ID3091">
<trans-unit id="ID2091">
<source>The signature associated to the specified token is not valid.</source>
<target state="translated">La firma associata al token specificato non è valida.</target>
<note/>
</trans-unit>
<trans-unit id="ID3092">
<trans-unit id="ID2092">
<source>This resource server is currently unavailable.</source>
<target state="translated">Questo server di risorse non è attualmente disponibile.</target>
<note/>
</trans-unit>
<trans-unit id="ID3093">
<trans-unit id="ID2093">
<source>The specified token doesn't contain any audience.</source>
<target state="needs-l10n">Il token specificato non contiene alcun pubblico.</target>
<note/>
</trans-unit>
<trans-unit id="ID3094">
<trans-unit id="ID2094">
<source>The specified token cannot be used with this resource server.</source>
<target state="translated">Il token specificato non può essere utilizzato con questo server di risorse.</target>
<note/>
</trans-unit>
<trans-unit id="ID3095">
<trans-unit id="ID2095">
<source>The user represented by the token is not allowed to perform the requested action.</source>
<target state="translated">L'utente rappresentato dal token non è autorizzato a eseguire l'azione richiesta.</target>
<note/>
</trans-unit>
<trans-unit id="ID3096">
<trans-unit id="ID2096">
<source>No issuer could be found in the server configuration.</source>
<target state="translated">Nessun emittente è stato trovato nella configurazione del server.</target>
<note/>
</trans-unit>
<trans-unit id="ID3097">
<trans-unit id="ID2097">
<source>A server configuration containing an invalid issuer was returned.</source>
<target state="translated">È stata restituita una configurazione del server contenente un emittente non valido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3098">
<trans-unit id="ID2098">
<source>The issuer returned in the server configuration is not valid.</source>
<target state="translated">L'emittente restituito nella configurazione del server non è valido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3099">
<trans-unit id="ID2099">
<source>No JWKS endpoint could be found in the server configuration.</source>
<target state="translated">Nessun endpoint JWKS è stato trovato nella configurazione del server.</target>
<note/>
</trans-unit>
<trans-unit id="ID3100">
<trans-unit id="ID2100">
<source>A server configuration containing an invalid JWKS endpoint URL was returned.</source>
<target state="translated">È stata restituita una configurazione server contenente un URL dell'endpoint JWKS non valido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3101">
<trans-unit id="ID2101">
<source>A server configuration containing an invalid introspection endpoint URL was returned.</source>
<target state="translated">È stata restituita una configurazione del server contenente un URL dell'endpoint di introspezione non valido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3102">
<trans-unit id="ID2102">
<source>The JWKS document didn't contain a valid '{0}' node with at least one key.</source>
<target state="translated">Il documento JWKS non conteneva un nodo '{0}' valido con almeno una chiave.</target>
<note/>
</trans-unit>
<trans-unit id="ID3103">
<trans-unit id="ID2103">
<source>A JWKS response containing an unsupported key was returned.</source>
<target state="translated">È stata restituita una risposta JWKS contenente una chiave non supportata.</target>
<note/>
</trans-unit>
<trans-unit id="ID3104">
<trans-unit id="ID2104">
<source>A JWKS response containing an invalid key was returned.</source>
<target state="translated">È stata restituita una risposta JWKS contenente una chiave non valida.</target>
<note/>
</trans-unit>
<trans-unit id="ID3105">
<trans-unit id="ID2105">
<source>The mandatory '{0}' parameter couldn't be found in the introspection response.</source>
<target state="translated">Impossibile trovare il parametro obbligatorio '{0}' nella risposta di introspezione.</target>
<note/>
</trans-unit>
<trans-unit id="ID3106">
<trans-unit id="ID2106">
<source>The token was rejected by the remote authentication server.</source>
<target state="translated">Il token è stato rifiutato dal server di autenticazione remoto.</target>
<note/>
</trans-unit>
<trans-unit id="ID3107">
<trans-unit id="ID2107">
<source>The '{0}' claim is malformed or isn't of the expected type.</source>
<target state="translated">La rivendicazione '{0}' non è valida o non è del tipo previsto.</target>
<note/>
</trans-unit>
<trans-unit id="ID3108">
<trans-unit id="ID2108">
<source>An introspection response containing a malformed issuer was returned.</source>
<target state="translated">È stata restituita una risposta di introspezione contenente un emittente non valido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3109">
<trans-unit id="ID2109">
<source>The issuer returned in the introspection response is not valid.</source>
<target state="translated">L'emittente restituito nella risposta di introspezione non è valido.</target>
<note/>
</trans-unit>
<trans-unit id="ID3110">
<trans-unit id="ID2110">
<source>The type of the introspected token doesn't match the expected type.</source>
<target state="translated">Il tipo di token analizzato non corrisponde al tipo previsto.</target>
<note/>
</trans-unit>
<trans-unit id="ID3111">
<trans-unit id="ID2111">
<source>An application with the same client identifier already exists.</source>
<target state="translated">Esiste già un'applicazione con lo stesso identificatore client.</target>
<note/>
</trans-unit>
<trans-unit id="ID3112">
<trans-unit id="ID2112">
<source>Only confidential, hybrid or public applications are supported by the default application manager.</source>
<target state="translated">Solo le applicazioni riservate, ibride o pubbliche sono supportate dal gestore applicazioni predefinito.</target>
<note/>
</trans-unit>
<trans-unit id="ID3113">
<trans-unit id="ID2113">
<source>The client secret cannot be null or empty for a confidential application.</source>
<target state="translated">Il segreto client non può essere nullo o vuoto per un'applicazione riservata.</target>
<note/>
</trans-unit>
<trans-unit id="ID3114">
<trans-unit id="ID2114">
<source>A client secret cannot be associated with a public application.</source>
<target state="translated">Un segreto client non può essere associato a un'applicazione pubblica.</target>
<note/>
</trans-unit>
<trans-unit id="ID3115">
<trans-unit id="ID2115">
<source>Callback URLs cannot contain a fragment.</source>
<target state="translated">Gli URL di richiamata non possono contenere un frammento.</target>
<note/>
</trans-unit>
<trans-unit id="ID3116">
<trans-unit id="ID2116">
<source>The authorization type cannot be null or empty.</source>
<target state="translated">Il tipo di autorizzazione non può essere nullo o vuoto.</target>
<note/>
</trans-unit>
<trans-unit id="ID3117">
<trans-unit id="ID2117">
<source>The specified authorization type is not supported by the default token manager.</source>
<target state="translated">Il tipo di autorizzazione specificato non è supportato dal gestore di token predefinito.</target>
<note/>
</trans-unit>
<trans-unit id="ID3118">
<trans-unit id="ID2118">
<source>The client type cannot be null or empty.</source>
<target state="translated">Il tipo di client non può essere nullo o vuoto.</target>
<note/>
</trans-unit>
<trans-unit id="ID3119">
<trans-unit id="ID2119">
<source>Callback URLs cannot be null or empty.</source>
<target state="translated">Gli URL di richiamata non possono essere nulli o vuoti.</target>
<note/>
</trans-unit>
<trans-unit id="ID3120">
<trans-unit id="ID2120">
<source>Callback URLs must be valid absolute URLs.</source>
<target state="translated">Gli URL di richiamata devono essere URL assoluti validi.</target>
<note/>
</trans-unit>
<trans-unit id="ID9000">
<trans-unit id="ID8000">
<source>Removes orphaned tokens and authorizations from the database.</source>
<target state="translated">Rimuove i token e le autorizzazioni orfani dal database.</target>
<note/>
</trans-unit>
<trans-unit id="ID9001">
<trans-unit id="ID8001">
<source>Starts the scheduled task at regular intervals.</source>
<target state="translated">Avvia l'attività pianificata a intervalli regolari.</target>
<note/>

238
src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.tr.xlf

@ -2,597 +2,597 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="tr" original="../OpenIddictResources.resx">
<body>
<trans-unit id="ID3000">
<trans-unit id="ID2000">
<source>The security token is missing.</source>
<target state="translated">Güvenlik belirteci eksik.</target>
<note />
</trans-unit>
<trans-unit id="ID3001">
<trans-unit id="ID2001">
<source>The specified authorization code is invalid.</source>
<target state="translated">Belirtilen yetkilendirme kodu geçersiz.</target>
<note />
</trans-unit>
<trans-unit id="ID3002">
<trans-unit id="ID2002">
<source>The specified device code is invalid.</source>
<target state="translated">Belirtilen cihaz kodu geçersiz.</target>
<note />
</trans-unit>
<trans-unit id="ID3003">
<trans-unit id="ID2003">
<source>The specified refresh token is invalid.</source>
<target state="translated">Belirtilen yenileme belirteci geçersiz.</target>
<note />
</trans-unit>
<trans-unit id="ID3004">
<trans-unit id="ID2004">
<source>The specified token is invalid.</source>
<target state="translated">Geçersiz belirteç.</target>
<note />
</trans-unit>
<trans-unit id="ID3005">
<trans-unit id="ID2005">
<source>The specified token is not an authorization code.</source>
<target state="translated">Belirteç Yetkilendirme belirteci değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3006">
<trans-unit id="ID2006">
<source>The specified token is not an device code.</source>
<target state="translated">Belirteç cihaz kodu değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3007">
<trans-unit id="ID2007">
<source>The specified token is not a refresh token.</source>
<target state="translated">Belirteç yenileme belirteci değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3008">
<trans-unit id="ID2008">
<source>The specified token is not an access token.</source>
<target state="translated">Belirteç erişim belirteci değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3009">
<trans-unit id="ID2009">
<source>The specified identity token is invalid.</source>
<target state="translated">Kimlik belirteci geçerli değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3010">
<trans-unit id="ID2010">
<source>The specified authorization code has already been redeemed.</source>
<target state="translated">Yetkilendirme belirteci daha önce kullanılmış.</target>
<note />
</trans-unit>
<trans-unit id="ID3011">
<trans-unit id="ID2011">
<source>The specified device code has already been redeemed.</source>
<target state="translated">Cihaz kodu daha önce kullanılmış.</target>
<note />
</trans-unit>
<trans-unit id="ID3012">
<trans-unit id="ID2012">
<source>The specified refresh token has already been redeemed.</source>
<target state="translated">Yenileme belirteci daha önce kullanılmış.</target>
<note />
</trans-unit>
<trans-unit id="ID3013">
<trans-unit id="ID2013">
<source>The specified token has already been redeemed.</source>
<target state="translated">Belirteç daha önce kullanılmış.</target>
<note />
</trans-unit>
<trans-unit id="ID3014">
<trans-unit id="ID2014">
<source>The authorization has not been granted yet by the end user.</source>
<target state="translated">Yetkilendirme son kullanıcı tarafından henüz verilmedi.</target>
<note />
</trans-unit>
<trans-unit id="ID3015">
<trans-unit id="ID2015">
<source>The authorization was denied by the end user.</source>
<target state="translated">Yetkilendirme son kullanıcı tarafından reddedildi.</target>
<note />
</trans-unit>
<trans-unit id="ID3016">
<trans-unit id="ID2016">
<source>The specified authorization code is no longer valid.</source>
<target state="translated">Yetkilendirme kodu artık geçerli değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3017">
<trans-unit id="ID2017">
<source>The specified device code is no longer valid.</source>
<target state="translated">Cihaz kodu artık geçerli değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3018">
<trans-unit id="ID2018">
<source>The specified refresh token is no longer valid.</source>
<target state="translated">Yenileme belirteci artık geçerli değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3019">
<trans-unit id="ID2019">
<source>The specified token is no longer valid.</source>
<target state="translated">Belirteç artık geçerli değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3020">
<trans-unit id="ID2020">
<source>The authorization associated with the authorization code is no longer valid.</source>
<target state="translated">Yetkilendirme ile ilişkili yetkilendirme kodu artık geçerli değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3021">
<trans-unit id="ID2021">
<source>The authorization associated with the device code is no longer valid.</source>
<target state="translated">Yetkilendirme ile ilişkili cihaz kodu artık geçerli değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3022">
<trans-unit id="ID2022">
<source>The authorization associated with the refresh token is no longer valid.</source>
<target state="translated">Yenileme belirteci ile ilişkili cihaz kodu artık geçerli değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3023">
<trans-unit id="ID2023">
<source>The authorization associated with the token is no longer valid.</source>
<target state="translated">Yetkilendirme ile ilişkili belirteç artık geçerli değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3024">
<trans-unit id="ID2024">
<source>The token request was rejected by the authentication server.</source>
<target state="translated">Belirteç isteği erişim sunucusu tarafından reddedildi.</target>
<note />
</trans-unit>
<trans-unit id="ID3025">
<trans-unit id="ID2025">
<source>The user information access demand was rejected by the authentication server.</source>
<target state="translated">Kullanıcı bilgisi isteği erişim sunucusu tarafından reddedildi.</target>
<note />
</trans-unit>
<trans-unit id="ID3026">
<trans-unit id="ID2026">
<source>The specified user code is no longer valid.</source>
<target state="translated">Kullanıcı kodu artık geçerli değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3028">
<trans-unit id="ID2028">
<source>The '{0}' parameter is not supported.</source>
<target state="translated">'{0}' parametresi desteklenmiyor.</target>
<note />
</trans-unit>
<trans-unit id="ID3029">
<trans-unit id="ID2029">
<source>The mandatory '{0}' parameter is missing.</source>
<target state="translated">Zorunlu '{0}' parametresi eksik.</target>
<note />
</trans-unit>
<trans-unit id="ID3030">
<trans-unit id="ID2030">
<source>The '{0}' parameter must be a valid absolute URL.</source>
<target state="translated">'{0}' parametresi geçerli bir mutlak link olmalıdır.</target>
<note />
</trans-unit>
<trans-unit id="ID3031">
<trans-unit id="ID2031">
<source>The '{0}' parameter must not include a fragment.</source>
<target state="translated">'{0}' parametresi parçe içermemelidir.</target>
<note />
</trans-unit>
<trans-unit id="ID3032">
<trans-unit id="ID2032">
<source>The specified '{0}' is not supported.</source>
<target state="translated">Belirtilen '{0}' desteklenmemektedir..</target>
<note />
</trans-unit>
<trans-unit id="ID3033">
<trans-unit id="ID2033">
<source>The specified '{0}'/'{1}' combination is invalid.</source>
<target state="translated">Belirtilen '{0}'/'{1}' kombinasyonu geçersizdir.</target>
<note />
</trans-unit>
<trans-unit id="ID3034">
<trans-unit id="ID2034">
<source>The mandatory '{0}' scope is missing.</source>
<target state="translated">Zorunlu '{0}' kapsamı eksik.</target>
<note />
</trans-unit>
<trans-unit id="ID3035">
<trans-unit id="ID2035">
<source>The '{0}' scope is not allowed.</source>
<target state="translated">'{0}' kapsamına izin verilmemektedir.</target>
<note />
</trans-unit>
<trans-unit id="ID3036">
<trans-unit id="ID2036">
<source>The client identifier cannot be null or empty.</source>
<target state="translated">İstemci tanımlayıcısı boş veya tanımsız olamaz.</target>
<note />
</trans-unit>
<trans-unit id="ID3037">
<trans-unit id="ID2037">
<source>The '{0}' parameter cannot be used without '{1}'.</source>
<target state="translated">'{0}' parametresi '{1}' olmadan kullanılamaz.</target>
<note />
</trans-unit>
<trans-unit id="ID3038">
<trans-unit id="ID2038">
<source>The status cannot be null or empty.</source>
<target state="translated">Durum boş veya tanımsız olamaz.</target>
<note />
</trans-unit>
<trans-unit id="ID3039">
<trans-unit id="ID2039">
<source>Scopes cannot be null or empty.</source>
<target state="translated">Kapsamlar boş veya tanımsız olamaz.</target>
<note />
</trans-unit>
<trans-unit id="ID3040">
<trans-unit id="ID2040">
<source>The '{0}' and '{1}' parameters can only be used with a response type containing '{2}'.</source>
<target state="translated">'{0}' ve '{1}' parametreleri ancak '{2}' içeren yanıt tipleri ile kullanılabilir.</target>
<note />
</trans-unit>
<trans-unit id="ID3041">
<trans-unit id="ID2041">
<source>The specified '{0}' is not allowed when using PKCE.</source>
<target state="translated">Belirtilen '{0}' PKCE ile birlikte kullanılamaz..</target>
<note />
</trans-unit>
<trans-unit id="ID3042">
<trans-unit id="ID2042">
<source>Scopes cannot contain spaces.</source>
<target state="translated">Kapsamlar boşluk içeremez.</target>
<note />
</trans-unit>
<trans-unit id="ID3043">
<trans-unit id="ID2043">
<source>The specified '{0}' is not valid for this client application.</source>
<target state="translated">Belirtilen '{0}' istemci uygulaması için geçerli değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3044">
<trans-unit id="ID2044">
<source>The scope name cannot be null or empty.</source>
<target state="translated">Kapsam ismi boş veya tanımmsız olamaz.</target>
<note />
</trans-unit>
<trans-unit id="ID3045">
<trans-unit id="ID2045">
<source>The scope name cannot contain spaces.</source>
<target state="translated">Kapsam ismi boşluk içeremez.</target>
<note />
</trans-unit>
<trans-unit id="ID3046">
<trans-unit id="ID2046">
<source>This client application is not allowed to use the authorization endpoint.</source>
<target state="translated">Bu istemci uygulamasının yetkilendirme uç birimini kullanmaya izni bulunmamaktadır.</target>
<note />
</trans-unit>
<trans-unit id="ID3047">
<trans-unit id="ID2047">
<source>The client application is not allowed to use the authorization code flow.</source>
<target state="translated">Bu istemci uygulamasının yetkilendirme kodu akışını kullanmaya izni bulunmamaktadır.</target>
<note />
</trans-unit>
<trans-unit id="ID3048">
<trans-unit id="ID2048">
<source>The client application is not allowed to use the implicit flow.</source>
<target state="translated">Bu istemci uygulamasının implicit akış kullanmaya izni bulunmamaktadır.</target>
<note />
</trans-unit>
<trans-unit id="ID3049">
<trans-unit id="ID2049">
<source>The client application is not allowed to use the hybrid flow.</source>
<target state="translated">Bu istemci uygulamasının hibrit akış kullanmaya izni bulunmamaktadır.</target>
<note />
</trans-unit>
<trans-unit id="ID3051">
<trans-unit id="ID2051">
<source>This client application is not allowed to use the specified scope.</source>
<target state="translated">Bu istemci uygulamasının belirtilen kapsamları kullanmaya izni bulunmamaktadır.</target>
<note />
</trans-unit>
<trans-unit id="ID3052">
<trans-unit id="ID2052">
<source>The specified '{0}' is invalid.</source>
<target state="translated">Belirtilen '{0}' geçersiz.</target>
<note />
</trans-unit>
<trans-unit id="ID3053">
<trans-unit id="ID2053">
<source>The '{0}' parameter is not valid for this client application.</source>
<target state="translated">'{0}' parametresi bu istemci uygulaması ile geçerli değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3054">
<trans-unit id="ID2054">
<source>The '{0}' parameter required for this client application is missing.</source>
<target state="translated">Eksik '{0}' parametresi bu istemci uygulaması için zorunludur.</target>
<note />
</trans-unit>
<trans-unit id="ID3055">
<trans-unit id="ID2055">
<source>The specified client credentials are invalid.</source>
<target state="translated">İstemci kimlik bilgileri geçersiz.</target>
<note />
</trans-unit>
<trans-unit id="ID3056">
<trans-unit id="ID2056">
<source>This client application is not allowed to use the device endpoint.</source>
<target state="translated">İstemci uygulamasının cihaz uçbirimini kullanmaya izni bulunmamaktadır.</target>
<note />
</trans-unit>
<trans-unit id="ID3057">
<trans-unit id="ID2057">
<source>The '{0}' and '{1}' parameters are required when using the client credentials grant.</source>
<target state="translated">'{0}' ve '{1}' parametreleri istemci kimlik bilgileri hakkı kullanıldığında zorunludur.</target>
<note />
</trans-unit>
<trans-unit id="ID3058">
<trans-unit id="ID2058">
<source>The '{0}' parameter is required when using the device code grant.</source>
<target state="translated">'{0}' parametresi cihaz kodu hakkı kullanıldığında zorunludur.</target>
<note />
</trans-unit>
<trans-unit id="ID3059">
<trans-unit id="ID2059">
<source>The mandatory '{0}' and/or '{1}' parameters are missing.</source>
<target state="translated">Zorunlu '{0}' ve/veya '{1}' parametreleri eksik.</target>
<note />
</trans-unit>
<trans-unit id="ID3060">
<trans-unit id="ID2060">
<source>A scope with the same name already exists.</source>
<target state="translated">Aynı isimde bir kapsam bulunmaktadır..</target>
<note />
</trans-unit>
<trans-unit id="ID3063">
<trans-unit id="ID2063">
<source>This client application is not allowed to use the token endpoint.</source>
<target state="translated">İstemci uygulamasının belirteç uçbirimini kullanmaya izni bulunmamaktadır.</target>
<note />
</trans-unit>
<trans-unit id="ID3064">
<trans-unit id="ID2064">
<source>This client application is not allowed to use the specified grant type.</source>
<target state="translated">İstemci uygulamasının belirtilen hak tipini kullanmaya izni bulunmamaktadır.</target>
<note />
</trans-unit>
<trans-unit id="ID3065">
<trans-unit id="ID2065">
<source>The client application is not allowed to use the '{0}' scope.</source>
<target state="translated">İstemci uygulamasının '{0}' kapsamını kullanmaya izni bulunmamaktadır..</target>
<note />
</trans-unit>
<trans-unit id="ID3066">
<trans-unit id="ID2066">
<source>The specified authorization code cannot be used without sending a client identifier.</source>
<target state="translated">Belirtilen yetkilendirme kodu istemci tanımlayıcı yollanmadan kullanılamaz.</target>
<note />
</trans-unit>
<trans-unit id="ID3067">
<trans-unit id="ID2067">
<source>The specified device code cannot be used without sending a client identifier.</source>
<target state="translated">Belirtilen cihaz kodu istemci tanımlayıcı yollanmadan kullanılamaz.</target>
<note />
</trans-unit>
<trans-unit id="ID3068">
<trans-unit id="ID2068">
<source>The specified refresh token cannot be used without sending a client identifier.</source>
<target state="translated">Belirtilen yenileme belirteci istemci tanımlayıcı yollanmadan kullanılamaz.</target>
<note />
</trans-unit>
<trans-unit id="ID3069">
<trans-unit id="ID2069">
<source>The specified authorization code cannot be used by this client application.</source>
<target state="translated">Belirtilen yetkilendirme kodu istemci uygulaması tarafından kullanılamaz.</target>
<note />
</trans-unit>
<trans-unit id="ID3070">
<trans-unit id="ID2070">
<source>The specified device code cannot be used by this client application.</source>
<target state="translated">Belirtilen cihaz kodu istemci uygulaması tarafından kullanılamaz.</target>
<note />
</trans-unit>
<trans-unit id="ID3071">
<trans-unit id="ID2071">
<source>The specified refresh token cannot be used by this client application.</source>
<target state="translated">Belirtilen yenileme belirteci istemci uygulaması tarafından kullanılamaz.</target>
<note />
</trans-unit>
<trans-unit id="ID3072">
<trans-unit id="ID2072">
<source>The specified '{0}' parameter doesn't match the client redirection address the authorization code was initially sent to.</source>
<target state="translated">'{0}' parametresi yetkilendirme kodunun ilk yollandığı istemci yönlendirme adresi ile eşleşmiyor.</target>
<note />
</trans-unit>
<trans-unit id="ID3073">
<trans-unit id="ID2073">
<source>The '{0}' parameter cannot be used when no '{1}' was specified in the authorization request.</source>
<target state="translated">'{0}' parametresi yetkilendirme isteğinde '{1}' tanımlanmadığında kullanılamaz.</target>
<note />
</trans-unit>
<trans-unit id="ID3074">
<trans-unit id="ID2074">
<source>The '{0}' parameter is not valid in this context.</source>
<target state="translated">'{0}' parametresi bu bağlamda geçerli değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3075">
<trans-unit id="ID2075">
<source>This client application is not allowed to use the introspection endpoint.</source>
<target state="translated">İstemci uygulamasının içgözlem uçbirimini kullanmaya izni bulunmamaktadır.</target>
<note />
</trans-unit>
<trans-unit id="ID3076">
<trans-unit id="ID2076">
<source>The specified token cannot be introspected.</source>
<target state="translated">Belirteç içgözlenemez.</target>
<note />
</trans-unit>
<trans-unit id="ID3077">
<trans-unit id="ID2077">
<source>The client application is not allowed to introspect the specified token.</source>
<target state="translated">İstemci uygulamasının belirteci içgözlemlemeye izni bulunmamaktadır.</target>
<note />
</trans-unit>
<trans-unit id="ID3078">
<trans-unit id="ID2078">
<source>This client application is not allowed to use the revocation endpoint.</source>
<target state="translated">İstemci uygulamasının yürürlükten kaldırma uçbirimini kullanmaya izni bulunmamaktadır.</target>
<note />
</trans-unit>
<trans-unit id="ID3079">
<trans-unit id="ID2079">
<source>This token cannot be revoked.</source>
<target state="translated">Belirteç yürürlükten kaldırılamaz.</target>
<note />
</trans-unit>
<trans-unit id="ID3080">
<trans-unit id="ID2080">
<source>The client application is not allowed to revoke the specified token.</source>
<target state="translated">İstemci uygulamasının belirteci yürürlükten kaldırmaya izni bulunmamaktadır.</target>
<note />
</trans-unit>
<trans-unit id="ID3081">
<trans-unit id="ID2081">
<source>The mandatory '{0}' header is missing.</source>
<target state="translated">Zorunlu '{0}' başlığı eksik.</target>
<note />
</trans-unit>
<trans-unit id="ID3082">
<trans-unit id="ID2082">
<source>The specified '{0}' header is invalid.</source>
<target state="translated">'{0}' başlığı geçersiz.</target>
<note />
</trans-unit>
<trans-unit id="ID3083">
<trans-unit id="ID2083">
<source>This server only accepts HTTPS requests.</source>
<target state="translated">Bu sunucu sadece HTTPS isteklerini kabul etmektedir.</target>
<note />
</trans-unit>
<trans-unit id="ID3084">
<trans-unit id="ID2084">
<source>The specified HTTP method is not valid.</source>
<target state="translated">Belirtilen HTTP metodu geçersiz.</target>
<note />
</trans-unit>
<trans-unit id="ID3085">
<trans-unit id="ID2085">
<source>A token with the same reference identifier already exists.</source>
<target state="translated">Aynı referans tanımlayıcı ile bir belirteç bulunmaktadır.</target>
<note />
</trans-unit>
<trans-unit id="ID3086">
<trans-unit id="ID2086">
<source>The token type cannot be null or empty.</source>
<target state="translated">Belirteç tipi boş veya tanımsız olamaz.</target>
<note />
</trans-unit>
<trans-unit id="ID3087">
<trans-unit id="ID2087">
<source>Multiple client credentials cannot be specified.</source>
<target state="translated">Birden çok istemci kimlik bilgisi belirtilemez.</target>
<note />
</trans-unit>
<trans-unit id="ID3088">
<trans-unit id="ID2088">
<source>The issuer associated to the specified token is not valid.</source>
<target state="translated">Belirteç ile ilişkilendirilen kuruluş geçerli değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3089">
<trans-unit id="ID2089">
<source>The specified token is not of the expected type.</source>
<target state="translated">Belirteç beklenen tipte değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3090">
<trans-unit id="ID2090">
<source>The signing key associated to the specified token was not found.</source>
<target state="translated">Belirteç ile ilişkilendirilen imzalama anahtarı bulunamadı.</target>
<note />
</trans-unit>
<trans-unit id="ID3091">
<trans-unit id="ID2091">
<source>The signature associated to the specified token is not valid.</source>
<target state="translated">Belirteç ile ilişkilendirilen imza geçerli değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3092">
<trans-unit id="ID2092">
<source>This resource server is currently unavailable.</source>
<target state="translated">Kaynak sunucusu ulaşılabilir değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3093">
<trans-unit id="ID2093">
<source>The specified token doesn't contain any audience.</source>
<target state="translated">Belirteç izleyici içermemektedir.</target>
<note />
</trans-unit>
<trans-unit id="ID3094">
<trans-unit id="ID2094">
<source>The specified token cannot be used with this resource server.</source>
<target state="translated">Belirteç bu kaynak sunucusu ile kullanılamaz.</target>
<note />
</trans-unit>
<trans-unit id="ID3095">
<trans-unit id="ID2095">
<source>The user represented by the token is not allowed to perform the requested action.</source>
<target state="translated">Belirteç ile ilişkilendirilen kullanıcının talep edilen işlemi gerçekleştirmeye izni bulunmamaktadır.</target>
<note />
</trans-unit>
<trans-unit id="ID3096">
<trans-unit id="ID2096">
<source>No issuer could be found in the server configuration.</source>
<target state="translated">Sunucu yapılandırmasında kuruluş bulunamadı.</target>
<note />
</trans-unit>
<trans-unit id="ID3097">
<trans-unit id="ID2097">
<source>A server configuration containing an invalid issuer was returned.</source>
<target state="translated">Geçersiz bir kuruluş içeren sunucu yapılandırması yanıtı döndü.</target>
<note />
</trans-unit>
<trans-unit id="ID3098">
<trans-unit id="ID2098">
<source>The issuer returned in the server configuration is not valid.</source>
<target state="translated">Sunucu yapılandırmasında döndürülen kuruluş yanıtı geçerli değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3099">
<trans-unit id="ID2099">
<source>No JWKS endpoint could be found in the server configuration.</source>
<target state="translated">Sunucu yapılandırmasında JWKS uçbirimi bulunamadı.</target>
<note />
</trans-unit>
<trans-unit id="ID3100">
<trans-unit id="ID2100">
<source>A server configuration containing an invalid JWKS endpoint URL was returned.</source>
<target state="translated">Geçersiz JWKS uçbirimi adresi içeren sunucu yapılandırması yanıtı döndü.</target>
<note />
</trans-unit>
<trans-unit id="ID3101">
<trans-unit id="ID2101">
<source>A server configuration containing an invalid introspection endpoint URL was returned.</source>
<target state="translated">Geçersiz içgözlem uçbirimi adresi adresi içeren sunucu yapılandırması yanıtı döndü.</target>
<note />
</trans-unit>
<trans-unit id="ID3102">
<trans-unit id="ID2102">
<source>The JWKS document didn't contain a valid '{0}' node with at least one key.</source>
<target state="translated">JWKS dokümanı en az bir anahtarı olan geçerli bir '{0}' ucu içermemektedir.</target>
<note />
</trans-unit>
<trans-unit id="ID3103">
<trans-unit id="ID2103">
<source>A JWKS response containing an unsupported key was returned.</source>
<target state="translated">Desteklenmeyen bir anahtar içeren bir JWKS yanıtı döndü.</target>
<note />
</trans-unit>
<trans-unit id="ID3104">
<trans-unit id="ID2104">
<source>A JWKS response containing an invalid key was returned.</source>
<target state="translated">Geçersiz anahtar içeren bir JWKS yanıtı döndü.</target>
<note />
</trans-unit>
<trans-unit id="ID3105">
<trans-unit id="ID2105">
<source>The mandatory '{0}' parameter couldn't be found in the introspection response.</source>
<target state="translated">Zorunlu '{0}' parametresi içgözlem yanıtında bulunamadı.</target>
<note />
</trans-unit>
<trans-unit id="ID3106">
<trans-unit id="ID2106">
<source>The token was rejected by the remote authentication server.</source>
<target state="translated">Belirteç uzak erişim sunucusu tarafından reddedildi.</target>
<note />
</trans-unit>
<trans-unit id="ID3107">
<trans-unit id="ID2107">
<source>The '{0}' claim is malformed or isn't of the expected type.</source>
<target state="translated">'{0}' hakkı kusurlu veya beklenen tipte değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3108">
<trans-unit id="ID2108">
<source>An introspection response containing a malformed issuer was returned.</source>
<target state="translated">Kusurlu kuruluş içeren bir içgözlem yanıtı döndü.</target>
<note />
</trans-unit>
<trans-unit id="ID3109">
<trans-unit id="ID2109">
<source>The issuer returned in the introspection response is not valid.</source>
<target state="translated">İçgözlem yanıtında dönen kuruluş geçerli değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3110">
<trans-unit id="ID2110">
<source>The type of the introspected token doesn't match the expected type.</source>
<target state="translated">İçgözlenen belirteç tipi beklenen tipte değil.</target>
<note />
</trans-unit>
<trans-unit id="ID3111">
<trans-unit id="ID2111">
<source>An application with the same client identifier already exists.</source>
<target state="translated">Aynı istemci belirteci ile başka bir uygulama bulunmaktadır.</target>
<note />
</trans-unit>
<trans-unit id="ID3112">
<trans-unit id="ID2112">
<source>Only confidential, hybrid or public applications are supported by the default application manager.</source>
<target state="translated">Varsayılan uygulama yöneticisi tarafından sadece gizli, hibrit ve umumi uygulamalar desteklenmektedir.</target>
<note />
</trans-unit>
<trans-unit id="ID3113">
<trans-unit id="ID2113">
<source>The client secret cannot be null or empty for a confidential application.</source>
<target state="translated">Gizli uygulama için istemci gizli anahtarı boş veya tanımsız olamaz.</target>
<note />
</trans-unit>
<trans-unit id="ID3114">
<trans-unit id="ID2114">
<source>A client secret cannot be associated with a public application.</source>
<target state="translated">Umumi uygulama gizli anahtar ile ilişkilendirilemez.</target>
<note />
</trans-unit>
<trans-unit id="ID3115">
<trans-unit id="ID2115">
<source>Callback URLs cannot contain a fragment.</source>
<target state="translated">Geri çağırma adresi parça içeremez.</target>
<note />
</trans-unit>
<trans-unit id="ID3116">
<trans-unit id="ID2116">
<source>The authorization type cannot be null or empty.</source>
<target state="translated">Yetkilendirme tipi boş veya tanımsız olamaz.</target>
<note />
</trans-unit>
<trans-unit id="ID3117">
<trans-unit id="ID2117">
<source>The specified authorization type is not supported by the default token manager.</source>
<target state="translated">Yetkilendirme tipi varsayılan belirteç yöneticisi tarafından desteklenmemektedir.</target>
<note />
</trans-unit>
<trans-unit id="ID3118">
<trans-unit id="ID2118">
<source>The client type cannot be null or empty.</source>
<target state="translated">İstemci tipi boş veya tanımsız olamaz.</target>
<note />
</trans-unit>
<trans-unit id="ID3119">
<trans-unit id="ID2119">
<source>Callback URLs cannot be null or empty.</source>
<target state="translated">Geri çağırma adresi boş veya tanımsız olamaz..</target>
<note />
</trans-unit>
<trans-unit id="ID3120">
<trans-unit id="ID2120">
<source>Callback URLs must be valid absolute URLs.</source>
<target state="translated">Geri çağırma adresi mutlak ve geçerli bir adres olmalıdır.</target>
<note />
</trans-unit>
<trans-unit id="ID9000">
<trans-unit id="ID8000">
<source>Removes orphaned tokens and authorizations from the database.</source>
<target state="translated">Yetim belirteç ve yetkilendirmeleri veritabanından kaldırır.</target>
<note />
</trans-unit>
<trans-unit id="ID9001">
<trans-unit id="ID8001">
<source>Starts the scheduled task at regular intervals.</source>
<target state="translated">Zamanlanmış görevi düzenli aralıklarda başlatır.</target>
<note />

238
src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.zh-Hans.xlf

@ -2,597 +2,597 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="zh-Hans" original="../OpenIddictResources.resx">
<body>
<trans-unit id="ID3000">
<trans-unit id="ID2000">
<source>The security token is missing.</source>
<target state="translated">缺少安全令牌.</target>
<note />
</trans-unit>
<trans-unit id="ID3001">
<trans-unit id="ID2001">
<source>The specified authorization code is invalid.</source>
<target state="translated">指定的授权码无效.</target>
<note />
</trans-unit>
<trans-unit id="ID3002">
<trans-unit id="ID2002">
<source>The specified device code is invalid.</source>
<target state="translated">指定的设备码无效.</target>
<note />
</trans-unit>
<trans-unit id="ID3003">
<trans-unit id="ID2003">
<source>The specified refresh token is invalid.</source>
<target state="translated">指定的刷新令牌无效.</target>
<note />
</trans-unit>
<trans-unit id="ID3004">
<trans-unit id="ID2004">
<source>The specified token is invalid.</source>
<target state="translated">指定的令牌无效.</target>
<note />
</trans-unit>
<trans-unit id="ID3005">
<trans-unit id="ID2005">
<source>The specified token is not an authorization code.</source>
<target state="translated">指定的令牌不是授权码.</target>
<note />
</trans-unit>
<trans-unit id="ID3006">
<trans-unit id="ID2006">
<source>The specified token is not an device code.</source>
<target state="translated">指定的令牌不是设备码.</target>
<note />
</trans-unit>
<trans-unit id="ID3007">
<trans-unit id="ID2007">
<source>The specified token is not a refresh token.</source>
<target state="translated">指定的令牌不是刷新令牌.</target>
<note />
</trans-unit>
<trans-unit id="ID3008">
<trans-unit id="ID2008">
<source>The specified token is not an access token.</source>
<target state="translated">指定的令牌不是访问令牌.</target>
<note />
</trans-unit>
<trans-unit id="ID3009">
<trans-unit id="ID2009">
<source>The specified identity token is invalid.</source>
<target state="translated">指定的身份令牌无效.</target>
<note />
</trans-unit>
<trans-unit id="ID3010">
<trans-unit id="ID2010">
<source>The specified authorization code has already been redeemed.</source>
<target state="translated">指定的授权码已兑换.</target>
<note />
</trans-unit>
<trans-unit id="ID3011">
<trans-unit id="ID2011">
<source>The specified device code has already been redeemed.</source>
<target state="translated">指定的设备码已兑换.</target>
<note />
</trans-unit>
<trans-unit id="ID3012">
<trans-unit id="ID2012">
<source>The specified refresh token has already been redeemed.</source>
<target state="translated">指定的刷新令牌已兑换.</target>
<note />
</trans-unit>
<trans-unit id="ID3013">
<trans-unit id="ID2013">
<source>The specified token has already been redeemed.</source>
<target state="translated">指定的令牌已兑换.</target>
<note />
</trans-unit>
<trans-unit id="ID3014">
<trans-unit id="ID2014">
<source>The authorization has not been granted yet by the end user.</source>
<target state="translated">最终用户尚未授权.</target>
<note />
</trans-unit>
<trans-unit id="ID3015">
<trans-unit id="ID2015">
<source>The authorization was denied by the end user.</source>
<target state="translated">最终用户拒绝授权.</target>
<note />
</trans-unit>
<trans-unit id="ID3016">
<trans-unit id="ID2016">
<source>The specified authorization code is no longer valid.</source>
<target state="translated">指定的授权码不再有效.</target>
<note />
</trans-unit>
<trans-unit id="ID3017">
<trans-unit id="ID2017">
<source>The specified device code is no longer valid.</source>
<target state="translated">指定的设备码不再有效.</target>
<note />
</trans-unit>
<trans-unit id="ID3018">
<trans-unit id="ID2018">
<source>The specified refresh token is no longer valid.</source>
<target state="translated">指定的刷新令牌不再有效.</target>
<note />
</trans-unit>
<trans-unit id="ID3019">
<trans-unit id="ID2019">
<source>The specified token is no longer valid.</source>
<target state="translated">指定的令牌不再有效.</target>
<note />
</trans-unit>
<trans-unit id="ID3020">
<trans-unit id="ID2020">
<source>The authorization associated with the authorization code is no longer valid.</source>
<target state="translated">与授权码关联的授权不再有效.</target>
<note />
</trans-unit>
<trans-unit id="ID3021">
<trans-unit id="ID2021">
<source>The authorization associated with the device code is no longer valid.</source>
<target state="translated">与设备码关联的授权不再有效.</target>
<note />
</trans-unit>
<trans-unit id="ID3022">
<trans-unit id="ID2022">
<source>The authorization associated with the refresh token is no longer valid.</source>
<target state="translated">与刷新令牌关联的授权不再有效.</target>
<note />
</trans-unit>
<trans-unit id="ID3023">
<trans-unit id="ID2023">
<source>The authorization associated with the token is no longer valid.</source>
<target state="translated">与令牌关联的授权不再有效.</target>
<note />
</trans-unit>
<trans-unit id="ID3024">
<trans-unit id="ID2024">
<source>The token request was rejected by the authentication server.</source>
<target state="translated">身份验证服务器拒绝了令牌请求.</target>
<note />
</trans-unit>
<trans-unit id="ID3025">
<trans-unit id="ID2025">
<source>The user information access demand was rejected by the authentication server.</source>
<target state="translated">身份验证服务器拒绝了用户信息访问请求.</target>
<note />
</trans-unit>
<trans-unit id="ID3026">
<trans-unit id="ID2026">
<source>The specified user code is no longer valid.</source>
<target state="translated">指定的用户码不再有效.</target>
<note />
</trans-unit>
<trans-unit id="ID3028">
<trans-unit id="ID2028">
<source>The '{0}' parameter is not supported.</source>
<target state="translated">不支持参数 ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3029">
<trans-unit id="ID2029">
<source>The mandatory '{0}' parameter is missing.</source>
<target state="translated">缺少必需参数 ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3030">
<trans-unit id="ID2030">
<source>The '{0}' parameter must be a valid absolute URL.</source>
<target state="translated">参数 ’{0}’ 必须是有效的绝对路径网址.</target>
<note />
</trans-unit>
<trans-unit id="ID3031">
<trans-unit id="ID2031">
<source>The '{0}' parameter must not include a fragment.</source>
<target state="translated">参数 ‘{0}’ 不能包含 fragment.</target>
<note />
</trans-unit>
<trans-unit id="ID3032">
<trans-unit id="ID2032">
<source>The specified '{0}' is not supported.</source>
<target state="translated">不支持指定的 ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3033">
<trans-unit id="ID2033">
<source>The specified '{0}'/'{1}' combination is invalid.</source>
<target state="translated">指定的 ‘{0}’ / ‘{1}’ 组合无效.</target>
<note />
</trans-unit>
<trans-unit id="ID3034">
<trans-unit id="ID2034">
<source>The mandatory '{0}' scope is missing.</source>
<target state="translated">缺少必需 Scope ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3035">
<trans-unit id="ID2035">
<source>The '{0}' scope is not allowed.</source>
<target state="translated">不允许 Scope ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3036">
<trans-unit id="ID2036">
<source>The client identifier cannot be null or empty.</source>
<target state="translated">客户端 ID 不能为空.</target>
<note />
</trans-unit>
<trans-unit id="ID3037">
<trans-unit id="ID2037">
<source>The '{0}' parameter cannot be used without '{1}'.</source>
<target state="translated">参数 ‘{0}’ 要求 ‘{1}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3038">
<trans-unit id="ID2038">
<source>The status cannot be null or empty.</source>
<target state="translated">状态不能为空.</target>
<note />
</trans-unit>
<trans-unit id="ID3039">
<trans-unit id="ID2039">
<source>Scopes cannot be null or empty.</source>
<target state="translated">Scope 不能为空.</target>
<note />
</trans-unit>
<trans-unit id="ID3040">
<trans-unit id="ID2040">
<source>The '{0}' and '{1}' parameters can only be used with a response type containing '{2}'.</source>
<target state="translated">参数 ‘{0}’ 和 ‘{1}’ 只能在响应类型包含 ‘{2}’ 时使用.</target>
<note />
</trans-unit>
<trans-unit id="ID3041">
<trans-unit id="ID2041">
<source>The specified '{0}' is not allowed when using PKCE.</source>
<target state="translated">使用 PKCE 时不允许指定的 ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3042">
<trans-unit id="ID2042">
<source>Scopes cannot contain spaces.</source>
<target state="translated">Scope 不能包含空格.</target>
<note />
</trans-unit>
<trans-unit id="ID3043">
<trans-unit id="ID2043">
<source>The specified '{0}' is not valid for this client application.</source>
<target state="translated">指定的 ‘{0}’ 对此客户端无效.</target>
<note />
</trans-unit>
<trans-unit id="ID3044">
<trans-unit id="ID2044">
<source>The scope name cannot be null or empty.</source>
<target state="translated">Scope 不能为空.</target>
<note />
</trans-unit>
<trans-unit id="ID3045">
<trans-unit id="ID2045">
<source>The scope name cannot contain spaces.</source>
<target state="translated">Scope 不能包含空格.</target>
<note />
</trans-unit>
<trans-unit id="ID3046">
<trans-unit id="ID2046">
<source>This client application is not allowed to use the authorization endpoint.</source>
<target state="translated">不允许此客户端使用授权端点.</target>
<note />
</trans-unit>
<trans-unit id="ID3047">
<trans-unit id="ID2047">
<source>The client application is not allowed to use the authorization code flow.</source>
<target state="translated">不允许此客户端使用授权代码流程.</target>
<note />
</trans-unit>
<trans-unit id="ID3048">
<trans-unit id="ID2048">
<source>The client application is not allowed to use the implicit flow.</source>
<target state="translated">不允许此客户端使用隐式流程.</target>
<note />
</trans-unit>
<trans-unit id="ID3049">
<trans-unit id="ID2049">
<source>The client application is not allowed to use the hybrid flow.</source>
<target state="translated">不允许此客户端使用混合流程.</target>
<note />
</trans-unit>
<trans-unit id="ID3051">
<trans-unit id="ID2051">
<source>This client application is not allowed to use the specified scope.</source>
<target state="translated">不允许此客户端使用指定的 Scope.</target>
<note />
</trans-unit>
<trans-unit id="ID3052">
<trans-unit id="ID2052">
<source>The specified '{0}' is invalid.</source>
<target state="translated">指定的 ‘{0}’ 无效.</target>
<note />
</trans-unit>
<trans-unit id="ID3053">
<trans-unit id="ID2053">
<source>The '{0}' parameter is not valid for this client application.</source>
<target state="translated">参数 ‘{0}’ 对此客户端无效.</target>
<note />
</trans-unit>
<trans-unit id="ID3054">
<trans-unit id="ID2054">
<source>The '{0}' parameter required for this client application is missing.</source>
<target state="translated">未提供此客户端必需参数 ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3055">
<trans-unit id="ID2055">
<source>The specified client credentials are invalid.</source>
<target state="translated">指定的客户端凭据无效.</target>
<note />
</trans-unit>
<trans-unit id="ID3056">
<trans-unit id="ID2056">
<source>This client application is not allowed to use the device endpoint.</source>
<target state="translated">不允许此客户端使用设备端点.</target>
<note />
</trans-unit>
<trans-unit id="ID3057">
<trans-unit id="ID2057">
<source>The '{0}' and '{1}' parameters are required when using the client credentials grant.</source>
<target state="translated">使用客户端凭据授权时, 必须提供参数 ‘{0}’ 和 ‘{1}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3058">
<trans-unit id="ID2058">
<source>The '{0}' parameter is required when using the device code grant.</source>
<target state="translated">使用设备码授权时, 必须提供参数 ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3059">
<trans-unit id="ID2059">
<source>The mandatory '{0}' and/or '{1}' parameters are missing.</source>
<target state="translated">未提供必需参数 ‘{0}’ 和/或 ‘{1}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3060">
<trans-unit id="ID2060">
<source>A scope with the same name already exists.</source>
<target state="translated">已存在具有相同名称的 Scope.</target>
<note />
</trans-unit>
<trans-unit id="ID3063">
<trans-unit id="ID2063">
<source>This client application is not allowed to use the token endpoint.</source>
<target state="translated">不允许此客户端使用令牌端点.</target>
<note />
</trans-unit>
<trans-unit id="ID3064">
<trans-unit id="ID2064">
<source>This client application is not allowed to use the specified grant type.</source>
<target state="translated">不允许此客户端使用指定的授予类型.</target>
<note />
</trans-unit>
<trans-unit id="ID3065">
<trans-unit id="ID2065">
<source>The client application is not allowed to use the '{0}' scope.</source>
<target state="translated">不允许此客户端使用 Scope ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3066">
<trans-unit id="ID2066">
<source>The specified authorization code cannot be used without sending a client identifier.</source>
<target state="translated">若不发送客户端 ID, 则不能使用指定的授权码.</target>
<note />
</trans-unit>
<trans-unit id="ID3067">
<trans-unit id="ID2067">
<source>The specified device code cannot be used without sending a client identifier.</source>
<target state="translated">若不发送客户端 ID, 则不能使用指定的设备码.</target>
<note />
</trans-unit>
<trans-unit id="ID3068">
<trans-unit id="ID2068">
<source>The specified refresh token cannot be used without sending a client identifier.</source>
<target state="translated">若不发送客户端 ID, 则不能使用指定的刷新令牌.</target>
<note />
</trans-unit>
<trans-unit id="ID3069">
<trans-unit id="ID2069">
<source>The specified authorization code cannot be used by this client application.</source>
<target state="translated">此客户端不能使用指定的授权码.</target>
<note />
</trans-unit>
<trans-unit id="ID3070">
<trans-unit id="ID2070">
<source>The specified device code cannot be used by this client application.</source>
<target state="translated">此客户端不能使用指定的设备码.</target>
<note />
</trans-unit>
<trans-unit id="ID3071">
<trans-unit id="ID2071">
<source>The specified refresh token cannot be used by this client application.</source>
<target state="translated">此客户端不能使用指定的刷新令牌.</target>
<note />
</trans-unit>
<trans-unit id="ID3072">
<trans-unit id="ID2072">
<source>The specified '{0}' parameter doesn't match the client redirection address the authorization code was initially sent to.</source>
<target state="translated">指定的参数 ‘{0}’ 与最初发送的客户端重定向地址不匹配.</target>
<note />
</trans-unit>
<trans-unit id="ID3073">
<trans-unit id="ID2073">
<source>The '{0}' parameter cannot be used when no '{1}' was specified in the authorization request.</source>
<target state="translated">若授权请求中未指定 ‘{1}’, 则不能使用指定的参数 ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3074">
<trans-unit id="ID2074">
<source>The '{0}' parameter is not valid in this context.</source>
<target state="translated">参数 ‘{0}’ 在此上下文中无效.</target>
<note />
</trans-unit>
<trans-unit id="ID3075">
<trans-unit id="ID2075">
<source>This client application is not allowed to use the introspection endpoint.</source>
<target state="translated">不允许此客户端使用自省端点.</target>
<note />
</trans-unit>
<trans-unit id="ID3076">
<trans-unit id="ID2076">
<source>The specified token cannot be introspected.</source>
<target state="translated">指定的令牌不能自省.</target>
<note />
</trans-unit>
<trans-unit id="ID3077">
<trans-unit id="ID2077">
<source>The client application is not allowed to introspect the specified token.</source>
<target state="translated">不允许此客户端自省指定的令牌.</target>
<note />
</trans-unit>
<trans-unit id="ID3078">
<trans-unit id="ID2078">
<source>This client application is not allowed to use the revocation endpoint.</source>
<target state="translated">此客户端不允许使用吊销端点.</target>
<note />
</trans-unit>
<trans-unit id="ID3079">
<trans-unit id="ID2079">
<source>This token cannot be revoked.</source>
<target state="translated">无法吊销此令牌.</target>
<note />
</trans-unit>
<trans-unit id="ID3080">
<trans-unit id="ID2080">
<source>The client application is not allowed to revoke the specified token.</source>
<target state="translated">不允许此客户端吊销指定的令牌.</target>
<note />
</trans-unit>
<trans-unit id="ID3081">
<trans-unit id="ID2081">
<source>The mandatory '{0}' header is missing.</source>
<target state="translated">缺少必需标头 ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3082">
<trans-unit id="ID2082">
<source>The specified '{0}' header is invalid.</source>
<target state="translated">指定的标头 ’{0}’ 无效.</target>
<note />
</trans-unit>
<trans-unit id="ID3083">
<trans-unit id="ID2083">
<source>This server only accepts HTTPS requests.</source>
<target state="translated">此服务器仅接受 HTTPS 请求.</target>
<note />
</trans-unit>
<trans-unit id="ID3084">
<trans-unit id="ID2084">
<source>The specified HTTP method is not valid.</source>
<target state="translated">指定的 HTTP 方法无效.</target>
<note />
</trans-unit>
<trans-unit id="ID3085">
<trans-unit id="ID2085">
<source>A token with the same reference identifier already exists.</source>
<target state="translated">已存在具有相同引用 ID 的令牌.</target>
<note />
</trans-unit>
<trans-unit id="ID3086">
<trans-unit id="ID2086">
<source>The token type cannot be null or empty.</source>
<target state="translated">令牌类型不能为空.</target>
<note />
</trans-unit>
<trans-unit id="ID3087">
<trans-unit id="ID2087">
<source>Multiple client credentials cannot be specified.</source>
<target state="translated">无法指定多个客户端凭据.</target>
<note />
</trans-unit>
<trans-unit id="ID3088">
<trans-unit id="ID2088">
<source>The issuer associated to the specified token is not valid.</source>
<target state="translated">与指定令牌关联的颁发者无效.</target>
<note />
</trans-unit>
<trans-unit id="ID3089">
<trans-unit id="ID2089">
<source>The specified token is not of the expected type.</source>
<target state="translated">指定的令牌不是预期类型.</target>
<note />
</trans-unit>
<trans-unit id="ID3090">
<trans-unit id="ID2090">
<source>The signing key associated to the specified token was not found.</source>
<target state="translated">未找到与指定令牌关联的签名密钥.</target>
<note />
</trans-unit>
<trans-unit id="ID3091">
<trans-unit id="ID2091">
<source>The signature associated to the specified token is not valid.</source>
<target state="translated">与指定令牌关联的签名无效.</target>
<note />
</trans-unit>
<trans-unit id="ID3092">
<trans-unit id="ID2092">
<source>This resource server is currently unavailable.</source>
<target state="translated">此资源服务器当前不可用.</target>
<note />
</trans-unit>
<trans-unit id="ID3093">
<trans-unit id="ID2093">
<source>The specified token doesn't contain any audience.</source>
<target state="translated">指定的令牌不包含任何目标受众.</target>
<note />
</trans-unit>
<trans-unit id="ID3094">
<trans-unit id="ID2094">
<source>The specified token cannot be used with this resource server.</source>
<target state="translated">指定的令牌不能用于此资源服务器.</target>
<note />
</trans-unit>
<trans-unit id="ID3095">
<trans-unit id="ID2095">
<source>The user represented by the token is not allowed to perform the requested action.</source>
<target state="translated">不允许此令牌代表的用户执行请求的操作.</target>
<note />
</trans-unit>
<trans-unit id="ID3096">
<trans-unit id="ID2096">
<source>No issuer could be found in the server configuration.</source>
<target state="translated">在服务器配置中找不到颁发者.</target>
<note />
</trans-unit>
<trans-unit id="ID3097">
<trans-unit id="ID2097">
<source>A server configuration containing an invalid issuer was returned.</source>
<target state="translated">返回了包含无效颁发者的服务器配置.</target>
<note />
</trans-unit>
<trans-unit id="ID3098">
<trans-unit id="ID2098">
<source>The issuer returned in the server configuration is not valid.</source>
<target state="translated">服务器配置中返回的颁发者无效.</target>
<note />
</trans-unit>
<trans-unit id="ID3099">
<trans-unit id="ID2099">
<source>No JWKS endpoint could be found in the server configuration.</source>
<target state="translated">在服务器配置中找不到 JWKS 端点.</target>
<note />
</trans-unit>
<trans-unit id="ID3100">
<trans-unit id="ID2100">
<source>A server configuration containing an invalid JWKS endpoint URL was returned.</source>
<target state="translated">返回了包含无效 JWKS 端点的服务器配置.</target>
<note />
</trans-unit>
<trans-unit id="ID3101">
<trans-unit id="ID2101">
<source>A server configuration containing an invalid introspection endpoint URL was returned.</source>
<target state="translated">返回了包含无效自省端点的服务器配置.</target>
<note />
</trans-unit>
<trans-unit id="ID3102">
<trans-unit id="ID2102">
<source>The JWKS document didn't contain a valid '{0}' node with at least one key.</source>
<target state="translated">JWKS 文档中没有 ‘{0}’ 节点.</target>
<note />
</trans-unit>
<trans-unit id="ID3103">
<trans-unit id="ID2103">
<source>A JWKS response containing an unsupported key was returned.</source>
<target state="translated">返回了包含不受支持的密钥的 JWKS 响应.</target>
<note />
</trans-unit>
<trans-unit id="ID3104">
<trans-unit id="ID2104">
<source>A JWKS response containing an invalid key was returned.</source>
<target state="translated">返回了包含无效密钥的 JWKS 响应.</target>
<note />
</trans-unit>
<trans-unit id="ID3105">
<trans-unit id="ID2105">
<source>The mandatory '{0}' parameter couldn't be found in the introspection response.</source>
<target state="translated">自省响应中找不到必需参数 ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3106">
<trans-unit id="ID2106">
<source>The token was rejected by the remote authentication server.</source>
<target state="translated">令牌被远程身份验证服务器拒绝.</target>
<note />
</trans-unit>
<trans-unit id="ID3107">
<trans-unit id="ID2107">
<source>The '{0}' claim is malformed or isn't of the expected type.</source>
<target state="translated">Claim ‘{0}’ 格式错误或不是预期类型.</target>
<note />
</trans-unit>
<trans-unit id="ID3108">
<trans-unit id="ID2108">
<source>An introspection response containing a malformed issuer was returned.</source>
<target state="translated">返回了包含错误格式颁发者的自省响应.</target>
<note />
</trans-unit>
<trans-unit id="ID3109">
<trans-unit id="ID2109">
<source>The issuer returned in the introspection response is not valid.</source>
<target state="translated">自省响应返回的颁发者无效.</target>
<note />
</trans-unit>
<trans-unit id="ID3110">
<trans-unit id="ID2110">
<source>The type of the introspected token doesn't match the expected type.</source>
<target state="translated">自省令牌的类型与预期类型不匹配.</target>
<note />
</trans-unit>
<trans-unit id="ID3111">
<trans-unit id="ID2111">
<source>An application with the same client identifier already exists.</source>
<target state="translated">已存在具有相同客户端 ID 的应用程序.</target>
<note />
</trans-unit>
<trans-unit id="ID3112">
<trans-unit id="ID2112">
<source>Only confidential, hybrid or public applications are supported by the default application manager.</source>
<target state="translated">默认应用程序管理器仅支持机密、混合或公共应用程序.</target>
<note />
</trans-unit>
<trans-unit id="ID3113">
<trans-unit id="ID2113">
<source>The client secret cannot be null or empty for a confidential application.</source>
<target state="translated">对于机密应用程序, 客户端密钥不能为空.</target>
<note />
</trans-unit>
<trans-unit id="ID3114">
<trans-unit id="ID2114">
<source>A client secret cannot be associated with a public application.</source>
<target state="translated">客户端密钥不能与公共应用程序关联.</target>
<note />
</trans-unit>
<trans-unit id="ID3115">
<trans-unit id="ID2115">
<source>Callback URLs cannot contain a fragment.</source>
<target state="translated">回调网址不能包含 fragment.</target>
<note />
</trans-unit>
<trans-unit id="ID3116">
<trans-unit id="ID2116">
<source>The authorization type cannot be null or empty.</source>
<target state="translated">授权类型不能为空.</target>
<note />
</trans-unit>
<trans-unit id="ID3117">
<trans-unit id="ID2117">
<source>The specified authorization type is not supported by the default token manager.</source>
<target state="translated">默认令牌管理器不支持指定的授权类型.</target>
<note />
</trans-unit>
<trans-unit id="ID3118">
<trans-unit id="ID2118">
<source>The client type cannot be null or empty.</source>
<target state="translated">客户端类型不能为空.</target>
<note />
</trans-unit>
<trans-unit id="ID3119">
<trans-unit id="ID2119">
<source>Callback URLs cannot be null or empty.</source>
<target state="translated">回调网址不能为空.</target>
<note />
</trans-unit>
<trans-unit id="ID3120">
<trans-unit id="ID2120">
<source>Callback URLs must be valid absolute URLs.</source>
<target state="translated">回调网址必须是有效的绝对路径网址.</target>
<note />
</trans-unit>
<trans-unit id="ID9000">
<trans-unit id="ID8000">
<source>Removes orphaned tokens and authorizations from the database.</source>
<target state="translated">从数据库中删除孤立的令牌和授权.</target>
<note />
</trans-unit>
<trans-unit id="ID9001">
<trans-unit id="ID8001">
<source>Starts the scheduled task at regular intervals.</source>
<target state="translated">定期启动计划的任务.</target>
<note />

238
src/OpenIddict.Abstractions/Resources/xlf/OpenIddictResources.zh-Hant.xlf

@ -2,597 +2,597 @@
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.2" xsi:schemaLocation="urn:oasis:names:tc:xliff:document:1.2 xliff-core-1.2-transitional.xsd">
<file datatype="xml" source-language="en" target-language="zh-Hant" original="../OpenIddictResources.resx">
<body>
<trans-unit id="ID3000">
<trans-unit id="ID2000">
<source>The security token is missing.</source>
<target state="translated">缺少安全權杖.</target>
<note />
</trans-unit>
<trans-unit id="ID3001">
<trans-unit id="ID2001">
<source>The specified authorization code is invalid.</source>
<target state="translated">指定的授權代碼無效.</target>
<note />
</trans-unit>
<trans-unit id="ID3002">
<trans-unit id="ID2002">
<source>The specified device code is invalid.</source>
<target state="translated">指定的裝置代碼無效.</target>
<note />
</trans-unit>
<trans-unit id="ID3003">
<trans-unit id="ID2003">
<source>The specified refresh token is invalid.</source>
<target state="translated">指定的重新整理權杖無效.</target>
<note />
</trans-unit>
<trans-unit id="ID3004">
<trans-unit id="ID2004">
<source>The specified token is invalid.</source>
<target state="translated">指定的權杖无效.</target>
<note />
</trans-unit>
<trans-unit id="ID3005">
<trans-unit id="ID2005">
<source>The specified token is not an authorization code.</source>
<target state="translated">指定的權杖不是授權代碼.</target>
<note />
</trans-unit>
<trans-unit id="ID3006">
<trans-unit id="ID2006">
<source>The specified token is not an device code.</source>
<target state="translated">指定的權杖不是裝置代碼.</target>
<note />
</trans-unit>
<trans-unit id="ID3007">
<trans-unit id="ID2007">
<source>The specified token is not a refresh token.</source>
<target state="translated">指定的權杖不是重新整理權杖.</target>
<note />
</trans-unit>
<trans-unit id="ID3008">
<trans-unit id="ID2008">
<source>The specified token is not an access token.</source>
<target state="translated">指定的權杖不是存取權杖.</target>
<note />
</trans-unit>
<trans-unit id="ID3009">
<trans-unit id="ID2009">
<source>The specified identity token is invalid.</source>
<target state="translated">指定的識別碼權杖無效.</target>
<note />
</trans-unit>
<trans-unit id="ID3010">
<trans-unit id="ID2010">
<source>The specified authorization code has already been redeemed.</source>
<target state="translated">指定的授權代碼已兌換.</target>
<note />
</trans-unit>
<trans-unit id="ID3011">
<trans-unit id="ID2011">
<source>The specified device code has already been redeemed.</source>
<target state="translated">指定的设备代碼已兌換.</target>
<note />
</trans-unit>
<trans-unit id="ID3012">
<trans-unit id="ID2012">
<source>The specified refresh token has already been redeemed.</source>
<target state="translated">指定的重新整理權杖已兌換.</target>
<note />
</trans-unit>
<trans-unit id="ID3013">
<trans-unit id="ID2013">
<source>The specified token has already been redeemed.</source>
<target state="translated">指定的權杖已兌換.</target>
<note />
</trans-unit>
<trans-unit id="ID3014">
<trans-unit id="ID2014">
<source>The authorization has not been granted yet by the end user.</source>
<target state="translated">使用者尚未批准授權.</target>
<note />
</trans-unit>
<trans-unit id="ID3015">
<trans-unit id="ID2015">
<source>The authorization was denied by the end user.</source>
<target state="translated">使用者拒絕授權.</target>
<note />
</trans-unit>
<trans-unit id="ID3016">
<trans-unit id="ID2016">
<source>The specified authorization code is no longer valid.</source>
<target state="translated">指定的授權代碼不再有效.</target>
<note />
</trans-unit>
<trans-unit id="ID3017">
<trans-unit id="ID2017">
<source>The specified device code is no longer valid.</source>
<target state="translated">指定的裝置代碼不再有效.</target>
<note />
</trans-unit>
<trans-unit id="ID3018">
<trans-unit id="ID2018">
<source>The specified refresh token is no longer valid.</source>
<target state="translated">指定的重新整理權杖不再有效.</target>
<note />
</trans-unit>
<trans-unit id="ID3019">
<trans-unit id="ID2019">
<source>The specified token is no longer valid.</source>
<target state="translated">指定的權杖不再有效.</target>
<note />
</trans-unit>
<trans-unit id="ID3020">
<trans-unit id="ID2020">
<source>The authorization associated with the authorization code is no longer valid.</source>
<target state="translated">與授權代碼關聯的授權不再有效.</target>
<note />
</trans-unit>
<trans-unit id="ID3021">
<trans-unit id="ID2021">
<source>The authorization associated with the device code is no longer valid.</source>
<target state="translated">與裝置代碼關聯的授權不再有效.</target>
<note />
</trans-unit>
<trans-unit id="ID3022">
<trans-unit id="ID2022">
<source>The authorization associated with the refresh token is no longer valid.</source>
<target state="translated">與重新整理權杖關聯的授權不再有效.</target>
<note />
</trans-unit>
<trans-unit id="ID3023">
<trans-unit id="ID2023">
<source>The authorization associated with the token is no longer valid.</source>
<target state="translated">與權杖關聯的授權不再有效.</target>
<note />
</trans-unit>
<trans-unit id="ID3024">
<trans-unit id="ID2024">
<source>The token request was rejected by the authentication server.</source>
<target state="translated">身份驗證伺服器拒絕了權杖請求.</target>
<note />
</trans-unit>
<trans-unit id="ID3025">
<trans-unit id="ID2025">
<source>The user information access demand was rejected by the authentication server.</source>
<target state="translated">身份驗證伺服器拒絕了使用者資訊存取請求.</target>
<note />
</trans-unit>
<trans-unit id="ID3026">
<trans-unit id="ID2026">
<source>The specified user code is no longer valid.</source>
<target state="translated">指定的使用者代碼不再有效.</target>
<note />
</trans-unit>
<trans-unit id="ID3028">
<trans-unit id="ID2028">
<source>The '{0}' parameter is not supported.</source>
<target state="translated">不支援引數 ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3029">
<trans-unit id="ID2029">
<source>The mandatory '{0}' parameter is missing.</source>
<target state="translated">缺少必要引數 ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3030">
<trans-unit id="ID2030">
<source>The '{0}' parameter must be a valid absolute URL.</source>
<target state="translated">引數 ’{0}’ 必須是有效的絕對路徑網址.</target>
<note />
</trans-unit>
<trans-unit id="ID3031">
<trans-unit id="ID2031">
<source>The '{0}' parameter must not include a fragment.</source>
<target state="translated">引數 ‘{0}’ 不能包含 fragment.</target>
<note />
</trans-unit>
<trans-unit id="ID3032">
<trans-unit id="ID2032">
<source>The specified '{0}' is not supported.</source>
<target state="translated">不支援指定的 ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3033">
<trans-unit id="ID2033">
<source>The specified '{0}'/'{1}' combination is invalid.</source>
<target state="translated">指定的 ‘{0}’ / ‘{1}’ 組合無效.</target>
<note />
</trans-unit>
<trans-unit id="ID3034">
<trans-unit id="ID2034">
<source>The mandatory '{0}' scope is missing.</source>
<target state="translated">缺少必要 Scope ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3035">
<trans-unit id="ID2035">
<source>The '{0}' scope is not allowed.</source>
<target state="translated">不允許 Scope ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3036">
<trans-unit id="ID2036">
<source>The client identifier cannot be null or empty.</source>
<target state="translated">消費者金鑰不能為空.</target>
<note />
</trans-unit>
<trans-unit id="ID3037">
<trans-unit id="ID2037">
<source>The '{0}' parameter cannot be used without '{1}'.</source>
<target state="translated">引數 ‘{0}’ 要求 ‘{1}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3038">
<trans-unit id="ID2038">
<source>The status cannot be null or empty.</source>
<target state="translated">狀態不能為空.</target>
<note />
</trans-unit>
<trans-unit id="ID3039">
<trans-unit id="ID2039">
<source>Scopes cannot be null or empty.</source>
<target state="translated">Scope 不能為空.</target>
<note />
</trans-unit>
<trans-unit id="ID3040">
<trans-unit id="ID2040">
<source>The '{0}' and '{1}' parameters can only be used with a response type containing '{2}'.</source>
<target state="translated">引數 ‘{0}’ 和 ‘{1}’ 只能在響應型別包含 ‘{2}’ 時使用.</target>
<note />
</trans-unit>
<trans-unit id="ID3041">
<trans-unit id="ID2041">
<source>The specified '{0}' is not allowed when using PKCE.</source>
<target state="translated">使用 PKCE 時不允許指定的 ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3042">
<trans-unit id="ID2042">
<source>Scopes cannot contain spaces.</source>
<target state="translated">Scope 不能包含空格.</target>
<note />
</trans-unit>
<trans-unit id="ID3043">
<trans-unit id="ID2043">
<source>The specified '{0}' is not valid for this client application.</source>
<target state="translated">指定的 ‘{0}’ 對此連線應用程式無效.</target>
<note />
</trans-unit>
<trans-unit id="ID3044">
<trans-unit id="ID2044">
<source>The scope name cannot be null or empty.</source>
<target state="translated">Scope 不能為空.</target>
<note />
</trans-unit>
<trans-unit id="ID3045">
<trans-unit id="ID2045">
<source>The scope name cannot contain spaces.</source>
<target state="translated">Scope 不能包含空格.</target>
<note />
</trans-unit>
<trans-unit id="ID3046">
<trans-unit id="ID2046">
<source>This client application is not allowed to use the authorization endpoint.</source>
<target state="translated">不允許此連線應用程式使用授權端點.</target>
<note />
</trans-unit>
<trans-unit id="ID3047">
<trans-unit id="ID2047">
<source>The client application is not allowed to use the authorization code flow.</source>
<target state="translated">不允許此連線應用程式使用授權代碼流程.</target>
<note />
</trans-unit>
<trans-unit id="ID3048">
<trans-unit id="ID2048">
<source>The client application is not allowed to use the implicit flow.</source>
<target state="translated">不允許此連線應用程式使用隱式流程.</target>
<note />
</trans-unit>
<trans-unit id="ID3049">
<trans-unit id="ID2049">
<source>The client application is not allowed to use the hybrid flow.</source>
<target state="translated">不允許此連線應用程式使用混合流程.</target>
<note />
</trans-unit>
<trans-unit id="ID3051">
<trans-unit id="ID2051">
<source>This client application is not allowed to use the specified scope.</source>
<target state="translated">不允許此連線應用程式使用指定的 Scope.</target>
<note />
</trans-unit>
<trans-unit id="ID3052">
<trans-unit id="ID2052">
<source>The specified '{0}' is invalid.</source>
<target state="translated">指定的 ‘{0}’ 無效.</target>
<note />
</trans-unit>
<trans-unit id="ID3053">
<trans-unit id="ID2053">
<source>The '{0}' parameter is not valid for this client application.</source>
<target state="translated">引數 ‘{0}’ 對此連線應用程式無效.</target>
<note />
</trans-unit>
<trans-unit id="ID3054">
<trans-unit id="ID2054">
<source>The '{0}' parameter required for this client application is missing.</source>
<target state="translated">未提供此連線應用程式必要引數 ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3055">
<trans-unit id="ID2055">
<source>The specified client credentials are invalid.</source>
<target state="translated">指定的連線應用程式機密無效.</target>
<note />
</trans-unit>
<trans-unit id="ID3056">
<trans-unit id="ID2056">
<source>This client application is not allowed to use the device endpoint.</source>
<target state="translated">不允許此連線應用程式使用裝置端點.</target>
<note />
</trans-unit>
<trans-unit id="ID3057">
<trans-unit id="ID2057">
<source>The '{0}' and '{1}' parameters are required when using the client credentials grant.</source>
<target state="translated">使用連線應用程式機密授權時, 必須提供引數 ‘{0}’ 和 ‘{1}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3058">
<trans-unit id="ID2058">
<source>The '{0}' parameter is required when using the device code grant.</source>
<target state="translated">使用裝置代碼授權時, 必須提供引數 ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3059">
<trans-unit id="ID2059">
<source>The mandatory '{0}' and/or '{1}' parameters are missing.</source>
<target state="translated">未提供必要引數 ‘{0}’ 和/或 ‘{1}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3060">
<trans-unit id="ID2060">
<source>A scope with the same name already exists.</source>
<target state="translated">已存在具有相同名稱的 Scope.</target>
<note />
</trans-unit>
<trans-unit id="ID3063">
<trans-unit id="ID2063">
<source>This client application is not allowed to use the token endpoint.</source>
<target state="translated">不允許此連線應用程式使用權杖端點.</target>
<note />
</trans-unit>
<trans-unit id="ID3064">
<trans-unit id="ID2064">
<source>This client application is not allowed to use the specified grant type.</source>
<target state="translated">不允許此連線應用程式使用指定的驗證類型.</target>
<note />
</trans-unit>
<trans-unit id="ID3065">
<trans-unit id="ID2065">
<source>The client application is not allowed to use the '{0}' scope.</source>
<target state="translated">不允許此連線應用程式使用 Scope ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3066">
<trans-unit id="ID2066">
<source>The specified authorization code cannot be used without sending a client identifier.</source>
<target state="translated">若不傳送連線應用程式 ID, 則不能使用指定的授權代碼.</target>
<note />
</trans-unit>
<trans-unit id="ID3067">
<trans-unit id="ID2067">
<source>The specified device code cannot be used without sending a client identifier.</source>
<target state="translated">若不傳送連線應用程式 ID, 則不能使用指定的裝置代碼.</target>
<note />
</trans-unit>
<trans-unit id="ID3068">
<trans-unit id="ID2068">
<source>The specified refresh token cannot be used without sending a client identifier.</source>
<target state="translated">若不傳送連線應用程式 ID, 則不能使用指定的重新整理權杖.</target>
<note />
</trans-unit>
<trans-unit id="ID3069">
<trans-unit id="ID2069">
<source>The specified authorization code cannot be used by this client application.</source>
<target state="translated">此連線應用程式不能使用指定的授權代碼.</target>
<note />
</trans-unit>
<trans-unit id="ID3070">
<trans-unit id="ID2070">
<source>The specified device code cannot be used by this client application.</source>
<target state="translated">此連線應用程式不能使用指定的裝置代碼.</target>
<note />
</trans-unit>
<trans-unit id="ID3071">
<trans-unit id="ID2071">
<source>The specified refresh token cannot be used by this client application.</source>
<target state="translated">此連線應用程式不能使用指定的重新整理權杖.</target>
<note />
</trans-unit>
<trans-unit id="ID3072">
<trans-unit id="ID2072">
<source>The specified '{0}' parameter doesn't match the client redirection address the authorization code was initially sent to.</source>
<target state="translated">指定的引數 ‘{0}’ 與最初發送的連線應用程式重新導向位址不匹配.</target>
<note />
</trans-unit>
<trans-unit id="ID3073">
<trans-unit id="ID2073">
<source>The '{0}' parameter cannot be used when no '{1}' was specified in the authorization request.</source>
<target state="translated">若授權請求中未指定 ‘{1}’, 則不能使用指定的引數 ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3074">
<trans-unit id="ID2074">
<source>The '{0}' parameter is not valid in this context.</source>
<target state="translated">引數 ‘{0}’ 在此語境中無效.</target>
<note />
</trans-unit>
<trans-unit id="ID3075">
<trans-unit id="ID2075">
<source>This client application is not allowed to use the introspection endpoint.</source>
<target state="translated">不允許此連線應用程式使用自省端點.</target>
<note />
</trans-unit>
<trans-unit id="ID3076">
<trans-unit id="ID2076">
<source>The specified token cannot be introspected.</source>
<target state="translated">指定的權杖不能自省.</target>
<note />
</trans-unit>
<trans-unit id="ID3077">
<trans-unit id="ID2077">
<source>The client application is not allowed to introspect the specified token.</source>
<target state="translated">不允許此連線應用程式自省指定的權杖.</target>
<note />
</trans-unit>
<trans-unit id="ID3078">
<trans-unit id="ID2078">
<source>This client application is not allowed to use the revocation endpoint.</source>
<target state="translated">此連線應用程式不允許使用吊銷端點.</target>
<note />
</trans-unit>
<trans-unit id="ID3079">
<trans-unit id="ID2079">
<source>This token cannot be revoked.</source>
<target state="translated">無法吊銷此權杖.</target>
<note />
</trans-unit>
<trans-unit id="ID3080">
<trans-unit id="ID2080">
<source>The client application is not allowed to revoke the specified token.</source>
<target state="translated">不允許此連線應用程式吊銷指定的權杖.</target>
<note />
</trans-unit>
<trans-unit id="ID3081">
<trans-unit id="ID2081">
<source>The mandatory '{0}' header is missing.</source>
<target state="translated">缺少必要標頭 ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3082">
<trans-unit id="ID2082">
<source>The specified '{0}' header is invalid.</source>
<target state="translated">指定的標頭 ’{0}’ 無效.</target>
<note />
</trans-unit>
<trans-unit id="ID3083">
<trans-unit id="ID2083">
<source>This server only accepts HTTPS requests.</source>
<target state="translated">此伺服器僅接受 HTTPS 請求.</target>
<note />
</trans-unit>
<trans-unit id="ID3084">
<trans-unit id="ID2084">
<source>The specified HTTP method is not valid.</source>
<target state="translated">指定的 HTTP 方法無效.</target>
<note />
</trans-unit>
<trans-unit id="ID3085">
<trans-unit id="ID2085">
<source>A token with the same reference identifier already exists.</source>
<target state="translated">已存在具有相同引用 ID 的權杖.</target>
<note />
</trans-unit>
<trans-unit id="ID3086">
<trans-unit id="ID2086">
<source>The token type cannot be null or empty.</source>
<target state="translated">權杖型別不能為空.</target>
<note />
</trans-unit>
<trans-unit id="ID3087">
<trans-unit id="ID2087">
<source>Multiple client credentials cannot be specified.</source>
<target state="translated">無法指定多個連線應用程式機密.</target>
<note />
</trans-unit>
<trans-unit id="ID3088">
<trans-unit id="ID2088">
<source>The issuer associated to the specified token is not valid.</source>
<target state="translated">與指定權杖關聯的頒發者無效.</target>
<note />
</trans-unit>
<trans-unit id="ID3089">
<trans-unit id="ID2089">
<source>The specified token is not of the expected type.</source>
<target state="translated">指定的權杖不是預期型別.</target>
<note />
</trans-unit>
<trans-unit id="ID3090">
<trans-unit id="ID2090">
<source>The signing key associated to the specified token was not found.</source>
<target state="translated">未找到與指定權杖關聯的簽名金鑰.</target>
<note />
</trans-unit>
<trans-unit id="ID3091">
<trans-unit id="ID2091">
<source>The signature associated to the specified token is not valid.</source>
<target state="translated">與指定權杖關聯的簽名無效.</target>
<note />
</trans-unit>
<trans-unit id="ID3092">
<trans-unit id="ID2092">
<source>This resource server is currently unavailable.</source>
<target state="translated">此資源伺服器當前不可用.</target>
<note />
</trans-unit>
<trans-unit id="ID3093">
<trans-unit id="ID2093">
<source>The specified token doesn't contain any audience.</source>
<target state="translated">指定的權杖不包含任何目標受眾.</target>
<note />
</trans-unit>
<trans-unit id="ID3094">
<trans-unit id="ID2094">
<source>The specified token cannot be used with this resource server.</source>
<target state="translated">指定的權杖不能用於此資源伺服器.</target>
<note />
</trans-unit>
<trans-unit id="ID3095">
<trans-unit id="ID2095">
<source>The user represented by the token is not allowed to perform the requested action.</source>
<target state="translated">不允許此權杖代表的使用者執行請求的操作.</target>
<note />
</trans-unit>
<trans-unit id="ID3096">
<trans-unit id="ID2096">
<source>No issuer could be found in the server configuration.</source>
<target state="translated">在伺服器配置中找不到頒發者.</target>
<note />
</trans-unit>
<trans-unit id="ID3097">
<trans-unit id="ID2097">
<source>A server configuration containing an invalid issuer was returned.</source>
<target state="translated">返回了包含無效頒發者的伺服器配置.</target>
<note />
</trans-unit>
<trans-unit id="ID3098">
<trans-unit id="ID2098">
<source>The issuer returned in the server configuration is not valid.</source>
<target state="translated">伺服器配置中返回的頒發者無效.</target>
<note />
</trans-unit>
<trans-unit id="ID3099">
<trans-unit id="ID2099">
<source>No JWKS endpoint could be found in the server configuration.</source>
<target state="translated">在伺服器配置中找不到 JWKS 端點.</target>
<note />
</trans-unit>
<trans-unit id="ID3100">
<trans-unit id="ID2100">
<source>A server configuration containing an invalid JWKS endpoint URL was returned.</source>
<target state="translated">返回了包含無效 JWKS 端點的伺服器配置.</target>
<note />
</trans-unit>
<trans-unit id="ID3101">
<trans-unit id="ID2101">
<source>A server configuration containing an invalid introspection endpoint URL was returned.</source>
<target state="translated">返回了包含無效自省端點的伺服器配置.</target>
<note />
</trans-unit>
<trans-unit id="ID3102">
<trans-unit id="ID2102">
<source>The JWKS document didn't contain a valid '{0}' node with at least one key.</source>
<target state="translated">JWKS 文件中沒有 ‘{0}’ 節點.</target>
<note />
</trans-unit>
<trans-unit id="ID3103">
<trans-unit id="ID2103">
<source>A JWKS response containing an unsupported key was returned.</source>
<target state="translated">返回了包含不受支援的金鑰的 JWKS 響應.</target>
<note />
</trans-unit>
<trans-unit id="ID3104">
<trans-unit id="ID2104">
<source>A JWKS response containing an invalid key was returned.</source>
<target state="translated">返回了包含無效金鑰的 JWKS 響應.</target>
<note />
</trans-unit>
<trans-unit id="ID3105">
<trans-unit id="ID2105">
<source>The mandatory '{0}' parameter couldn't be found in the introspection response.</source>
<target state="translated">自省響應中找不到必要引數 ‘{0}’.</target>
<note />
</trans-unit>
<trans-unit id="ID3106">
<trans-unit id="ID2106">
<source>The token was rejected by the remote authentication server.</source>
<target state="translated">權杖被遠端身份驗證伺服器拒絕.</target>
<note />
</trans-unit>
<trans-unit id="ID3107">
<trans-unit id="ID2107">
<source>The '{0}' claim is malformed or isn't of the expected type.</source>
<target state="translated">Claim ‘{0}’ 格式錯誤或不是預期型別.</target>
<note />
</trans-unit>
<trans-unit id="ID3108">
<trans-unit id="ID2108">
<source>An introspection response containing a malformed issuer was returned.</source>
<target state="translated">返回了包含錯誤格式頒發者的自省響應.</target>
<note />
</trans-unit>
<trans-unit id="ID3109">
<trans-unit id="ID2109">
<source>The issuer returned in the introspection response is not valid.</source>
<target state="translated">自省響應返回的頒發者無效.</target>
<note />
</trans-unit>
<trans-unit id="ID3110">
<trans-unit id="ID2110">
<source>The type of the introspected token doesn't match the expected type.</source>
<target state="translated">自省權杖的型別與預期型別不匹配.</target>
<note />
</trans-unit>
<trans-unit id="ID3111">
<trans-unit id="ID2111">
<source>An application with the same client identifier already exists.</source>
<target state="translated">已存在具有相同消費者金鑰的應用程式.</target>
<note />
</trans-unit>
<trans-unit id="ID3112">
<trans-unit id="ID2112">
<source>Only confidential, hybrid or public applications are supported by the default application manager.</source>
<target state="translated">預設應用程式管理器僅支援機密、混合或公共應用程式.</target>
<note />
</trans-unit>
<trans-unit id="ID3113">
<trans-unit id="ID2113">
<source>The client secret cannot be null or empty for a confidential application.</source>
<target state="translated">對於機密應用程式, 連線應用程式金鑰不能為空.</target>
<note />
</trans-unit>
<trans-unit id="ID3114">
<trans-unit id="ID2114">
<source>A client secret cannot be associated with a public application.</source>
<target state="translated">連線應用程式金鑰不能與公共應用程式關聯.</target>
<note />
</trans-unit>
<trans-unit id="ID3115">
<trans-unit id="ID2115">
<source>Callback URLs cannot contain a fragment.</source>
<target state="translated">重新導向位址不能包含 fragment.</target>
<note />
</trans-unit>
<trans-unit id="ID3116">
<trans-unit id="ID2116">
<source>The authorization type cannot be null or empty.</source>
<target state="translated">授權型別不能為空.</target>
<note />
</trans-unit>
<trans-unit id="ID3117">
<trans-unit id="ID2117">
<source>The specified authorization type is not supported by the default token manager.</source>
<target state="translated">預設權杖管理器不支援指定的授權型別.</target>
<note />
</trans-unit>
<trans-unit id="ID3118">
<trans-unit id="ID2118">
<source>The client type cannot be null or empty.</source>
<target state="translated">連線應用程式型別不能為空.</target>
<note />
</trans-unit>
<trans-unit id="ID3119">
<trans-unit id="ID2119">
<source>Callback URLs cannot be null or empty.</source>
<target state="translated">重新導向位址不能為空.</target>
<note />
</trans-unit>
<trans-unit id="ID3120">
<trans-unit id="ID2120">
<source>Callback URLs must be valid absolute URLs.</source>
<target state="translated">重新導向位址必須是有效的絕對路徑網址.</target>
<note />
</trans-unit>
<trans-unit id="ID9000">
<trans-unit id="ID8000">
<source>Removes orphaned tokens and authorizations from the database.</source>
<target state="translated">從資料庫中刪除孤立的權杖和授權.</target>
<note />
</trans-unit>
<trans-unit id="ID9001">
<trans-unit id="ID8001">
<source>Starts the scheduled task at regular intervals.</source>
<target state="translated">定期啟動計劃的任務.</target>
<note />

16
src/OpenIddict.Core/Caches/OpenIddictApplicationCache.cs

@ -109,7 +109,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var parameters = new
@ -143,7 +143,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var parameters = new
@ -177,7 +177,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(address))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1142), nameof(address));
throw new ArgumentException(SR.GetResourceString(SR.ID0143), nameof(address));
}
return ExecuteAsync(cancellationToken);
@ -218,7 +218,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(address))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1142), nameof(address));
throw new ArgumentException(SR.GetResourceString(SR.ID0143), nameof(address));
}
return ExecuteAsync(cancellationToken);
@ -265,7 +265,7 @@ namespace OpenIddict.Core
var identifier = await _store.GetIdAsync(application, cancellationToken);
if (string.IsNullOrEmpty(identifier))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1195));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0196));
}
if (_signals.TryRemove(identifier, out CancellationTokenSource? signal))
@ -296,7 +296,7 @@ namespace OpenIddict.Core
var signal = await CreateExpirationSignalAsync(application, cancellationToken);
if (signal is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1196));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0197));
}
entry.AddExpirationToken(signal);
@ -328,7 +328,7 @@ namespace OpenIddict.Core
var signal = await CreateExpirationSignalAsync(application, cancellationToken);
if (signal is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1196));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0197));
}
entry.AddExpirationToken(signal);
@ -359,7 +359,7 @@ namespace OpenIddict.Core
var identifier = await _store.GetIdAsync(application, cancellationToken);
if (string.IsNullOrEmpty(identifier))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1195));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0196));
}
var signal = _signals.GetOrAdd(identifier, _ => new CancellationTokenSource());

40
src/OpenIddict.Core/Caches/OpenIddictAuthorizationCache.cs

@ -115,12 +115,12 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
return ExecuteAsync(cancellationToken);
@ -164,17 +164,17 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
return ExecuteAsync(cancellationToken);
@ -219,22 +219,22 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1199), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0200), nameof(type));
}
return ExecuteAsync(cancellationToken);
@ -281,22 +281,22 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1199), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0200), nameof(type));
}
// Note: this method is only partially cached.
@ -319,7 +319,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
return ExecuteAsync(cancellationToken);
@ -360,7 +360,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var parameters = new
@ -394,7 +394,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
return ExecuteAsync(cancellationToken);
@ -441,7 +441,7 @@ namespace OpenIddict.Core
var identifier = await _store.GetIdAsync(authorization, cancellationToken);
if (string.IsNullOrEmpty(identifier))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1195));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0196));
}
if (_signals.TryRemove(identifier, out CancellationTokenSource? signal))
@ -472,7 +472,7 @@ namespace OpenIddict.Core
var signal = await CreateExpirationSignalAsync(authorization, cancellationToken);
if (signal is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1196));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0197));
}
entry.AddExpirationToken(signal);
@ -504,7 +504,7 @@ namespace OpenIddict.Core
var signal = await CreateExpirationSignalAsync(authorization, cancellationToken);
if (signal is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1196));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0197));
}
entry.AddExpirationToken(signal);
@ -535,7 +535,7 @@ namespace OpenIddict.Core
var identifier = await _store.GetIdAsync(authorization, cancellationToken);
if (string.IsNullOrEmpty(identifier))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1200));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0201));
}
var signal = _signals.GetOrAdd(identifier, _ => new CancellationTokenSource());

16
src/OpenIddict.Core/Caches/OpenIddictScopeCache.cs

@ -101,7 +101,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var parameters = new
@ -135,7 +135,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1201), nameof(name));
throw new ArgumentException(SR.GetResourceString(SR.ID0202), nameof(name));
}
var parameters = new
@ -169,7 +169,7 @@ namespace OpenIddict.Core
{
if (names.Any(name => string.IsNullOrEmpty(name)))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1202), nameof(names));
throw new ArgumentException(SR.GetResourceString(SR.ID0203), nameof(names));
}
// Note: this method is only partially cached.
@ -192,7 +192,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(resource))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1061), nameof(resource));
throw new ArgumentException(SR.GetResourceString(SR.ID0062), nameof(resource));
}
return ExecuteAsync(cancellationToken);
@ -239,7 +239,7 @@ namespace OpenIddict.Core
var identifier = await _store.GetIdAsync(scope, cancellationToken);
if (string.IsNullOrEmpty(identifier))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1195));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0196));
}
if (_signals.TryRemove(identifier, out CancellationTokenSource? signal))
@ -270,7 +270,7 @@ namespace OpenIddict.Core
var signal = await CreateExpirationSignalAsync(scope, cancellationToken);
if (signal is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1196));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0197));
}
entry.AddExpirationToken(signal);
@ -302,7 +302,7 @@ namespace OpenIddict.Core
var signal = await CreateExpirationSignalAsync(scope, cancellationToken);
if (signal is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1196));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0197));
}
entry.AddExpirationToken(signal);
@ -332,7 +332,7 @@ namespace OpenIddict.Core
var identifier = await _store.GetIdAsync(scope, cancellationToken);
if (string.IsNullOrEmpty(identifier))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1203));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0204));
}
var signal = _signals.GetOrAdd(identifier, _ => new CancellationTokenSource());

36
src/OpenIddict.Core/Caches/OpenIddictTokenCache.cs

@ -133,12 +133,12 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
return ExecuteAsync(cancellationToken);
@ -182,17 +182,17 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
return ExecuteAsync(cancellationToken);
@ -237,22 +237,22 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1199), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0200), nameof(type));
}
return ExecuteAsync(cancellationToken);
@ -296,7 +296,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
return ExecuteAsync(cancellationToken);
@ -337,7 +337,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
return ExecuteAsync(cancellationToken);
@ -378,7 +378,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var parameters = new
@ -412,7 +412,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var parameters = new
@ -446,7 +446,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
return ExecuteAsync(cancellationToken);
@ -493,7 +493,7 @@ namespace OpenIddict.Core
var identifier = await _store.GetIdAsync(token, cancellationToken);
if (string.IsNullOrEmpty(identifier))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1204));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0205));
}
if (_signals.TryRemove(identifier, out CancellationTokenSource? signal))
@ -524,7 +524,7 @@ namespace OpenIddict.Core
var signal = await CreateExpirationSignalAsync(token, cancellationToken);
if (signal is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1196));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0197));
}
entry.AddExpirationToken(signal);
@ -556,7 +556,7 @@ namespace OpenIddict.Core
var signal = await CreateExpirationSignalAsync(token, cancellationToken);
if (signal is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1196));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0197));
}
entry.AddExpirationToken(signal);
@ -586,7 +586,7 @@ namespace OpenIddict.Core
var identifier = await _store.GetIdAsync(token, cancellationToken);
if (string.IsNullOrEmpty(identifier))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1204));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0205));
}
var signal = _signals.GetOrAdd(identifier, _ => new CancellationTokenSource());

76
src/OpenIddict.Core/Managers/OpenIddictApplicationManager.cs

@ -150,7 +150,7 @@ namespace OpenIddict.Core
if (!string.IsNullOrEmpty(await Store.GetClientSecretAsync(application, cancellationToken)))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1205), nameof(application));
throw new ArgumentException(SR.GetResourceString(SR.ID0206), nameof(application));
}
// If no client type was specified, assume it's a public application if no secret was provided.
@ -172,7 +172,7 @@ namespace OpenIddict.Core
if (results.Any(result => result != ValidationResult.Success))
{
var builder = new StringBuilder();
builder.AppendLine(SR.GetResourceString(SR.ID1206));
builder.AppendLine(SR.GetResourceString(SR.ID0207));
builder.AppendLine();
foreach (var result in results)
@ -226,7 +226,7 @@ namespace OpenIddict.Core
var application = await Store.InstantiateAsync(cancellationToken);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1207));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0208));
}
await PopulateAsync(application, descriptor, cancellationToken);
@ -282,7 +282,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var application = Options.CurrentValue.DisableEntityCaching ?
@ -319,7 +319,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var application = Options.CurrentValue.DisableEntityCaching ?
@ -354,7 +354,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(address))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1142), nameof(address));
throw new ArgumentException(SR.GetResourceString(SR.ID0143), nameof(address));
}
var applications = Options.CurrentValue.DisableEntityCaching ?
@ -396,7 +396,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(address))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1142), nameof(address));
throw new ArgumentException(SR.GetResourceString(SR.ID0143), nameof(address));
}
var applications = Options.CurrentValue.DisableEntityCaching ?
@ -761,7 +761,7 @@ namespace OpenIddict.Core
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1208), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0209), nameof(type));
}
return string.Equals(await GetClientTypeAsync(application, cancellationToken), type, StringComparison.OrdinalIgnoreCase);
@ -784,7 +784,7 @@ namespace OpenIddict.Core
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1209), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0210), nameof(type));
}
return string.Equals(await GetConsentTypeAsync(application, cancellationToken), type, StringComparison.OrdinalIgnoreCase);
@ -807,7 +807,7 @@ namespace OpenIddict.Core
if (string.IsNullOrEmpty(permission))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1210), nameof(permission));
throw new ArgumentException(SR.GetResourceString(SR.ID0211), nameof(permission));
}
return (await GetPermissionsAsync(application, cancellationToken)).Contains(permission, StringComparer.Ordinal);
@ -830,7 +830,7 @@ namespace OpenIddict.Core
if (string.IsNullOrEmpty(requirement))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1211), nameof(requirement));
throw new ArgumentException(SR.GetResourceString(SR.ID0212), nameof(requirement));
}
return (await GetRequirementsAsync(application, cancellationToken)).Contains(requirement, StringComparer.Ordinal);
@ -967,13 +967,13 @@ namespace OpenIddict.Core
// Ensure the address is not null or empty.
if (string.IsNullOrEmpty(address))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1212));
throw new ArgumentException(SR.GetResourceString(SR.ID0213));
}
// Ensure the address is a valid absolute URL.
if (!Uri.TryCreate(address, UriKind.Absolute, out Uri? uri) || !uri.IsWellFormedOriginalString())
{
throw new ArgumentException(SR.GetResourceString(SR.ID1213));
throw new ArgumentException(SR.GetResourceString(SR.ID0214));
}
descriptor.PostLogoutRedirectUris.Add(uri);
@ -985,13 +985,13 @@ namespace OpenIddict.Core
// Ensure the address is not null or empty.
if (string.IsNullOrEmpty(address))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1212));
throw new ArgumentException(SR.GetResourceString(SR.ID0213));
}
// Ensure the address is a valid absolute URL.
if (!Uri.TryCreate(address, UriKind.Absolute, out Uri? uri) || !uri.IsWellFormedOriginalString())
{
throw new ArgumentException(SR.GetResourceString(SR.ID1213));
throw new ArgumentException(SR.GetResourceString(SR.ID0214));
}
descriptor.RedirectUris.Add(uri);
@ -1017,7 +1017,7 @@ namespace OpenIddict.Core
if (results.Any(result => result != ValidationResult.Success))
{
var builder = new StringBuilder();
builder.AppendLine(SR.GetResourceString(SR.ID1214));
builder.AppendLine(SR.GetResourceString(SR.ID0215));
builder.AppendLine();
foreach (var result in results)
@ -1138,7 +1138,7 @@ namespace OpenIddict.Core
var identifier = await Store.GetClientIdAsync(application, cancellationToken);
if (string.IsNullOrEmpty(identifier))
{
yield return new ValidationResult(Localizer[SR.ID3036]);
yield return new ValidationResult(Localizer[SR.ID2036]);
}
else
@ -1152,14 +1152,14 @@ namespace OpenIddict.Core
await Store.GetIdAsync(other, cancellationToken),
await Store.GetIdAsync(application, cancellationToken), StringComparison.Ordinal))
{
yield return new ValidationResult(Localizer[SR.ID3111]);
yield return new ValidationResult(Localizer[SR.ID2111]);
}
}
var type = await Store.GetClientTypeAsync(application, cancellationToken);
if (string.IsNullOrEmpty(type))
{
yield return new ValidationResult(Localizer[SR.ID3118]);
yield return new ValidationResult(Localizer[SR.ID2118]);
}
else
@ -1169,20 +1169,20 @@ namespace OpenIddict.Core
!string.Equals(type, ClientTypes.Hybrid, StringComparison.OrdinalIgnoreCase) &&
!string.Equals(type, ClientTypes.Public, StringComparison.OrdinalIgnoreCase))
{
yield return new ValidationResult(Localizer[SR.ID3112]);
yield return new ValidationResult(Localizer[SR.ID2112]);
}
// Ensure a client secret was specified if the client is a confidential application.
var secret = await Store.GetClientSecretAsync(application, cancellationToken);
if (string.IsNullOrEmpty(secret) && string.Equals(type, ClientTypes.Confidential, StringComparison.OrdinalIgnoreCase))
{
yield return new ValidationResult(Localizer[SR.ID3113]);
yield return new ValidationResult(Localizer[SR.ID2113]);
}
// Ensure no client secret was specified if the client is a public application.
else if (!string.IsNullOrEmpty(secret) && string.Equals(type, ClientTypes.Public, StringComparison.OrdinalIgnoreCase))
{
yield return new ValidationResult(Localizer[SR.ID3114]);
yield return new ValidationResult(Localizer[SR.ID2114]);
}
}
@ -1195,7 +1195,7 @@ namespace OpenIddict.Core
// Ensure the address is not null or empty.
if (string.IsNullOrEmpty(address))
{
yield return new ValidationResult(Localizer[SR.ID3119]);
yield return new ValidationResult(Localizer[SR.ID2119]);
break;
}
@ -1203,7 +1203,7 @@ namespace OpenIddict.Core
// Ensure the address is a valid absolute URL.
if (!Uri.TryCreate(address, UriKind.Absolute, out Uri? uri) || !uri.IsWellFormedOriginalString())
{
yield return new ValidationResult(Localizer[SR.ID3120]);
yield return new ValidationResult(Localizer[SR.ID2120]);
break;
}
@ -1211,7 +1211,7 @@ namespace OpenIddict.Core
// Ensure the address doesn't contain a fragment.
if (!string.IsNullOrEmpty(uri.Fragment))
{
yield return new ValidationResult(Localizer[SR.ID3115]);
yield return new ValidationResult(Localizer[SR.ID2115]);
break;
}
@ -1238,12 +1238,12 @@ namespace OpenIddict.Core
}
if (string.IsNullOrEmpty(secret))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1215), nameof(secret));
throw new ArgumentException(SR.GetResourceString(SR.ID0216), nameof(secret));
}
if (await HasClientTypeAsync(application, ClientTypes.Public, cancellationToken))
{
Logger.LogWarning(SR.GetResourceString(SR.ID7159));
Logger.LogWarning(SR.GetResourceString(SR.ID6159));
return false;
}
@ -1251,14 +1251,14 @@ namespace OpenIddict.Core
var value = await Store.GetClientSecretAsync(application, cancellationToken);
if (string.IsNullOrEmpty(value))
{
Logger.LogError(SR.GetResourceString(SR.ID7160), await GetClientIdAsync(application, cancellationToken));
Logger.LogError(SR.GetResourceString(SR.ID6160), await GetClientIdAsync(application, cancellationToken));
return false;
}
if (!await ValidateClientSecretAsync(secret, value, cancellationToken))
{
Logger.LogWarning(SR.GetResourceString(SR.ID7161), await GetClientIdAsync(application, cancellationToken));
Logger.LogWarning(SR.GetResourceString(SR.ID6161), await GetClientIdAsync(application, cancellationToken));
return false;
}
@ -1286,7 +1286,7 @@ namespace OpenIddict.Core
if (string.IsNullOrEmpty(address))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1142), nameof(address));
throw new ArgumentException(SR.GetResourceString(SR.ID0143), nameof(address));
}
foreach (var uri in await Store.GetRedirectUrisAsync(application, cancellationToken))
@ -1299,7 +1299,7 @@ namespace OpenIddict.Core
}
}
Logger.LogWarning(SR.GetResourceString(SR.ID7162), address, await GetClientIdAsync(application, cancellationToken));
Logger.LogWarning(SR.GetResourceString(SR.ID6162), address, await GetClientIdAsync(application, cancellationToken));
return false;
}
@ -1317,7 +1317,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(secret))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1215), nameof(secret));
throw new ArgumentException(SR.GetResourceString(SR.ID0216), nameof(secret));
}
// Note: the PRF, iteration count, salt length and key length currently all match the default values
@ -1362,7 +1362,7 @@ namespace OpenIddict.Core
var name when name == HashAlgorithmName.SHA256 => 1,
var name when name == HashAlgorithmName.SHA512 => 2,
_ => throw new InvalidOperationException(SR.GetResourceString(SR.ID1216))
_ => throw new InvalidOperationException(SR.GetResourceString(SR.ID0217))
});
// Write the iteration count of the algorithm.
@ -1397,12 +1397,12 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(secret))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1215), nameof(secret));
throw new ArgumentException(SR.GetResourceString(SR.ID0216), nameof(secret));
}
if (string.IsNullOrEmpty(comparand))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1217), nameof(comparand));
throw new ArgumentException(SR.GetResourceString(SR.ID0218), nameof(comparand));
}
try
@ -1412,7 +1412,7 @@ namespace OpenIddict.Core
catch (Exception exception)
{
Logger.LogWarning(exception, SR.GetResourceString(SR.ID7163));
Logger.LogWarning(exception, SR.GetResourceString(SR.ID6163));
return new ValueTask<bool>(false);
}
@ -1442,7 +1442,7 @@ namespace OpenIddict.Core
1 => HashAlgorithmName.SHA256,
2 => HashAlgorithmName.SHA512,
_ => throw new InvalidOperationException(SR.GetResourceString(SR.ID1216))
_ => throw new InvalidOperationException(SR.GetResourceString(SR.ID0217))
};
// Read the iteration count of the algorithm.
@ -1492,7 +1492,7 @@ namespace OpenIddict.Core
var name when name == HashAlgorithmName.SHA256 => new Sha256Digest(),
var name when name == HashAlgorithmName.SHA512 => new Sha512Digest(),
_ => throw new InvalidOperationException(SR.GetResourceString(SR.ID1216))
_ => throw new InvalidOperationException(SR.GetResourceString(SR.ID0217))
});
generator.Init(PbeParametersGenerator.Pkcs5PasswordToBytes(secret.ToCharArray()), salt.ToArray(), iterations);

64
src/OpenIddict.Core/Managers/OpenIddictAuthorizationManager.cs

@ -131,7 +131,7 @@ namespace OpenIddict.Core
if (results.Any(result => result != ValidationResult.Success))
{
var builder = new StringBuilder();
builder.AppendLine(SR.GetResourceString(SR.ID1218));
builder.AppendLine(SR.GetResourceString(SR.ID0219));
builder.AppendLine();
foreach (var result in results)
@ -182,7 +182,7 @@ namespace OpenIddict.Core
var authorization = await Store.InstantiateAsync(cancellationToken);
if (authorization is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1219));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0220));
}
await PopulateAsync(authorization, descriptor, cancellationToken);
@ -214,17 +214,17 @@ namespace OpenIddict.Core
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1199), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0200), nameof(type));
}
var descriptor = new OpenIddictAuthorizationDescriptor
@ -277,12 +277,12 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
var authorizations = Options.CurrentValue.DisableEntityCaching ?
@ -330,17 +330,17 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
var authorizations = Options.CurrentValue.DisableEntityCaching ?
@ -385,22 +385,22 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1199), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0200), nameof(type));
}
var authorizations = Options.CurrentValue.DisableEntityCaching ?
@ -447,22 +447,22 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1199), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0200), nameof(type));
}
var authorizations = Options.CurrentValue.DisableEntityCaching ?
@ -510,7 +510,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var authorizations = Options.CurrentValue.DisableEntityCaching ?
@ -553,7 +553,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var authorization = Options.CurrentValue.DisableEntityCaching ?
@ -588,7 +588,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
var authorizations = Options.CurrentValue.DisableEntityCaching ?
@ -838,7 +838,7 @@ namespace OpenIddict.Core
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
return string.Equals(await Store.GetStatusAsync(authorization, cancellationToken), status, StringComparison.OrdinalIgnoreCase);
@ -861,7 +861,7 @@ namespace OpenIddict.Core
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1199), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0200), nameof(type));
}
return string.Equals(await Store.GetTypeAsync(authorization, cancellationToken), type, StringComparison.OrdinalIgnoreCase);
@ -1041,21 +1041,21 @@ namespace OpenIddict.Core
{
await UpdateAsync(authorization, cancellationToken);
Logger.LogInformation(SR.GetResourceString(SR.ID7164), await Store.GetIdAsync(authorization, cancellationToken));
Logger.LogInformation(SR.GetResourceString(SR.ID6164), await Store.GetIdAsync(authorization, cancellationToken));
return true;
}
catch (ConcurrencyException exception)
{
Logger.LogDebug(exception, SR.GetResourceString(SR.ID7165), await Store.GetIdAsync(authorization, cancellationToken));
Logger.LogDebug(exception, SR.GetResourceString(SR.ID6165), await Store.GetIdAsync(authorization, cancellationToken));
return false;
}
catch (Exception exception)
{
Logger.LogWarning(exception, SR.GetResourceString(SR.ID7166), await Store.GetIdAsync(authorization, cancellationToken));
Logger.LogWarning(exception, SR.GetResourceString(SR.ID6166), await Store.GetIdAsync(authorization, cancellationToken));
return false;
}
@ -1080,7 +1080,7 @@ namespace OpenIddict.Core
if (results.Any(result => result != ValidationResult.Success))
{
var builder = new StringBuilder();
builder.AppendLine(SR.GetResourceString(SR.ID1220));
builder.AppendLine(SR.GetResourceString(SR.ID0221));
builder.AppendLine();
foreach (var result in results)
@ -1156,18 +1156,18 @@ namespace OpenIddict.Core
var type = await Store.GetTypeAsync(authorization, cancellationToken);
if (string.IsNullOrEmpty(type))
{
yield return new ValidationResult(Localizer[SR.ID3116]);
yield return new ValidationResult(Localizer[SR.ID2116]);
}
else if (!string.Equals(type, AuthorizationTypes.AdHoc, StringComparison.OrdinalIgnoreCase) &&
!string.Equals(type, AuthorizationTypes.Permanent, StringComparison.OrdinalIgnoreCase))
{
yield return new ValidationResult(Localizer[SR.ID3117]);
yield return new ValidationResult(Localizer[SR.ID2117]);
}
if (string.IsNullOrEmpty(await Store.GetStatusAsync(authorization, cancellationToken)))
{
yield return new ValidationResult(Localizer[SR.ID3038]);
yield return new ValidationResult(Localizer[SR.ID2038]);
}
// Ensure that the scopes are not null or empty and do not contain spaces.
@ -1175,14 +1175,14 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(scope))
{
yield return new ValidationResult(Localizer[SR.ID3039]);
yield return new ValidationResult(Localizer[SR.ID2039]);
break;
}
if (scope.Contains(Separators.Space[0]))
{
yield return new ValidationResult(Localizer[SR.ID3042]);
yield return new ValidationResult(Localizer[SR.ID2042]);
break;
}

20
src/OpenIddict.Core/Managers/OpenIddictScopeManager.cs

@ -124,7 +124,7 @@ namespace OpenIddict.Core
if (results.Any(result => result != ValidationResult.Success))
{
var builder = new StringBuilder();
builder.AppendLine(SR.GetResourceString(SR.ID1221));
builder.AppendLine(SR.GetResourceString(SR.ID0222));
builder.AppendLine();
foreach (var result in results)
@ -175,7 +175,7 @@ namespace OpenIddict.Core
var scope = await Store.InstantiateAsync(cancellationToken);
if (scope is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1222));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0223));
}
await PopulateAsync(scope, descriptor, cancellationToken);
@ -220,7 +220,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var scope = Options.CurrentValue.DisableEntityCaching ?
@ -257,7 +257,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1201), nameof(name));
throw new ArgumentException(SR.GetResourceString(SR.ID0202), nameof(name));
}
var scope = Options.CurrentValue.DisableEntityCaching ?
@ -293,7 +293,7 @@ namespace OpenIddict.Core
{
if (names.Any(name => string.IsNullOrEmpty(name)))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1202), nameof(names));
throw new ArgumentException(SR.GetResourceString(SR.ID0203), nameof(names));
}
var scopes = Options.CurrentValue.DisableEntityCaching ?
@ -334,7 +334,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(resource))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1061), nameof(resource));
throw new ArgumentException(SR.GetResourceString(SR.ID0062), nameof(resource));
}
var scopes = Options.CurrentValue.DisableEntityCaching ?
@ -841,7 +841,7 @@ namespace OpenIddict.Core
if (results.Any(result => result != ValidationResult.Success))
{
var builder = new StringBuilder();
builder.AppendLine(SR.GetResourceString(SR.ID1223));
builder.AppendLine(SR.GetResourceString(SR.ID0224));
builder.AppendLine();
foreach (var result in results)
@ -919,12 +919,12 @@ namespace OpenIddict.Core
var name = await Store.GetNameAsync(scope, cancellationToken);
if (string.IsNullOrEmpty(name))
{
yield return new ValidationResult(Localizer[SR.ID3044]);
yield return new ValidationResult(Localizer[SR.ID2044]);
}
else if (name!.Contains(Separators.Space[0]))
{
yield return new ValidationResult(Localizer[SR.ID3045]);
yield return new ValidationResult(Localizer[SR.ID2045]);
}
else
@ -938,7 +938,7 @@ namespace OpenIddict.Core
await Store.GetIdAsync(other, cancellationToken),
await Store.GetIdAsync(scope, cancellationToken), StringComparison.Ordinal))
{
yield return new ValidationResult(Localizer[SR.ID3060]);
yield return new ValidationResult(Localizer[SR.ID2060]);
}
}
}

72
src/OpenIddict.Core/Managers/OpenIddictTokenManager.cs

@ -139,7 +139,7 @@ namespace OpenIddict.Core
if (results.Any(result => result != ValidationResult.Success))
{
var builder = new StringBuilder();
builder.AppendLine(SR.GetResourceString(SR.ID1224));
builder.AppendLine(SR.GetResourceString(SR.ID0225));
builder.AppendLine();
foreach (var result in results)
@ -190,7 +190,7 @@ namespace OpenIddict.Core
var token = await Store.InstantiateAsync(cancellationToken);
if (token is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1225));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0226));
}
await PopulateAsync(token, descriptor, cancellationToken);
@ -235,12 +235,12 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
var tokens = Options.CurrentValue.DisableEntityCaching ?
@ -284,17 +284,17 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
var tokens = Options.CurrentValue.DisableEntityCaching ?
@ -339,22 +339,22 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1199), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0200), nameof(type));
}
var tokens = Options.CurrentValue.DisableEntityCaching ?
@ -395,7 +395,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var tokens = Options.CurrentValue.DisableEntityCaching ?
@ -436,7 +436,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var tokens = Options.CurrentValue.DisableEntityCaching ?
@ -479,7 +479,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var token = Options.CurrentValue.DisableEntityCaching ?
@ -517,7 +517,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
identifier = await ObfuscateReferenceIdAsync(identifier, cancellationToken);
@ -555,7 +555,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
var tokens = Options.CurrentValue.DisableEntityCaching ?
@ -838,7 +838,7 @@ namespace OpenIddict.Core
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
return string.Equals(await Store.GetStatusAsync(token, cancellationToken), status, StringComparison.OrdinalIgnoreCase);
@ -860,7 +860,7 @@ namespace OpenIddict.Core
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1199), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0200), nameof(type));
}
return string.Equals(await Store.GetTypeAsync(token, cancellationToken), type, StringComparison.OrdinalIgnoreCase);
@ -1065,12 +1065,12 @@ namespace OpenIddict.Core
if (date is not null)
{
Logger.LogInformation(SR.GetResourceString(SR.ID7167), await Store.GetIdAsync(token, cancellationToken), date);
Logger.LogInformation(SR.GetResourceString(SR.ID6167), await Store.GetIdAsync(token, cancellationToken), date);
}
else
{
Logger.LogInformation(SR.GetResourceString(SR.ID7168), await Store.GetIdAsync(token, cancellationToken));
Logger.LogInformation(SR.GetResourceString(SR.ID6168), await Store.GetIdAsync(token, cancellationToken));
}
return true;
@ -1078,14 +1078,14 @@ namespace OpenIddict.Core
catch (ConcurrencyException exception)
{
Logger.LogDebug(exception, SR.GetResourceString(SR.ID7169), await Store.GetIdAsync(token, cancellationToken));
Logger.LogDebug(exception, SR.GetResourceString(SR.ID6169), await Store.GetIdAsync(token, cancellationToken));
return false;
}
catch (Exception exception)
{
Logger.LogWarning(exception, SR.GetResourceString(SR.ID7170), await Store.GetIdAsync(token, cancellationToken));
Logger.LogWarning(exception, SR.GetResourceString(SR.ID6170), await Store.GetIdAsync(token, cancellationToken));
return false;
}
@ -1116,21 +1116,21 @@ namespace OpenIddict.Core
{
await UpdateAsync(token, cancellationToken);
Logger.LogInformation(SR.GetResourceString(SR.ID7171), await Store.GetIdAsync(token, cancellationToken));
Logger.LogInformation(SR.GetResourceString(SR.ID6171), await Store.GetIdAsync(token, cancellationToken));
return true;
}
catch (ConcurrencyException exception)
{
Logger.LogDebug(exception, SR.GetResourceString(SR.ID7172), await Store.GetIdAsync(token, cancellationToken));
Logger.LogDebug(exception, SR.GetResourceString(SR.ID6172), await Store.GetIdAsync(token, cancellationToken));
return false;
}
catch (Exception exception)
{
Logger.LogWarning(exception, SR.GetResourceString(SR.ID7173), await Store.GetIdAsync(token, cancellationToken));
Logger.LogWarning(exception, SR.GetResourceString(SR.ID6173), await Store.GetIdAsync(token, cancellationToken));
return false;
}
@ -1161,21 +1161,21 @@ namespace OpenIddict.Core
{
await UpdateAsync(token, cancellationToken);
Logger.LogInformation(SR.GetResourceString(SR.ID7174), await Store.GetIdAsync(token, cancellationToken));
Logger.LogInformation(SR.GetResourceString(SR.ID6174), await Store.GetIdAsync(token, cancellationToken));
return true;
}
catch (ConcurrencyException exception)
{
Logger.LogDebug(exception, SR.GetResourceString(SR.ID7175), await Store.GetIdAsync(token, cancellationToken));
Logger.LogDebug(exception, SR.GetResourceString(SR.ID6175), await Store.GetIdAsync(token, cancellationToken));
return false;
}
catch (Exception exception)
{
Logger.LogWarning(exception, SR.GetResourceString(SR.ID7176), await Store.GetIdAsync(token, cancellationToken));
Logger.LogWarning(exception, SR.GetResourceString(SR.ID6176), await Store.GetIdAsync(token, cancellationToken));
return false;
}
@ -1206,21 +1206,21 @@ namespace OpenIddict.Core
{
await UpdateAsync(token, cancellationToken);
Logger.LogInformation(SR.GetResourceString(SR.ID7177), await Store.GetIdAsync(token, cancellationToken));
Logger.LogInformation(SR.GetResourceString(SR.ID6177), await Store.GetIdAsync(token, cancellationToken));
return true;
}
catch (ConcurrencyException exception)
{
Logger.LogDebug(exception, SR.GetResourceString(SR.ID7178), await Store.GetIdAsync(token, cancellationToken));
Logger.LogDebug(exception, SR.GetResourceString(SR.ID6178), await Store.GetIdAsync(token, cancellationToken));
return false;
}
catch (Exception exception)
{
Logger.LogWarning(exception, SR.GetResourceString(SR.ID7179), await Store.GetIdAsync(token, cancellationToken));
Logger.LogWarning(exception, SR.GetResourceString(SR.ID6179), await Store.GetIdAsync(token, cancellationToken));
return false;
}
@ -1245,7 +1245,7 @@ namespace OpenIddict.Core
if (results.Any(result => result != ValidationResult.Success))
{
var builder = new StringBuilder();
builder.AppendLine(SR.GetResourceString(SR.ID1226));
builder.AppendLine(SR.GetResourceString(SR.ID0227));
builder.AppendLine();
foreach (var result in results)
@ -1343,19 +1343,19 @@ namespace OpenIddict.Core
await Store.GetIdAsync(other, cancellationToken),
await Store.GetIdAsync(token, cancellationToken), StringComparison.Ordinal))
{
yield return new ValidationResult(Localizer[SR.ID3085]);
yield return new ValidationResult(Localizer[SR.ID2085]);
}
}
var type = await Store.GetTypeAsync(token, cancellationToken);
if (string.IsNullOrEmpty(type))
{
yield return new ValidationResult(Localizer[SR.ID3086]);
yield return new ValidationResult(Localizer[SR.ID2086]);
}
if (string.IsNullOrEmpty(await Store.GetStatusAsync(token, cancellationToken)))
{
yield return new ValidationResult(Localizer[SR.ID3038]);
yield return new ValidationResult(Localizer[SR.ID2038]);
}
}
@ -1372,7 +1372,7 @@ namespace OpenIddict.Core
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
// Compute the digest of the generated identifier and use it as the hashed identifier of the reference token.

50
src/OpenIddict.Core/OpenIddictCoreBuilder.cs

@ -82,7 +82,7 @@ namespace Microsoft.Extensions.DependencyInjection
var root = OpenIddictHelpers.FindGenericBaseType(type, typeof(IOpenIddictApplicationStore<>));
if (root is null)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
// Note: managers can be either open generics (e.g OpenIddictApplicationStore<>)
@ -91,7 +91,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (type.GetGenericArguments().Length != 1)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
Services.Replace(new ServiceDescriptor(typeof(IOpenIddictApplicationStore<>), type, lifetime));
@ -138,7 +138,7 @@ namespace Microsoft.Extensions.DependencyInjection
var root = OpenIddictHelpers.FindGenericBaseType(type, typeof(IOpenIddictAuthorizationStore<>));
if (root is null)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
// Note: managers can be either open generics (e.g OpenIddictAuthorizationStore<>)
@ -147,7 +147,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (type.GetGenericArguments().Length != 1)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
Services.Replace(new ServiceDescriptor(typeof(IOpenIddictAuthorizationStore<>), type, lifetime));
@ -194,7 +194,7 @@ namespace Microsoft.Extensions.DependencyInjection
var root = OpenIddictHelpers.FindGenericBaseType(type, typeof(IOpenIddictScopeStore<>));
if (root is null)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
// Note: managers can be either open generics (e.g OpenIddictScopeStore<>)
@ -203,7 +203,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (type.GetGenericArguments().Length != 1)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
Services.Replace(new ServiceDescriptor(typeof(IOpenIddictScopeStore<>), type, lifetime));
@ -250,7 +250,7 @@ namespace Microsoft.Extensions.DependencyInjection
var root = OpenIddictHelpers.FindGenericBaseType(type, typeof(IOpenIddictTokenStore<>));
if (root is null)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
// Note: managers can be either open generics (e.g OpenIddictTokenStore<>)
@ -259,7 +259,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (type.GetGenericArguments().Length != 1)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
Services.Replace(new ServiceDescriptor(typeof(IOpenIddictTokenStore<>), type, lifetime));
@ -304,7 +304,7 @@ namespace Microsoft.Extensions.DependencyInjection
var root = OpenIddictHelpers.FindGenericBaseType(type, typeof(OpenIddictApplicationManager<>));
if (root is null)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
// Note: managers can be either open generics (e.g OpenIddictApplicationManager<>)
@ -313,7 +313,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (type.GetGenericArguments().Length != 1)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
Services.Replace(ServiceDescriptor.Scoped(type, type));
@ -360,7 +360,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (!typeof(IOpenIddictApplicationStoreResolver).IsAssignableFrom(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
Services.Replace(new ServiceDescriptor(typeof(IOpenIddictApplicationStoreResolver), type, lifetime));
@ -398,7 +398,7 @@ namespace Microsoft.Extensions.DependencyInjection
var root = OpenIddictHelpers.FindGenericBaseType(type, typeof(OpenIddictAuthorizationManager<>));
if (root is null)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
// Note: managers can be either open generics (e.g OpenIddictAuthorizationManager<>)
@ -407,7 +407,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (type.GetGenericArguments().Length != 1)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
Services.Replace(ServiceDescriptor.Scoped(type, type));
@ -454,7 +454,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (!typeof(IOpenIddictAuthorizationStoreResolver).IsAssignableFrom(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
Services.Replace(new ServiceDescriptor(typeof(IOpenIddictAuthorizationStoreResolver), type, lifetime));
@ -492,7 +492,7 @@ namespace Microsoft.Extensions.DependencyInjection
var root = OpenIddictHelpers.FindGenericBaseType(type, typeof(OpenIddictScopeManager<>));
if (root is null)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
// Note: managers can be either open generics (e.g OpenIddictScopeManager<>)
@ -501,7 +501,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (type.GetGenericArguments().Length != 1)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
Services.Replace(ServiceDescriptor.Scoped(type, type));
@ -548,7 +548,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (!typeof(IOpenIddictScopeStoreResolver).IsAssignableFrom(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
Services.Replace(new ServiceDescriptor(typeof(IOpenIddictScopeStoreResolver), type, lifetime));
@ -586,7 +586,7 @@ namespace Microsoft.Extensions.DependencyInjection
var root = OpenIddictHelpers.FindGenericBaseType(type, typeof(OpenIddictTokenManager<>));
if (root is null)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
// Note: managers can be either open generics (e.g OpenIddictTokenManager<>)
@ -595,7 +595,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (type.GetGenericArguments().Length != 1)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
Services.Replace(ServiceDescriptor.Scoped(type, type));
@ -642,7 +642,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (!typeof(IOpenIddictTokenStoreResolver).IsAssignableFrom(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
Services.Replace(new ServiceDescriptor(typeof(IOpenIddictTokenStoreResolver), type, lifetime));
@ -691,7 +691,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (type.IsValueType)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
return Configure(options => options.DefaultApplicationType = type);
@ -718,7 +718,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (type.IsValueType)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
return Configure(options => options.DefaultAuthorizationType = type);
@ -745,7 +745,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (type.IsValueType)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
return Configure(options => options.DefaultScopeType = type);
@ -772,7 +772,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (type.IsValueType)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
return Configure(options => options.DefaultTokenType = type);
@ -788,7 +788,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (limit < 10)
{
throw new ArgumentException(SR.GetResourceString(SR.ID1232), nameof(limit));
throw new ArgumentException(SR.GetResourceString(SR.ID0233), nameof(limit));
}
return Configure(options => options.EntityCacheLimit = limit);

8
src/OpenIddict.Core/OpenIddictCoreExtensions.cs

@ -59,7 +59,7 @@ namespace Microsoft.Extensions.DependencyInjection
var options = provider.GetRequiredService<IOptionsMonitor<OpenIddictCoreOptions>>().CurrentValue;
if (options.DefaultApplicationType is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1272));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0273));
}
return (IOpenIddictApplicationManager) provider.GetRequiredService(
@ -71,7 +71,7 @@ namespace Microsoft.Extensions.DependencyInjection
var options = provider.GetRequiredService<IOptionsMonitor<OpenIddictCoreOptions>>().CurrentValue;
if (options.DefaultAuthorizationType is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1273));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0274));
}
return (IOpenIddictAuthorizationManager) provider.GetRequiredService(
@ -83,7 +83,7 @@ namespace Microsoft.Extensions.DependencyInjection
var options = provider.GetRequiredService<IOptionsMonitor<OpenIddictCoreOptions>>().CurrentValue;
if (options.DefaultScopeType is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1274));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0275));
}
return (IOpenIddictScopeManager) provider.GetRequiredService(
@ -95,7 +95,7 @@ namespace Microsoft.Extensions.DependencyInjection
var options = provider.GetRequiredService<IOptionsMonitor<OpenIddictCoreOptions>>().CurrentValue;
if (options.DefaultTokenType is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1275));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0276));
}
return (IOpenIddictTokenManager) provider.GetRequiredService(

2
src/OpenIddict.Core/Resolvers/OpenIddictApplicationStoreResolver.cs

@ -23,6 +23,6 @@ namespace OpenIddict.Core
/// <returns>An <see cref="IOpenIddictApplicationStore{TApplication}"/>.</returns>
public IOpenIddictApplicationStore<TApplication> Get<TApplication>() where TApplication : class
=> _provider.GetService<IOpenIddictApplicationStore<TApplication>>() ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1227));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0228));
}
}

2
src/OpenIddict.Core/Resolvers/OpenIddictAuthorizationStoreResolver.cs

@ -23,6 +23,6 @@ namespace OpenIddict.Core
/// <returns>An <see cref="IOpenIddictAuthorizationStore{TAuthorization}"/>.</returns>
public IOpenIddictAuthorizationStore<TAuthorization> Get<TAuthorization>() where TAuthorization : class
=> _provider.GetService<IOpenIddictAuthorizationStore<TAuthorization>>() ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1228));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0229));
}
}

2
src/OpenIddict.Core/Resolvers/OpenIddictScopeStoreResolver.cs

@ -23,6 +23,6 @@ namespace OpenIddict.Core
/// <returns>An <see cref="IOpenIddictScopeStore{TScope}"/>.</returns>
public IOpenIddictScopeStore<TScope> Get<TScope>() where TScope : class
=> _provider.GetService<IOpenIddictScopeStore<TScope>>() ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1229));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0230));
}
}

2
src/OpenIddict.Core/Resolvers/OpenIddictTokenStoreResolver.cs

@ -23,6 +23,6 @@ namespace OpenIddict.Core
/// <returns>An <see cref="IOpenIddictTokenStore{TToken}"/>.</returns>
public IOpenIddictTokenStore<TToken> Get<TToken>() where TToken : class
=> _provider.GetService<IOpenIddictTokenStore<TToken>>() ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1230));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0231));
}
}

4
src/OpenIddict.EntityFramework/OpenIddictEntityFrameworkBuilder.cs

@ -69,7 +69,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (typeof(TApplication).IsGenericType || typeof(TAuthorization).IsGenericType ||
typeof(TScope).IsGenericType || typeof(TToken).IsGenericType)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1276));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0277));
}
Services.Configure<OpenIddictCoreOptions>(options =>
@ -106,7 +106,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (!typeof(DbContext).IsAssignableFrom(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
Services.TryAddScoped(type);

4
src/OpenIddict.EntityFramework/Resolvers/OpenIddictEntityFrameworkApplicationStoreResolver.cs

@ -53,13 +53,13 @@ namespace OpenIddict.EntityFramework
var root = OpenIddictHelpers.FindGenericBaseType(key, typeof(OpenIddictEntityFrameworkApplication<,,>));
if (root is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1233));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0234));
}
var context = _options.CurrentValue.DbContextType;
if (context is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1234));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0235));
}
return typeof(OpenIddictEntityFrameworkApplicationStore<,,,,>).MakeGenericType(

4
src/OpenIddict.EntityFramework/Resolvers/OpenIddictEntityFrameworkAuthorizationStoreResolver.cs

@ -53,13 +53,13 @@ namespace OpenIddict.EntityFramework
var root = OpenIddictHelpers.FindGenericBaseType(key, typeof(OpenIddictEntityFrameworkAuthorization<,,>));
if (root is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1235));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0236));
}
var context = _options.CurrentValue.DbContextType;
if (context is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1234));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0235));
}
return typeof(OpenIddictEntityFrameworkAuthorizationStore<,,,,>).MakeGenericType(

4
src/OpenIddict.EntityFramework/Resolvers/OpenIddictEntityFrameworkScopeStoreResolver.cs

@ -53,13 +53,13 @@ namespace OpenIddict.EntityFramework
var root = OpenIddictHelpers.FindGenericBaseType(key, typeof(OpenIddictEntityFrameworkScope<>));
if (root is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1236));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0237));
}
var context = _options.CurrentValue.DbContextType;
if (context is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1234));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0235));
}
return typeof(OpenIddictEntityFrameworkScopeStore<,,>).MakeGenericType(

4
src/OpenIddict.EntityFramework/Resolvers/OpenIddictEntityFrameworkTokenStoreResolver.cs

@ -53,13 +53,13 @@ namespace OpenIddict.EntityFramework
var root = OpenIddictHelpers.FindGenericBaseType(key, typeof(OpenIddictEntityFrameworkToken<,,>));
if (root is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1237));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0238));
}
var context = _options.CurrentValue.DbContextType;
if (context is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1234));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0235));
}
return typeof(OpenIddictEntityFrameworkTokenStore<,,,,>).MakeGenericType(

14
src/OpenIddict.EntityFramework/Stores/OpenIddictEntityFrameworkApplicationStore.cs

@ -210,7 +210,7 @@ namespace OpenIddict.EntityFramework
Context.Entry(token).State = EntityState.Unchanged;
}
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1238), exception);
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0239), exception);
}
}
@ -219,7 +219,7 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var key = ConvertIdentifierFromString(identifier);
@ -234,7 +234,7 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
return await (from application in Applications
@ -248,7 +248,7 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(address))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1142), nameof(address));
throw new ArgumentException(SR.GetResourceString(SR.ID0143), nameof(address));
}
// To optimize the efficiency of the query a bit, only applications whose stringified
@ -282,7 +282,7 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(address))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1142), nameof(address));
throw new ArgumentException(SR.GetResourceString(SR.ID0143), nameof(address));
}
// To optimize the efficiency of the query a bit, only applications whose stringified
@ -610,7 +610,7 @@ namespace OpenIddict.EntityFramework
catch (MemberAccessException exception)
{
return new ValueTask<TApplication>(Task.FromException<TApplication>(
new InvalidOperationException(SR.GetResourceString(SR.ID1239), exception)));
new InvalidOperationException(SR.GetResourceString(SR.ID0240), exception)));
}
}
@ -965,7 +965,7 @@ namespace OpenIddict.EntityFramework
// Reset the state of the entity to prevents future calls to SaveChangesAsync() from failing.
Context.Entry(application).State = EntityState.Unchanged;
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1238), exception);
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0239), exception);
}
}

42
src/OpenIddict.EntityFramework/Stores/OpenIddictEntityFrameworkAuthorizationStore.cs

@ -185,7 +185,7 @@ namespace OpenIddict.EntityFramework
Context.Entry(token).State = EntityState.Unchanged;
}
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1240), exception);
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0241), exception);
}
}
@ -195,12 +195,12 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
var key = ConvertIdentifierFromString(client);
@ -218,17 +218,17 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
var key = ConvertIdentifierFromString(client);
@ -247,22 +247,22 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1199), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0200), nameof(type));
}
var key = ConvertIdentifierFromString(client);
@ -283,22 +283,22 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1199), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0200), nameof(type));
}
return ExecuteAsync(cancellationToken);
@ -330,7 +330,7 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var key = ConvertIdentifierFromString(identifier);
@ -345,7 +345,7 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var key = ConvertIdentifierFromString(identifier);
@ -361,7 +361,7 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
return (from authorization in Authorizations.Include(authorization => authorization.Application)
@ -547,7 +547,7 @@ namespace OpenIddict.EntityFramework
catch (MemberAccessException exception)
{
return new ValueTask<TAuthorization>(Task.FromException<TAuthorization>(
new InvalidOperationException(SR.GetResourceString(SR.ID1241), exception)));
new InvalidOperationException(SR.GetResourceString(SR.ID0242), exception)));
}
}
@ -653,7 +653,7 @@ namespace OpenIddict.EntityFramework
if (exceptions is not null)
{
throw new AggregateException(SR.GetResourceString(SR.ID1242), exceptions);
throw new AggregateException(SR.GetResourceString(SR.ID0243), exceptions);
}
}
@ -671,7 +671,7 @@ namespace OpenIddict.EntityFramework
var application = await Applications.FindAsync(cancellationToken, ConvertIdentifierFromString(identifier));
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1243));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0244));
}
authorization.Application = application;
@ -851,7 +851,7 @@ namespace OpenIddict.EntityFramework
// Reset the state of the entity to prevents future calls to SaveChangesAsync() from failing.
Context.Entry(authorization).State = EntityState.Unchanged;
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1240), exception);
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0241), exception);
}
}

14
src/OpenIddict.EntityFramework/Stores/OpenIddictEntityFrameworkScopeStore.cs

@ -133,7 +133,7 @@ namespace OpenIddict.EntityFramework
// Reset the state of the entity to prevents future calls to SaveChangesAsync() from failing.
Context.Entry(scope).State = EntityState.Unchanged;
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1244), exception);
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0245), exception);
}
}
@ -142,7 +142,7 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var key = ConvertIdentifierFromString(identifier);
@ -157,7 +157,7 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1201), nameof(name));
throw new ArgumentException(SR.GetResourceString(SR.ID0202), nameof(name));
}
return await (from scope in Scopes
@ -171,7 +171,7 @@ namespace OpenIddict.EntityFramework
{
if (names.Any(name => string.IsNullOrEmpty(name)))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1202), nameof(names));
throw new ArgumentException(SR.GetResourceString(SR.ID0203), nameof(names));
}
// Note: Enumerable.Contains() is deliberately used without the extension method syntax to ensure
@ -187,7 +187,7 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(resource))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1061), nameof(resource));
throw new ArgumentException(SR.GetResourceString(SR.ID0062), nameof(resource));
}
// To optimize the efficiency of the query a bit, only scopes whose stringified
@ -423,7 +423,7 @@ namespace OpenIddict.EntityFramework
catch (MemberAccessException exception)
{
return new ValueTask<TScope>(Task.FromException<TScope>(
new InvalidOperationException(SR.GetResourceString(SR.ID1245), exception)));
new InvalidOperationException(SR.GetResourceString(SR.ID0246), exception)));
}
}
@ -677,7 +677,7 @@ namespace OpenIddict.EntityFramework
// Reset the state of the entity to prevents future calls to SaveChangesAsync() from failing.
Context.Entry(scope).State = EntityState.Unchanged;
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1244), exception);
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0245), exception);
}
}

40
src/OpenIddict.EntityFramework/Stores/OpenIddictEntityFrameworkTokenStore.cs

@ -149,7 +149,7 @@ namespace OpenIddict.EntityFramework
// Reset the state of the entity to prevents future calls to SaveChangesAsync() from failing.
Context.Entry(token).State = EntityState.Unchanged;
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1246), exception);
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0247), exception);
}
}
@ -159,12 +159,12 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
var key = ConvertIdentifierFromString(client);
@ -182,17 +182,17 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
var key = ConvertIdentifierFromString(client);
@ -211,22 +211,22 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1199), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0200), nameof(type));
}
var key = ConvertIdentifierFromString(client);
@ -244,7 +244,7 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var key = ConvertIdentifierFromString(identifier);
@ -259,7 +259,7 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var key = ConvertIdentifierFromString(identifier);
@ -274,7 +274,7 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var key = ConvertIdentifierFromString(identifier);
@ -289,7 +289,7 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
return await (from token in Tokens.Include(token => token.Application).Include(token => token.Authorization)
@ -302,7 +302,7 @@ namespace OpenIddict.EntityFramework
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
return (from token in Tokens.Include(token => token.Application).Include(token => token.Authorization)
@ -515,7 +515,7 @@ namespace OpenIddict.EntityFramework
catch (MemberAccessException exception)
{
return new ValueTask<TToken>(Task.FromException<TToken>(
new InvalidOperationException(SR.GetResourceString(SR.ID1247), exception)));
new InvalidOperationException(SR.GetResourceString(SR.ID0248), exception)));
}
}
@ -623,7 +623,7 @@ namespace OpenIddict.EntityFramework
if (exceptions is not null)
{
throw new AggregateException(SR.GetResourceString(SR.ID1248), exceptions);
throw new AggregateException(SR.GetResourceString(SR.ID0249), exceptions);
}
}
@ -640,7 +640,7 @@ namespace OpenIddict.EntityFramework
var application = await Applications.FindAsync(cancellationToken, ConvertIdentifierFromString(identifier));
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1249));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0250));
}
token.Application = application;
@ -677,7 +677,7 @@ namespace OpenIddict.EntityFramework
var authorization = await Authorizations.FindAsync(cancellationToken, ConvertIdentifierFromString(identifier));
if (authorization is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1250));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0251));
}
token.Authorization = authorization;
@ -857,7 +857,7 @@ namespace OpenIddict.EntityFramework
// Reset the state of the entity to prevents future calls to SaveChangesAsync() from failing.
Context.Entry(token).State = EntityState.Unchanged;
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1246), exception);
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0247), exception);
}
}

2
src/OpenIddict.EntityFrameworkCore/OpenIddictEntityFrameworkCoreBuilder.cs

@ -108,7 +108,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (!typeof(DbContext).IsAssignableFrom(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1231), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0232), nameof(type));
}
return Configure(options => options.DbContextType = type);

4
src/OpenIddict.EntityFrameworkCore/Resolvers/OpenIddictEntityFrameworkCoreApplicationStoreResolver.cs

@ -53,13 +53,13 @@ namespace OpenIddict.EntityFrameworkCore
var root = OpenIddictHelpers.FindGenericBaseType(key, typeof(OpenIddictEntityFrameworkCoreApplication<,,>));
if (root is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1251));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0252));
}
var context = _options.CurrentValue.DbContextType;
if (context is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1252));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0253));
}
return typeof(OpenIddictEntityFrameworkCoreApplicationStore<,,,,>).MakeGenericType(

4
src/OpenIddict.EntityFrameworkCore/Resolvers/OpenIddictEntityFrameworkCoreAuthorizationStoreResolver.cs

@ -53,13 +53,13 @@ namespace OpenIddict.EntityFrameworkCore
var root = OpenIddictHelpers.FindGenericBaseType(key, typeof(OpenIddictEntityFrameworkCoreAuthorization<,,>));
if (root is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1253));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0254));
}
var context = _options.CurrentValue.DbContextType;
if (context is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1252));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0253));
}
return typeof(OpenIddictEntityFrameworkCoreAuthorizationStore<,,,,>).MakeGenericType(

4
src/OpenIddict.EntityFrameworkCore/Resolvers/OpenIddictEntityFrameworkCoreScopeStoreResolver.cs

@ -53,13 +53,13 @@ namespace OpenIddict.EntityFrameworkCore
var root = OpenIddictHelpers.FindGenericBaseType(key, typeof(OpenIddictEntityFrameworkCoreScope<>));
if (root is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1254));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0255));
}
var context = _options.CurrentValue.DbContextType;
if (context is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1252));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0253));
}
return typeof(OpenIddictEntityFrameworkCoreScopeStore<,,>).MakeGenericType(

4
src/OpenIddict.EntityFrameworkCore/Resolvers/OpenIddictEntityFrameworkCoreTokenStoreResolver.cs

@ -53,13 +53,13 @@ namespace OpenIddict.EntityFrameworkCore
var root = OpenIddictHelpers.FindGenericBaseType(key, typeof(OpenIddictEntityFrameworkCoreToken<,,>));
if (root is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1255));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0256));
}
var context = _options.CurrentValue.DbContextType;
if (context is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1252));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0253));
}
return typeof(OpenIddictEntityFrameworkCoreTokenStore<,,,,>).MakeGenericType(

14
src/OpenIddict.EntityFrameworkCore/Stores/OpenIddictEntityFrameworkCoreApplicationStore.cs

@ -261,7 +261,7 @@ namespace OpenIddict.EntityFrameworkCore
Context.Entry(token).State = EntityState.Unchanged;
}
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1238), exception);
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0239), exception);
}
}
@ -270,7 +270,7 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
return await (from application in Applications.AsTracking()
@ -283,7 +283,7 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var key = ConvertIdentifierFromString(identifier);
@ -299,7 +299,7 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(address))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1142), nameof(address));
throw new ArgumentException(SR.GetResourceString(SR.ID0143), nameof(address));
}
// To optimize the efficiency of the query a bit, only applications whose stringified
@ -333,7 +333,7 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(address))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1142), nameof(address));
throw new ArgumentException(SR.GetResourceString(SR.ID0143), nameof(address));
}
// To optimize the efficiency of the query a bit, only applications whose stringified
@ -661,7 +661,7 @@ namespace OpenIddict.EntityFrameworkCore
catch (MemberAccessException exception)
{
return new ValueTask<TApplication>(Task.FromException<TApplication>(
new InvalidOperationException(SR.GetResourceString(SR.ID1239), exception)));
new InvalidOperationException(SR.GetResourceString(SR.ID0240), exception)));
}
}
@ -1015,7 +1015,7 @@ namespace OpenIddict.EntityFrameworkCore
// Reset the state of the entity to prevents future calls to SaveChangesAsync() from failing.
Context.Entry(application).State = EntityState.Unchanged;
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1238), exception);
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0239), exception);
}
}

42
src/OpenIddict.EntityFrameworkCore/Stores/OpenIddictEntityFrameworkCoreAuthorizationStore.cs

@ -223,7 +223,7 @@ namespace OpenIddict.EntityFrameworkCore
Context.Entry(token).State = EntityState.Unchanged;
}
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1240), exception);
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0241), exception);
}
}
@ -233,12 +233,12 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
// Note: due to a bug in Entity Framework Core's query visitor, the authorizations can't be
@ -262,17 +262,17 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
// Note: due to a bug in Entity Framework Core's query visitor, the authorizations can't be
@ -296,22 +296,22 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1199), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0200), nameof(type));
}
// Note: due to a bug in Entity Framework Core's query visitor, the authorizations can't be
@ -338,22 +338,22 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1199), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0200), nameof(type));
}
return ExecuteAsync(cancellationToken);
@ -391,7 +391,7 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
// Note: due to a bug in Entity Framework Core's query visitor, the authorizations can't be
@ -412,7 +412,7 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var key = ConvertIdentifierFromString(identifier);
@ -428,7 +428,7 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
return (from authorization in Authorizations.Include(authorization => authorization.Application).AsTracking()
@ -615,7 +615,7 @@ namespace OpenIddict.EntityFrameworkCore
catch (MemberAccessException exception)
{
return new ValueTask<TAuthorization>(Task.FromException<TAuthorization>(
new InvalidOperationException(SR.GetResourceString(SR.ID1241), exception)));
new InvalidOperationException(SR.GetResourceString(SR.ID0242), exception)));
}
}
@ -733,7 +733,7 @@ namespace OpenIddict.EntityFrameworkCore
if (exceptions is not null)
{
throw new AggregateException(SR.GetResourceString(SR.ID1242), exceptions);
throw new AggregateException(SR.GetResourceString(SR.ID0243), exceptions);
}
}
@ -757,7 +757,7 @@ namespace OpenIddict.EntityFrameworkCore
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1243));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0244));
}
authorization.Application = application;
@ -940,7 +940,7 @@ namespace OpenIddict.EntityFrameworkCore
// Reset the state of the entity to prevents future calls to SaveChangesAsync() from failing.
Context.Entry(authorization).State = EntityState.Unchanged;
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1240), exception);
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0241), exception);
}
}

14
src/OpenIddict.EntityFrameworkCore/Stores/OpenIddictEntityFrameworkCoreScopeStore.cs

@ -149,7 +149,7 @@ namespace OpenIddict.EntityFrameworkCore
// Reset the state of the entity to prevents future calls to SaveChangesAsync() from failing.
Context.Entry(scope).State = EntityState.Unchanged;
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1244), exception);
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0245), exception);
}
}
@ -158,7 +158,7 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var key = ConvertIdentifierFromString(identifier);
@ -173,7 +173,7 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1201), nameof(name));
throw new ArgumentException(SR.GetResourceString(SR.ID0202), nameof(name));
}
return await (from scope in Scopes.AsTracking()
@ -187,7 +187,7 @@ namespace OpenIddict.EntityFrameworkCore
{
if (names.Any(name => string.IsNullOrEmpty(name)))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1202), nameof(names));
throw new ArgumentException(SR.GetResourceString(SR.ID0203), nameof(names));
}
// Note: Enumerable.Contains() is deliberately used without the extension method syntax to ensure
@ -203,7 +203,7 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(resource))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1061), nameof(resource));
throw new ArgumentException(SR.GetResourceString(SR.ID0062), nameof(resource));
}
// To optimize the efficiency of the query a bit, only scopes whose stringified
@ -439,7 +439,7 @@ namespace OpenIddict.EntityFrameworkCore
catch (MemberAccessException exception)
{
return new ValueTask<TScope>(Task.FromException<TScope>(
new InvalidOperationException(SR.GetResourceString(SR.ID1245), exception)));
new InvalidOperationException(SR.GetResourceString(SR.ID0246), exception)));
}
}
@ -693,7 +693,7 @@ namespace OpenIddict.EntityFrameworkCore
// Reset the state of the entity to prevents future calls to SaveChangesAsync() from failing.
Context.Entry(scope).State = EntityState.Unchanged;
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1244), exception);
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0245), exception);
}
}

40
src/OpenIddict.EntityFrameworkCore/Stores/OpenIddictEntityFrameworkCoreTokenStore.cs

@ -171,7 +171,7 @@ namespace OpenIddict.EntityFrameworkCore
// Reset the state of the entity to prevents future calls to SaveChangesAsync() from failing.
Context.Entry(token).State = EntityState.Unchanged;
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1246), exception);
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0247), exception);
}
}
@ -180,12 +180,12 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
// Note: due to a bug in Entity Framework Core's query visitor, the authorizations can't be
@ -209,17 +209,17 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
// Note: due to a bug in Entity Framework Core's query visitor, the authorizations can't be
@ -244,22 +244,22 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1199), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0200), nameof(type));
}
// Note: due to a bug in Entity Framework Core's query visitor, the authorizations can't be
@ -283,7 +283,7 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
// Note: due to a bug in Entity Framework Core's query visitor, the tokens can't be
@ -304,7 +304,7 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
// Note: due to a bug in Entity Framework Core's query visitor, the tokens can't be
@ -325,7 +325,7 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var key = ConvertIdentifierFromString(identifier);
@ -340,7 +340,7 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
return await (from token in Tokens.Include(token => token.Application).Include(token => token.Authorization).AsTracking()
@ -353,7 +353,7 @@ namespace OpenIddict.EntityFrameworkCore
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
return (from token in Tokens.Include(token => token.Application).Include(token => token.Authorization).AsTracking()
@ -567,7 +567,7 @@ namespace OpenIddict.EntityFrameworkCore
catch (MemberAccessException exception)
{
return new ValueTask<TToken>(Task.FromException<TToken>(
new InvalidOperationException(SR.GetResourceString(SR.ID1247), exception)));
new InvalidOperationException(SR.GetResourceString(SR.ID0248), exception)));
}
}
@ -686,7 +686,7 @@ namespace OpenIddict.EntityFrameworkCore
if (exceptions is not null)
{
throw new AggregateException(SR.GetResourceString(SR.ID1248), exceptions);
throw new AggregateException(SR.GetResourceString(SR.ID0249), exceptions);
}
}
@ -709,7 +709,7 @@ namespace OpenIddict.EntityFrameworkCore
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1249));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0250));
}
token.Application = application;
@ -752,7 +752,7 @@ namespace OpenIddict.EntityFrameworkCore
if (authorization is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1250));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0251));
}
token.Authorization = authorization;
@ -932,7 +932,7 @@ namespace OpenIddict.EntityFrameworkCore
// Reset the state of the entity to prevents future calls to SaveChangesAsync() from failing.
Context.Entry(token).State = EntityState.Unchanged;
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1246), exception);
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0247), exception);
}
}

8
src/OpenIddict.MongoDb/OpenIddictMongoDbBuilder.cs

@ -107,7 +107,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1260), nameof(name));
throw new ArgumentException(SR.GetResourceString(SR.ID0261), nameof(name));
}
return Configure(options => options.ApplicationsCollectionName = name);
@ -122,7 +122,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1260), nameof(name));
throw new ArgumentException(SR.GetResourceString(SR.ID0261), nameof(name));
}
return Configure(options => options.AuthorizationsCollectionName = name);
@ -137,7 +137,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1260), nameof(name));
throw new ArgumentException(SR.GetResourceString(SR.ID0261), nameof(name));
}
return Configure(options => options.ScopesCollectionName = name);
@ -152,7 +152,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1260), nameof(name));
throw new ArgumentException(SR.GetResourceString(SR.ID0261), nameof(name));
}
return Configure(options => options.TokensCollectionName = name);

2
src/OpenIddict.MongoDb/OpenIddictMongoDbContext.cs

@ -45,7 +45,7 @@ namespace OpenIddict.MongoDb
if (database is null)
{
return new ValueTask<IMongoDatabase>(Task.FromException<IMongoDatabase>(
new InvalidOperationException(SR.GetResourceString(SR.ID1261))));
new InvalidOperationException(SR.GetResourceString(SR.ID0262))));
}
return new ValueTask<IMongoDatabase>(database);

2
src/OpenIddict.MongoDb/Resolvers/OpenIddictMongoDbApplicationStoreResolver.cs

@ -42,7 +42,7 @@ namespace OpenIddict.MongoDb
{
if (!typeof(OpenIddictMongoDbApplication).IsAssignableFrom(key))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1256));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0257));
}
return typeof(OpenIddictMongoDbApplicationStore<>).MakeGenericType(key);

2
src/OpenIddict.MongoDb/Resolvers/OpenIddictMongoDbAuthorizationStoreResolver.cs

@ -42,7 +42,7 @@ namespace OpenIddict.MongoDb
{
if (!typeof(OpenIddictMongoDbAuthorization).IsAssignableFrom(key))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1257));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0258));
}
return typeof(OpenIddictMongoDbAuthorizationStore<>).MakeGenericType(key);

2
src/OpenIddict.MongoDb/Resolvers/OpenIddictMongoDbScopeStoreResolver.cs

@ -42,7 +42,7 @@ namespace OpenIddict.MongoDb
{
if (!typeof(OpenIddictMongoDbScope).IsAssignableFrom(key))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1258));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0259));
}
return typeof(OpenIddictMongoDbScopeStore<>).MakeGenericType(key);

2
src/OpenIddict.MongoDb/Resolvers/OpenIddictMongoDbTokenStoreResolver.cs

@ -42,7 +42,7 @@ namespace OpenIddict.MongoDb
{
if (!typeof(OpenIddictMongoDbToken).IsAssignableFrom(key))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1259));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0260));
}
return typeof(OpenIddictMongoDbTokenStore<>).MakeGenericType(key);

14
src/OpenIddict.MongoDb/Stores/OpenIddictMongoDbApplicationStore.cs

@ -104,7 +104,7 @@ namespace OpenIddict.MongoDb
entity.Id == application.Id &&
entity.ConcurrencyToken == application.ConcurrencyToken)).DeletedCount == 0)
{
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1238));
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0239));
}
// Delete the authorizations associated with the application.
@ -121,7 +121,7 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var database = await Context.GetDatabaseAsync(cancellationToken);
@ -135,7 +135,7 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var database = await Context.GetDatabaseAsync(cancellationToken);
@ -151,7 +151,7 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(address))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1142), nameof(address));
throw new ArgumentException(SR.GetResourceString(SR.ID0143), nameof(address));
}
return ExecuteAsync(cancellationToken);
@ -175,7 +175,7 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(address))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1142), nameof(address));
throw new ArgumentException(SR.GetResourceString(SR.ID0143), nameof(address));
}
return ExecuteAsync(cancellationToken);
@ -393,7 +393,7 @@ namespace OpenIddict.MongoDb
catch (MemberAccessException exception)
{
return new ValueTask<TApplication>(Task.FromException<TApplication>(
new InvalidOperationException(SR.GetResourceString(SR.ID1239), exception)));
new InvalidOperationException(SR.GetResourceString(SR.ID0240), exception)));
}
}
@ -672,7 +672,7 @@ namespace OpenIddict.MongoDb
entity.Id == application.Id &&
entity.ConcurrencyToken == timestamp, application, null as ReplaceOptions, cancellationToken)).MatchedCount == 0)
{
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1238));
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0239));
}
}
}

38
src/OpenIddict.MongoDb/Stores/OpenIddictMongoDbAuthorizationStore.cs

@ -103,7 +103,7 @@ namespace OpenIddict.MongoDb
entity.Id == authorization.Id &&
entity.ConcurrencyToken == authorization.ConcurrencyToken)).DeletedCount == 0)
{
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1240));
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0241));
}
// Delete the tokens associated with the authorization.
@ -117,12 +117,12 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
return ExecuteAsync(cancellationToken);
@ -148,17 +148,17 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
return ExecuteAsync(cancellationToken);
@ -185,22 +185,22 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1199), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0200), nameof(type));
}
return ExecuteAsync(cancellationToken);
@ -229,22 +229,22 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1199), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0200), nameof(type));
}
return ExecuteAsync(cancellationToken);
@ -274,7 +274,7 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
return ExecuteAsync(cancellationToken);
@ -297,7 +297,7 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var database = await Context.GetDatabaseAsync(cancellationToken);
@ -313,7 +313,7 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
return ExecuteAsync(cancellationToken);
@ -469,7 +469,7 @@ namespace OpenIddict.MongoDb
catch (MemberAccessException exception)
{
return new ValueTask<TAuthorization>(Task.FromException<TAuthorization>(
new InvalidOperationException(SR.GetResourceString(SR.ID1241), exception)));
new InvalidOperationException(SR.GetResourceString(SR.ID0242), exception)));
}
}
@ -727,7 +727,7 @@ namespace OpenIddict.MongoDb
entity.Id == authorization.Id &&
entity.ConcurrencyToken == timestamp, authorization, null as ReplaceOptions, cancellationToken)).MatchedCount == 0)
{
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1240));
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0241));
}
}
}

14
src/OpenIddict.MongoDb/Stores/OpenIddictMongoDbScopeStore.cs

@ -104,7 +104,7 @@ namespace OpenIddict.MongoDb
entity.Id == scope.Id &&
entity.ConcurrencyToken == scope.ConcurrencyToken)).DeletedCount == 0)
{
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1244));
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0245));
}
}
@ -113,7 +113,7 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var database = await Context.GetDatabaseAsync(cancellationToken);
@ -127,7 +127,7 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(name))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1201), nameof(name));
throw new ArgumentException(SR.GetResourceString(SR.ID0202), nameof(name));
}
var database = await Context.GetDatabaseAsync(cancellationToken);
@ -141,7 +141,7 @@ namespace OpenIddict.MongoDb
{
if (names.Any(name => string.IsNullOrEmpty(name)))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1202), nameof(names));
throw new ArgumentException(SR.GetResourceString(SR.ID0203), nameof(names));
}
return ExecuteAsync(cancellationToken);
@ -165,7 +165,7 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(resource))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1061), nameof(resource));
throw new ArgumentException(SR.GetResourceString(SR.ID0062), nameof(resource));
}
return ExecuteAsync(cancellationToken);
@ -325,7 +325,7 @@ namespace OpenIddict.MongoDb
catch (MemberAccessException exception)
{
return new ValueTask<TScope>(Task.FromException<TScope>(
new InvalidOperationException(SR.GetResourceString(SR.ID1245), exception)));
new InvalidOperationException(SR.GetResourceString(SR.ID0246), exception)));
}
}
@ -524,7 +524,7 @@ namespace OpenIddict.MongoDb
entity.Id == scope.Id &&
entity.ConcurrencyToken == timestamp, scope, null as ReplaceOptions, cancellationToken)).MatchedCount == 0)
{
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1244));
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0245));
}
}
}

34
src/OpenIddict.MongoDb/Stores/OpenIddictMongoDbTokenStore.cs

@ -104,7 +104,7 @@ namespace OpenIddict.MongoDb
entity.Id == token.Id &&
entity.ConcurrencyToken == token.ConcurrencyToken)).DeletedCount == 0)
{
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1246));
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0247));
}
}
@ -114,12 +114,12 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
return ExecuteAsync(cancellationToken);
@ -145,17 +145,17 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
return ExecuteAsync(cancellationToken);
@ -182,22 +182,22 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
if (string.IsNullOrEmpty(client))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1123), nameof(client));
throw new ArgumentException(SR.GetResourceString(SR.ID0124), nameof(client));
}
if (string.IsNullOrEmpty(status))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1198), nameof(status));
throw new ArgumentException(SR.GetResourceString(SR.ID0199), nameof(status));
}
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1199), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0200), nameof(type));
}
return ExecuteAsync(cancellationToken);
@ -223,7 +223,7 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
return ExecuteAsync(cancellationToken);
@ -246,7 +246,7 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
return ExecuteAsync(cancellationToken);
@ -269,7 +269,7 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var database = await Context.GetDatabaseAsync(cancellationToken);
@ -283,7 +283,7 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(identifier))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1194), nameof(identifier));
throw new ArgumentException(SR.GetResourceString(SR.ID0195), nameof(identifier));
}
var database = await Context.GetDatabaseAsync(cancellationToken);
@ -297,7 +297,7 @@ namespace OpenIddict.MongoDb
{
if (string.IsNullOrEmpty(subject))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1197), nameof(subject));
throw new ArgumentException(SR.GetResourceString(SR.ID0198), nameof(subject));
}
return ExecuteAsync(cancellationToken);
@ -485,7 +485,7 @@ namespace OpenIddict.MongoDb
catch (MemberAccessException exception)
{
return new ValueTask<TToken>(Task.FromException<TToken>(
new InvalidOperationException(SR.GetResourceString(SR.ID1247), exception)));
new InvalidOperationException(SR.GetResourceString(SR.ID0248), exception)));
}
}
@ -781,7 +781,7 @@ namespace OpenIddict.MongoDb
entity.Id == token.Id &&
entity.ConcurrencyToken == timestamp, token, null as ReplaceOptions, cancellationToken)).MatchedCount == 0)
{
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID1246));
throw new OpenIddictExceptions.ConcurrencyException(SR.GetResourceString(SR.ID0247));
}
}
}

2
src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreBuilder.cs

@ -158,7 +158,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (string.IsNullOrEmpty(realm))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1106), nameof(realm));
throw new ArgumentException(SR.GetResourceString(SR.ID0107), nameof(realm));
}
return Configure(options => options.Realm = realm);

6
src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreConfiguration.cs

@ -35,7 +35,7 @@ namespace OpenIddict.Server.AspNetCore
if (options.SchemeMap.TryGetValue(OpenIddictServerAspNetCoreDefaults.AuthenticationScheme, out var builder) &&
builder.HandlerType != typeof(OpenIddictServerAspNetCoreHandler))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1107));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0108));
}
options.AddScheme<OpenIddictServerAspNetCoreHandler>(
@ -72,7 +72,7 @@ namespace OpenIddict.Server.AspNetCore
!TryValidate(options.SchemeMap, options.DefaultSignInScheme) ||
!TryValidate(options.SchemeMap, options.DefaultSignOutScheme))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1108));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0109));
}
static bool TryValidate(IDictionary<string, AuthenticationSchemeBuilder> map, string? scheme)
@ -102,7 +102,7 @@ namespace OpenIddict.Server.AspNetCore
if (options.EnableErrorPassthrough && options.EnableStatusCodePagesIntegration)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1109));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0110));
}
}
}

24
src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandler.cs

@ -102,7 +102,7 @@ namespace OpenIddict.Server.AspNetCore
return false;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1110));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0111));
}
return false;
@ -112,7 +112,7 @@ namespace OpenIddict.Server.AspNetCore
protected override async Task<AuthenticateResult> HandleAuthenticateAsync()
{
var transaction = Context.Features.Get<OpenIddictServerAspNetCoreFeature>()?.Transaction ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1111));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0112));
// Note: in many cases, the authentication token was already validated by the time this action is called
// (generally later in the pipeline, when using the pass-through mode). To avoid having to re-validate it,
@ -150,14 +150,14 @@ namespace OpenIddict.Server.AspNetCore
[OpenIddictServerAspNetCoreConstants.Properties.ErrorUri] = context.ErrorUri
});
return AuthenticateResult.Fail(SR.GetResourceString(SR.ID1112), properties);
return AuthenticateResult.Fail(SR.GetResourceString(SR.ID0113), properties);
}
else
{
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID5006));
Debug.Assert(!string.IsNullOrEmpty(context.Principal.GetTokenType()), SR.GetResourceString(SR.ID5009));
Debug.Assert(!string.IsNullOrEmpty(context.Token), SR.GetResourceString(SR.ID5010));
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID4006));
Debug.Assert(!string.IsNullOrEmpty(context.Principal.GetTokenType()), SR.GetResourceString(SR.ID4009));
Debug.Assert(!string.IsNullOrEmpty(context.Token), SR.GetResourceString(SR.ID4010));
// Store the token to allow any OWIN/Katana component (e.g a controller)
// to retrieve it (e.g to make an API request to another application).
@ -181,7 +181,7 @@ namespace OpenIddict.Server.AspNetCore
protected override async Task HandleChallengeAsync(AuthenticationProperties? properties)
{
var transaction = Context.Features.Get<OpenIddictServerAspNetCoreFeature>()?.Transaction ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1111));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0112));
transaction.Properties[typeof(AuthenticationProperties).FullName!] = properties ?? new AuthenticationProperties();
@ -216,7 +216,7 @@ namespace OpenIddict.Server.AspNetCore
return;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1110));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0111));
}
}
@ -233,7 +233,7 @@ namespace OpenIddict.Server.AspNetCore
}
var transaction = Context.Features.Get<OpenIddictServerAspNetCoreFeature>()?.Transaction ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1111));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0112));
transaction.Properties[typeof(AuthenticationProperties).FullName!] = properties ?? new AuthenticationProperties();
@ -269,7 +269,7 @@ namespace OpenIddict.Server.AspNetCore
return;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1110));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0111));
}
}
@ -277,7 +277,7 @@ namespace OpenIddict.Server.AspNetCore
public async Task SignOutAsync(AuthenticationProperties? properties)
{
var transaction = Context.Features.Get<OpenIddictServerAspNetCoreFeature>()?.Transaction ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1111));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0112));
var context = new ProcessSignOutContext(transaction)
{
@ -312,7 +312,7 @@ namespace OpenIddict.Server.AspNetCore
return;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1110));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0111));
}
}
}

34
src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Authentication.cs

@ -70,7 +70,7 @@ namespace OpenIddict.Server.AspNetCore
{
private readonly IDistributedCache _cache;
public RestoreCachedRequestParameters() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1115));
public RestoreCachedRequestParameters() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0116));
public RestoreCachedRequestParameters(IDistributedCache cache)
=> _cache = cache;
@ -95,7 +95,7 @@ namespace OpenIddict.Server.AspNetCore
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Request is not null, SR.GetResourceString(SR.ID5008));
Debug.Assert(context.Request is not null, SR.GetResourceString(SR.ID4008));
// If a request_id parameter can be found in the authorization request,
// restore the complete authorization request from the distributed cache.
@ -110,11 +110,11 @@ namespace OpenIddict.Server.AspNetCore
var token = await _cache.GetStringAsync(Cache.AuthorizationRequest + context.Request.RequestId);
if (token is null || !context.Options.JsonWebTokenHandler.CanReadToken(token))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7146), Parameters.RequestId);
context.Logger.LogError(SR.GetResourceString(SR.ID6146), Parameters.RequestId);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3052, Parameters.RequestId]);
description: context.Localizer[SR.ID2052, Parameters.RequestId]);
return;
}
@ -127,11 +127,11 @@ namespace OpenIddict.Server.AspNetCore
var result = context.Options.JsonWebTokenHandler.ValidateToken(token, parameters);
if (!result.IsValid)
{
context.Logger.LogError(SR.GetResourceString(SR.ID7146), Parameters.RequestId);
context.Logger.LogError(SR.GetResourceString(SR.ID6146), Parameters.RequestId);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3052, Parameters.RequestId]);
description: context.Localizer[SR.ID2052, Parameters.RequestId]);
return;
}
@ -140,7 +140,7 @@ namespace OpenIddict.Server.AspNetCore
Base64UrlEncoder.Decode(((JsonWebToken) result.SecurityToken).InnerToken.EncodedPayload));
if (document.RootElement.ValueKind != JsonValueKind.Object)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1116));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0117));
}
// Restore the authorization request parameters from the serialized payload.
@ -166,7 +166,7 @@ namespace OpenIddict.Server.AspNetCore
private readonly IDistributedCache _cache;
private readonly IOptionsMonitor<OpenIddictServerAspNetCoreOptions> _options;
public CacheRequestParameters() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1115));
public CacheRequestParameters() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0116));
public CacheRequestParameters(
IDistributedCache cache,
@ -196,14 +196,14 @@ namespace OpenIddict.Server.AspNetCore
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Request is not null, SR.GetResourceString(SR.ID5008));
Debug.Assert(context.Request is not null, SR.GetResourceString(SR.ID4008));
// This handler only applies to ASP.NET Core requests. If the HTTP context cannot be resolved,
// this may indicate that the request was incorrectly processed by another server stack.
var request = context.Transaction.GetHttpRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
// Don't cache the request if the request doesn't include any parameter.
@ -275,7 +275,7 @@ namespace OpenIddict.Server.AspNetCore
{
private readonly IDistributedCache _cache;
public RemoveCachedRequest() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1115));
public RemoveCachedRequest() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0116));
public RemoveCachedRequest(IDistributedCache cache)
=> _cache = cache;
@ -350,7 +350,7 @@ namespace OpenIddict.Server.AspNetCore
var response = context.Transaction.GetHttpRequest()?.HttpContext.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
if (string.IsNullOrEmpty(context.RedirectUri) ||
@ -359,7 +359,7 @@ namespace OpenIddict.Server.AspNetCore
return;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7147), context.RedirectUri, context.Response);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6147), context.RedirectUri, context.Response);
using (var buffer = new MemoryStream())
using (var writer = new StreamWriter(buffer))
@ -440,7 +440,7 @@ namespace OpenIddict.Server.AspNetCore
var response = context.Transaction.GetHttpRequest()?.HttpContext.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
if (string.IsNullOrEmpty(context.RedirectUri) ||
@ -449,7 +449,7 @@ namespace OpenIddict.Server.AspNetCore
return default;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7148), context.RedirectUri, context.Response);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6148), context.RedirectUri, context.Response);
var location = context.RedirectUri;
@ -504,7 +504,7 @@ namespace OpenIddict.Server.AspNetCore
var response = context.Transaction.GetHttpRequest()?.HttpContext.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
if (string.IsNullOrEmpty(context.RedirectUri) ||
@ -513,7 +513,7 @@ namespace OpenIddict.Server.AspNetCore
return default;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7149), context.RedirectUri, context.Response);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6149), context.RedirectUri, context.Response);
var builder = new StringBuilder(context.RedirectUri);

26
src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.Session.cs

@ -67,7 +67,7 @@ namespace OpenIddict.Server.AspNetCore
{
private readonly IDistributedCache _cache;
public RestoreCachedRequestParameters() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1115));
public RestoreCachedRequestParameters() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0116));
public RestoreCachedRequestParameters(IDistributedCache cache)
=> _cache = cache;
@ -92,7 +92,7 @@ namespace OpenIddict.Server.AspNetCore
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Request is not null, SR.GetResourceString(SR.ID5008));
Debug.Assert(context.Request is not null, SR.GetResourceString(SR.ID4008));
// If a request_id parameter can be found in the logout request,
// restore the complete logout request from the distributed cache.
@ -107,11 +107,11 @@ namespace OpenIddict.Server.AspNetCore
var token = await _cache.GetStringAsync(Cache.LogoutRequest + context.Request.RequestId);
if (token is null || !context.Options.JsonWebTokenHandler.CanReadToken(token))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7150), Parameters.RequestId);
context.Logger.LogError(SR.GetResourceString(SR.ID6150), Parameters.RequestId);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3052, Parameters.RequestId]);
description: context.Localizer[SR.ID2052, Parameters.RequestId]);
return;
}
@ -124,11 +124,11 @@ namespace OpenIddict.Server.AspNetCore
var result = context.Options.JsonWebTokenHandler.ValidateToken(token, parameters);
if (!result.IsValid)
{
context.Logger.LogError(SR.GetResourceString(SR.ID7150), Parameters.RequestId);
context.Logger.LogError(SR.GetResourceString(SR.ID6150), Parameters.RequestId);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3052, Parameters.RequestId]);
description: context.Localizer[SR.ID2052, Parameters.RequestId]);
return;
}
@ -137,7 +137,7 @@ namespace OpenIddict.Server.AspNetCore
Base64UrlEncoder.Decode(((JsonWebToken) result.SecurityToken).InnerToken.EncodedPayload));
if (document.RootElement.ValueKind != JsonValueKind.Object)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1117));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0118));
}
// Restore the authorization request parameters from the serialized payload.
@ -163,7 +163,7 @@ namespace OpenIddict.Server.AspNetCore
private readonly IDistributedCache _cache;
private readonly IOptionsMonitor<OpenIddictServerAspNetCoreOptions> _options;
public CacheRequestParameters() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1115));
public CacheRequestParameters() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0116));
public CacheRequestParameters(
IDistributedCache cache,
@ -193,14 +193,14 @@ namespace OpenIddict.Server.AspNetCore
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Request is not null, SR.GetResourceString(SR.ID5008));
Debug.Assert(context.Request is not null, SR.GetResourceString(SR.ID4008));
// This handler only applies to ASP.NET Core requests. If the HTTP context cannot be resolved,
// this may indicate that the request was incorrectly processed by another server stack.
var request = context.Transaction.GetHttpRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
// Don't cache the request if the request doesn't include any parameter.
@ -272,7 +272,7 @@ namespace OpenIddict.Server.AspNetCore
{
private readonly IDistributedCache _cache;
public RemoveCachedRequest() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1115));
public RemoveCachedRequest() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0116));
public RemoveCachedRequest(IDistributedCache cache)
=> _cache = cache;
@ -342,7 +342,7 @@ namespace OpenIddict.Server.AspNetCore
var response = context.Transaction.GetHttpRequest()?.HttpContext.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
if (string.IsNullOrEmpty(context.PostLogoutRedirectUri))
@ -350,7 +350,7 @@ namespace OpenIddict.Server.AspNetCore
return default;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7151), context.PostLogoutRedirectUri, response);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6151), context.PostLogoutRedirectUri, response);
var location = context.PostLogoutRedirectUri;

108
src/OpenIddict.Server.AspNetCore/OpenIddictServerAspNetCoreHandlers.cs

@ -97,7 +97,7 @@ namespace OpenIddict.Server.AspNetCore
var request = context.Transaction.GetHttpRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
context.EndpointType =
@ -115,7 +115,7 @@ namespace OpenIddict.Server.AspNetCore
if (context.EndpointType != OpenIddictServerEndpointType.Unknown)
{
context.Logger.LogInformation(SR.GetResourceString(SR.ID7053), context.EndpointType);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6053), context.EndpointType);
}
return default;
@ -199,7 +199,7 @@ namespace OpenIddict.Server.AspNetCore
var request = context.Transaction.GetHttpRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
// Don't require that the request host be present if the request is not handled
@ -213,7 +213,7 @@ namespace OpenIddict.Server.AspNetCore
{
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3081, HeaderNames.Host]);
description: context.Localizer[SR.ID2081, HeaderNames.Host]);
return default;
}
@ -223,7 +223,7 @@ namespace OpenIddict.Server.AspNetCore
{
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3082, HeaderNames.Host]);
description: context.Localizer[SR.ID2082, HeaderNames.Host]);
return default;
}
@ -265,7 +265,7 @@ namespace OpenIddict.Server.AspNetCore
var request = context.Transaction.GetHttpRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
// Don't require that the host be present if the request is not handled by OpenIddict.
@ -279,7 +279,7 @@ namespace OpenIddict.Server.AspNetCore
{
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3083]);
description: context.Localizer[SR.ID2083]);
return default;
}
@ -351,7 +351,7 @@ namespace OpenIddict.Server.AspNetCore
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID5007));
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID4007));
var properties = context.Transaction.GetProperty<AuthenticationProperties>(typeof(AuthenticationProperties).FullName!);
if (properties is null)
@ -372,7 +372,7 @@ namespace OpenIddict.Server.AspNetCore
string value => value,
string[] value => value,
_ => throw new InvalidOperationException(SR.GetResourceString(SR.ID1114))
_ => throw new InvalidOperationException(SR.GetResourceString(SR.ID0115))
});
}
@ -410,7 +410,7 @@ namespace OpenIddict.Server.AspNetCore
var request = context.Transaction.GetHttpRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
if (HttpMethods.IsGet(request.Method))
@ -420,11 +420,11 @@ namespace OpenIddict.Server.AspNetCore
else
{
context.Logger.LogError(SR.GetResourceString(SR.ID7137), request.Method);
context.Logger.LogError(SR.GetResourceString(SR.ID6137), request.Method);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3084]);
description: context.Localizer[SR.ID2084]);
return default;
}
@ -463,7 +463,7 @@ namespace OpenIddict.Server.AspNetCore
var request = context.Transaction.GetHttpRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
if (HttpMethods.IsGet(request.Method))
@ -476,11 +476,11 @@ namespace OpenIddict.Server.AspNetCore
// See http://openid.net/specs/openid-connect-core-1_0.html#FormSerialization
if (string.IsNullOrEmpty(request.ContentType))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7138), HeaderNames.ContentType);
context.Logger.LogError(SR.GetResourceString(SR.ID6138), HeaderNames.ContentType);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3081, HeaderNames.ContentType]);
description: context.Localizer[SR.ID2081, HeaderNames.ContentType]);
return;
}
@ -488,11 +488,11 @@ namespace OpenIddict.Server.AspNetCore
// May have media/type; charset=utf-8, allow partial match.
if (!request.ContentType.StartsWith("application/x-www-form-urlencoded", StringComparison.OrdinalIgnoreCase))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7139), HeaderNames.ContentType, request.ContentType);
context.Logger.LogError(SR.GetResourceString(SR.ID6139), HeaderNames.ContentType, request.ContentType);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3082, HeaderNames.ContentType]);
description: context.Localizer[SR.ID2082, HeaderNames.ContentType]);
return;
}
@ -502,11 +502,11 @@ namespace OpenIddict.Server.AspNetCore
else
{
context.Logger.LogError(SR.GetResourceString(SR.ID7137), request.Method);
context.Logger.LogError(SR.GetResourceString(SR.ID6137), request.Method);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3084]);
description: context.Localizer[SR.ID2084]);
return;
}
@ -543,7 +543,7 @@ namespace OpenIddict.Server.AspNetCore
var request = context.Transaction.GetHttpRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
if (HttpMethods.IsPost(request.Method))
@ -551,11 +551,11 @@ namespace OpenIddict.Server.AspNetCore
// See http://openid.net/specs/openid-connect-core-1_0.html#FormSerialization
if (string.IsNullOrEmpty(request.ContentType))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7138), HeaderNames.ContentType);
context.Logger.LogError(SR.GetResourceString(SR.ID6138), HeaderNames.ContentType);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3081, HeaderNames.ContentType]);
description: context.Localizer[SR.ID2081, HeaderNames.ContentType]);
return;
}
@ -563,11 +563,11 @@ namespace OpenIddict.Server.AspNetCore
// May have media/type; charset=utf-8, allow partial match.
if (!request.ContentType.StartsWith("application/x-www-form-urlencoded", StringComparison.OrdinalIgnoreCase))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7139), HeaderNames.ContentType, request.ContentType);
context.Logger.LogError(SR.GetResourceString(SR.ID6139), HeaderNames.ContentType, request.ContentType);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3082, HeaderNames.ContentType]);
description: context.Localizer[SR.ID2082, HeaderNames.ContentType]);
return;
}
@ -577,11 +577,11 @@ namespace OpenIddict.Server.AspNetCore
else
{
context.Logger.LogError(SR.GetResourceString(SR.ID7137), request.Method);
context.Logger.LogError(SR.GetResourceString(SR.ID6137), request.Method);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3084]);
description: context.Localizer[SR.ID2084]);
return;
}
@ -614,14 +614,14 @@ namespace OpenIddict.Server.AspNetCore
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Transaction.Request is not null, SR.GetResourceString(SR.ID5008));
Debug.Assert(context.Transaction.Request is not null, SR.GetResourceString(SR.ID4008));
// This handler only applies to ASP.NET Core requests. If the HTTP context cannot be resolved,
// this may indicate that the request was incorrectly processed by another server stack.
var request = context.Transaction.GetHttpRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
string header = request.Headers[HeaderNames.Authorization];
@ -635,11 +635,11 @@ namespace OpenIddict.Server.AspNetCore
if (!string.IsNullOrEmpty(context.Transaction.Request.ClientAssertion) ||
!string.IsNullOrEmpty(context.Transaction.Request.ClientSecret))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7140));
context.Logger.LogError(SR.GetResourceString(SR.ID6140));
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3087]);
description: context.Localizer[SR.ID2087]);
return default;
}
@ -654,7 +654,7 @@ namespace OpenIddict.Server.AspNetCore
{
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3055]);
description: context.Localizer[SR.ID2055]);
return default;
}
@ -670,7 +670,7 @@ namespace OpenIddict.Server.AspNetCore
{
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3055]);
description: context.Localizer[SR.ID2055]);
return default;
}
@ -718,10 +718,10 @@ namespace OpenIddict.Server.AspNetCore
var request = context.Transaction.GetHttpRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
Debug.Assert(context.Transaction.Request is not null, SR.GetResourceString(SR.ID5008));
Debug.Assert(context.Transaction.Request is not null, SR.GetResourceString(SR.ID4008));
string header = request.Headers[HeaderNames.Authorization];
if (string.IsNullOrEmpty(header) || !header.StartsWith("Bearer ", StringComparison.OrdinalIgnoreCase))
@ -800,10 +800,10 @@ namespace OpenIddict.Server.AspNetCore
var response = context.Transaction.GetHttpRequest()?.HttpContext.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID5007));
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID4007));
// When client authentication is made using basic authentication, the authorization server MUST return
// a 401 response with a valid WWW-Authenticate header containing the Basic scheme and a non-empty realm.
@ -860,7 +860,7 @@ namespace OpenIddict.Server.AspNetCore
var response = context.Transaction.GetHttpRequest()?.HttpContext.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
// Prevent the response from being cached.
@ -907,10 +907,10 @@ namespace OpenIddict.Server.AspNetCore
var response = context.Transaction.GetHttpRequest()?.HttpContext.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID5007));
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID4007));
// When client authentication is made using basic authentication, the authorization server MUST return
// a 401 response with a valid WWW-Authenticate header containing the HTTP Basic authentication scheme.
@ -1021,7 +1021,7 @@ namespace OpenIddict.Server.AspNetCore
var response = context.Transaction.GetHttpRequest()?.HttpContext.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
// If the response doesn't contain a WWW-Authenticate header, don't return an empty response.
@ -1030,7 +1030,7 @@ namespace OpenIddict.Server.AspNetCore
return default;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7141), context.Transaction.Response);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6141), context.Transaction.Response);
context.HandleRequest();
return default;
@ -1062,17 +1062,17 @@ namespace OpenIddict.Server.AspNetCore
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID5007));
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID4007));
// This handler only applies to ASP.NET Core requests. If the HTTP context cannot be resolved,
// this may indicate that the request was incorrectly processed by another server stack.
var response = context.Transaction.GetHttpRequest()?.HttpContext.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7142), context.Transaction.Response);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6142), context.Transaction.Response);
using var stream = new MemoryStream();
using var writer = new Utf8JsonWriter(stream, new JsonWriterOptions
@ -1129,10 +1129,10 @@ namespace OpenIddict.Server.AspNetCore
var response = context.Transaction.GetHttpRequest()?.HttpContext.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID5007));
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID4007));
if (string.IsNullOrEmpty(context.Transaction.Response.Error))
{
@ -1177,10 +1177,10 @@ namespace OpenIddict.Server.AspNetCore
var response = context.Transaction.GetHttpRequest()?.HttpContext.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID5007));
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID4007));
if (string.IsNullOrEmpty(context.Transaction.Response.Error))
{
@ -1236,10 +1236,10 @@ namespace OpenIddict.Server.AspNetCore
var response = context.Transaction.GetHttpRequest()?.HttpContext.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID5007));
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID4007));
if (string.IsNullOrEmpty(context.Transaction.Response.Error))
{
@ -1249,7 +1249,7 @@ namespace OpenIddict.Server.AspNetCore
// Don't return the state originally sent by the client application.
context.Transaction.Response.State = null;
context.Logger.LogInformation(SR.GetResourceString(SR.ID7143), context.Transaction.Response);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6143), context.Transaction.Response);
using var stream = new MemoryStream();
using var writer = new StreamWriter(stream);
@ -1313,7 +1313,7 @@ namespace OpenIddict.Server.AspNetCore
var response = context.Transaction.GetHttpRequest()?.HttpContext.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
var properties = context.Transaction.GetProperty<AuthenticationProperties>(typeof(AuthenticationProperties).FullName!);
@ -1321,7 +1321,7 @@ namespace OpenIddict.Server.AspNetCore
{
response.Redirect(properties.RedirectUri);
context.Logger.LogInformation(SR.GetResourceString(SR.ID7144));
context.Logger.LogInformation(SR.GetResourceString(SR.ID6144));
context.HandleRequest();
}
@ -1355,7 +1355,7 @@ namespace OpenIddict.Server.AspNetCore
throw new ArgumentNullException(nameof(context));
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7145));
context.Logger.LogInformation(SR.GetResourceString(SR.ID6145));
context.HandleRequest();
return default;

28
src/OpenIddict.Server.DataProtection/OpenIddictServerDataProtectionHandlers.cs

@ -102,14 +102,14 @@ namespace OpenIddict.Server.DataProtection
OpenIddictServerEndpointType.Token => Errors.InvalidGrant,
_ => Errors.InvalidToken
},
description: context.Localizer[SR.ID3004]);
description: context.Localizer[SR.ID2004]);
return default;
}
context.Principal = principal;
context.Logger.LogTrace(SR.GetResourceString(SR.ID7152), context.Token, context.Principal.Claims);
context.Logger.LogTrace(SR.GetResourceString(SR.ID6152), context.Token, context.Principal.Claims);
return default;
@ -139,7 +139,7 @@ namespace OpenIddict.Server.DataProtection
TokenTypeHints.RefreshToken => new[] { Handlers.Server, Formats.RefreshToken, Schemes.Server },
TokenTypeHints.UserCode => new[] { Handlers.Server, Formats.UserCode, Schemes.Server },
_ => throw new InvalidOperationException(SR.GetResourceString(SR.ID1002))
_ => throw new InvalidOperationException(SR.GetResourceString(SR.ID0003))
});
try
@ -154,7 +154,7 @@ namespace OpenIddict.Server.DataProtection
catch (Exception exception)
{
context.Logger.LogTrace(exception, SR.GetResourceString(SR.ID7153), token);
context.Logger.LogTrace(exception, SR.GetResourceString(SR.ID6153), token);
return null;
}
@ -200,7 +200,7 @@ namespace OpenIddict.Server.DataProtection
if (context.AccessTokenPrincipal is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1021));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0022));
}
// Create a Data Protection protector using the provider registered in the options.
@ -217,7 +217,7 @@ namespace OpenIddict.Server.DataProtection
context.Response.AccessToken = Base64UrlEncoder.Encode(protector.Protect(buffer.ToArray()));
context.Logger.LogTrace(SR.GetResourceString(SR.ID7013),
context.Logger.LogTrace(SR.GetResourceString(SR.ID6013),
context.AccessTokenPrincipal.GetClaim(Claims.JwtId),
context.Response.AccessToken, context.AccessTokenPrincipal.Claims);
@ -263,7 +263,7 @@ namespace OpenIddict.Server.DataProtection
if (context.AuthorizationCodePrincipal is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1021));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0022));
}
// Create a Data Protection protector using the provider registered in the options.
@ -280,7 +280,7 @@ namespace OpenIddict.Server.DataProtection
context.Response.Code = Base64UrlEncoder.Encode(protector.Protect(buffer.ToArray()));
context.Logger.LogTrace(SR.GetResourceString(SR.ID7016),
context.Logger.LogTrace(SR.GetResourceString(SR.ID6016),
context.AuthorizationCodePrincipal.GetClaim(Claims.JwtId),
context.Response.Code, context.AuthorizationCodePrincipal.Claims);
@ -326,7 +326,7 @@ namespace OpenIddict.Server.DataProtection
if (context.DeviceCodePrincipal is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1021));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0022));
}
// Create a Data Protection protector using the provider registered in the options.
@ -343,7 +343,7 @@ namespace OpenIddict.Server.DataProtection
context.Response.DeviceCode = Base64UrlEncoder.Encode(protector.Protect(buffer.ToArray()));
context.Logger.LogTrace(SR.GetResourceString(SR.ID7019),
context.Logger.LogTrace(SR.GetResourceString(SR.ID6019),
context.DeviceCodePrincipal.GetClaim(Claims.JwtId),
context.Response.DeviceCode, context.DeviceCodePrincipal.Claims);
@ -389,7 +389,7 @@ namespace OpenIddict.Server.DataProtection
if (context.RefreshTokenPrincipal is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1021));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0022));
}
// Create a Data Protection protector using the provider registered in the options.
@ -406,7 +406,7 @@ namespace OpenIddict.Server.DataProtection
context.Response.RefreshToken = Base64UrlEncoder.Encode(protector.Protect(buffer.ToArray()));
context.Logger.LogTrace(SR.GetResourceString(SR.ID7023),
context.Logger.LogTrace(SR.GetResourceString(SR.ID6023),
context.RefreshTokenPrincipal.GetClaim(Claims.JwtId),
context.Response.RefreshToken, context.RefreshTokenPrincipal.Claims);
@ -452,7 +452,7 @@ namespace OpenIddict.Server.DataProtection
if (context.UserCodePrincipal is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1021));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0022));
}
// Create a Data Protection protector using the provider registered in the options.
@ -469,7 +469,7 @@ namespace OpenIddict.Server.DataProtection
context.Response.UserCode = Base64UrlEncoder.Encode(protector.Protect(buffer.ToArray()));
context.Logger.LogTrace(SR.GetResourceString(SR.ID7026),
context.Logger.LogTrace(SR.GetResourceString(SR.ID6026),
context.UserCodePrincipal.GetClaim(Claims.JwtId),
context.Response.UserCode, context.UserCodePrincipal.Claims);

2
src/OpenIddict.Server.Owin/OpenIddictServerOwinBuilder.cs

@ -147,7 +147,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (string.IsNullOrEmpty(realm))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1106), nameof(realm));
throw new ArgumentException(SR.GetResourceString(SR.ID0107), nameof(realm));
}
return Configure(options => options.Realm = realm);

2
src/OpenIddict.Server.Owin/OpenIddictServerOwinConfiguration.cs

@ -37,7 +37,7 @@ namespace OpenIddict.Server.Owin
if (options.AuthenticationMode == AuthenticationMode.Active)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1118));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0119));
}
}
}

26
src/OpenIddict.Server.Owin/OpenIddictServerOwinHandler.cs

@ -72,10 +72,10 @@ namespace OpenIddict.Server.Owin
// active authentication is used, as AuthenticateCoreAsync() is always called before InvokeAsync() in this case.
var transaction = Context.Get<OpenIddictServerTransaction>(typeof(OpenIddictServerTransaction).FullName) ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1111));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0112));
var context = transaction.GetProperty<ProcessRequestContext>(typeof(ProcessRequestContext).FullName!) ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1111));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0112));
if (context.IsRequestHandled)
{
@ -110,7 +110,7 @@ namespace OpenIddict.Server.Owin
{
return false;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1110));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0111));
}
@ -123,7 +123,7 @@ namespace OpenIddict.Server.Owin
var transaction = Context.Get<OpenIddictServerTransaction>(typeof(OpenIddictServerTransaction).FullName);
if (transaction is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1111));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0112));
}
// Note: in many cases, the authentication token was already validated by the time this action is called
@ -167,9 +167,9 @@ namespace OpenIddict.Server.Owin
else
{
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID5006));
Debug.Assert(!string.IsNullOrEmpty(context.Principal.GetTokenType()), SR.GetResourceString(SR.ID5009));
Debug.Assert(!string.IsNullOrEmpty(context.Token), SR.GetResourceString(SR.ID5010));
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID4006));
Debug.Assert(!string.IsNullOrEmpty(context.Principal.GetTokenType()), SR.GetResourceString(SR.ID4009));
Debug.Assert(!string.IsNullOrEmpty(context.Token), SR.GetResourceString(SR.ID4010));
// Store the token to allow any OWIN/Katana component (e.g a controller)
// to retrieve it (e.g to make an API request to another application).
@ -204,7 +204,7 @@ namespace OpenIddict.Server.Owin
if (challenge is not null && (Response.StatusCode == 401 || Response.StatusCode == 403))
{
var transaction = Context.Get<OpenIddictServerTransaction>(typeof(OpenIddictServerTransaction).FullName) ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1111));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0112));
transaction.Properties[typeof(AuthenticationProperties).FullName!] = challenge.Properties ?? new AuthenticationProperties();
@ -239,7 +239,7 @@ namespace OpenIddict.Server.Owin
return;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1110));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0111));
}
}
@ -247,7 +247,7 @@ namespace OpenIddict.Server.Owin
if (signin is not null)
{
var transaction = Context.Get<OpenIddictServerTransaction>(typeof(OpenIddictServerTransaction).FullName) ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1111));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0112));
transaction.Properties[typeof(AuthenticationProperties).FullName!] = signin.Properties ?? new AuthenticationProperties();
@ -283,7 +283,7 @@ namespace OpenIddict.Server.Owin
return;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1110));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0111));
}
}
@ -291,7 +291,7 @@ namespace OpenIddict.Server.Owin
if (signout is not null)
{
var transaction = Context.Get<OpenIddictServerTransaction>(typeof(OpenIddictServerTransaction).FullName) ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1111));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0112));
transaction.Properties[typeof(AuthenticationProperties).FullName!] = signout.Properties ?? new AuthenticationProperties();
@ -326,7 +326,7 @@ namespace OpenIddict.Server.Owin
return;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1110));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0111));
}
}
}

34
src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Authentication.cs

@ -69,7 +69,7 @@ namespace OpenIddict.Server.Owin
{
private readonly IDistributedCache _cache;
public RestoreCachedRequestParameters() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1115));
public RestoreCachedRequestParameters() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0116));
public RestoreCachedRequestParameters(IDistributedCache cache)
=> _cache = cache;
@ -94,7 +94,7 @@ namespace OpenIddict.Server.Owin
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Request is not null, SR.GetResourceString(SR.ID5008));
Debug.Assert(context.Request is not null, SR.GetResourceString(SR.ID4008));
// If a request_id parameter can be found in the authorization request,
// restore the complete authorization request from the distributed cache.
@ -109,11 +109,11 @@ namespace OpenIddict.Server.Owin
var token = await _cache.GetStringAsync(Cache.AuthorizationRequest + context.Request.RequestId);
if (token is null || !context.Options.JsonWebTokenHandler.CanReadToken(token))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7146), Parameters.RequestId);
context.Logger.LogError(SR.GetResourceString(SR.ID6146), Parameters.RequestId);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3052, Parameters.RequestId]);
description: context.Localizer[SR.ID2052, Parameters.RequestId]);
return;
}
@ -126,11 +126,11 @@ namespace OpenIddict.Server.Owin
var result = context.Options.JsonWebTokenHandler.ValidateToken(token, parameters);
if (!result.IsValid)
{
context.Logger.LogError(SR.GetResourceString(SR.ID7146), Parameters.RequestId);
context.Logger.LogError(SR.GetResourceString(SR.ID6146), Parameters.RequestId);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3052, Parameters.RequestId]);
description: context.Localizer[SR.ID2052, Parameters.RequestId]);
return;
}
@ -139,7 +139,7 @@ namespace OpenIddict.Server.Owin
Base64UrlEncoder.Decode(((JsonWebToken) result.SecurityToken).InnerToken.EncodedPayload));
if (document.RootElement.ValueKind != JsonValueKind.Object)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1116));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0117));
}
// Restore the authorization request parameters from the serialized payload.
@ -165,7 +165,7 @@ namespace OpenIddict.Server.Owin
private readonly IDistributedCache _cache;
private readonly IOptionsMonitor<OpenIddictServerOwinOptions> _options;
public CacheRequestParameters() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1115));
public CacheRequestParameters() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0116));
public CacheRequestParameters(
IDistributedCache cache,
@ -195,14 +195,14 @@ namespace OpenIddict.Server.Owin
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Request is not null, SR.GetResourceString(SR.ID5008));
Debug.Assert(context.Request is not null, SR.GetResourceString(SR.ID4008));
// This handler only applies to OWIN requests. If The OWIN request cannot be resolved,
// this may indicate that the request was incorrectly processed by another server stack.
var request = context.Transaction.GetOwinRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
// Don't cache the request if the request doesn't include any parameter.
@ -269,7 +269,7 @@ namespace OpenIddict.Server.Owin
{
private readonly IDistributedCache _cache;
public RemoveCachedRequest() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1115));
public RemoveCachedRequest() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0116));
public RemoveCachedRequest(IDistributedCache cache)
=> _cache = cache;
@ -344,7 +344,7 @@ namespace OpenIddict.Server.Owin
var response = context.Transaction.GetOwinRequest()?.Context.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
if (string.IsNullOrEmpty(context.RedirectUri) ||
@ -353,7 +353,7 @@ namespace OpenIddict.Server.Owin
return;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7147), context.RedirectUri, context.Response);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6147), context.RedirectUri, context.Response);
using (var buffer = new MemoryStream())
using (var writer = new StreamWriter(buffer))
@ -435,7 +435,7 @@ namespace OpenIddict.Server.Owin
var response = context.Transaction.GetOwinRequest()?.Context.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
if (string.IsNullOrEmpty(context.RedirectUri) ||
@ -444,7 +444,7 @@ namespace OpenIddict.Server.Owin
return default;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7148), context.RedirectUri, context.Response);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6148), context.RedirectUri, context.Response);
var location = context.RedirectUri;
@ -499,7 +499,7 @@ namespace OpenIddict.Server.Owin
var response = context.Transaction.GetOwinRequest()?.Context.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
if (string.IsNullOrEmpty(context.RedirectUri) ||
@ -508,7 +508,7 @@ namespace OpenIddict.Server.Owin
return default;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7149), context.RedirectUri, context.Response);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6149), context.RedirectUri, context.Response);
var builder = new StringBuilder(context.RedirectUri);

26
src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.Session.cs

@ -66,7 +66,7 @@ namespace OpenIddict.Server.Owin
{
private readonly IDistributedCache _cache;
public RestoreCachedRequestParameters() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1115));
public RestoreCachedRequestParameters() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0116));
public RestoreCachedRequestParameters(IDistributedCache cache)
=> _cache = cache;
@ -91,7 +91,7 @@ namespace OpenIddict.Server.Owin
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Request is not null, SR.GetResourceString(SR.ID5008));
Debug.Assert(context.Request is not null, SR.GetResourceString(SR.ID4008));
// If a request_id parameter can be found in the logout request,
// restore the complete logout request from the distributed cache.
@ -106,11 +106,11 @@ namespace OpenIddict.Server.Owin
var token = await _cache.GetStringAsync(Cache.LogoutRequest + context.Request.RequestId);
if (token is null || !context.Options.JsonWebTokenHandler.CanReadToken(token))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7150), Parameters.RequestId);
context.Logger.LogError(SR.GetResourceString(SR.ID6150), Parameters.RequestId);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3052, Parameters.RequestId]);
description: context.Localizer[SR.ID2052, Parameters.RequestId]);
return;
}
@ -123,11 +123,11 @@ namespace OpenIddict.Server.Owin
var result = context.Options.JsonWebTokenHandler.ValidateToken(token, parameters);
if (!result.IsValid)
{
context.Logger.LogError(SR.GetResourceString(SR.ID7150), Parameters.RequestId);
context.Logger.LogError(SR.GetResourceString(SR.ID6150), Parameters.RequestId);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3052, Parameters.RequestId]);
description: context.Localizer[SR.ID2052, Parameters.RequestId]);
return;
}
@ -136,7 +136,7 @@ namespace OpenIddict.Server.Owin
Base64UrlEncoder.Decode(((JsonWebToken) result.SecurityToken).InnerToken.EncodedPayload));
if (document.RootElement.ValueKind != JsonValueKind.Object)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1117));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0118));
}
// Restore the authorization request parameters from the serialized payload
@ -162,7 +162,7 @@ namespace OpenIddict.Server.Owin
private readonly IDistributedCache _cache;
private readonly IOptionsMonitor<OpenIddictServerOwinOptions> _options;
public CacheRequestParameters() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1115));
public CacheRequestParameters() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0116));
public CacheRequestParameters(
IDistributedCache cache,
@ -192,14 +192,14 @@ namespace OpenIddict.Server.Owin
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Request is not null, SR.GetResourceString(SR.ID5008));
Debug.Assert(context.Request is not null, SR.GetResourceString(SR.ID4008));
// This handler only applies to OWIN requests. If The OWIN request cannot be resolved,
// this may indicate that the request was incorrectly processed by another server stack.
var request = context.Transaction.GetOwinRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
// Don't cache the request if the request doesn't include any parameter.
@ -266,7 +266,7 @@ namespace OpenIddict.Server.Owin
{
private readonly IDistributedCache _cache;
public RemoveCachedRequest() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1115));
public RemoveCachedRequest() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0116));
public RemoveCachedRequest(IDistributedCache cache)
=> _cache = cache;
@ -336,7 +336,7 @@ namespace OpenIddict.Server.Owin
var response = context.Transaction.GetOwinRequest()?.Context.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
if (string.IsNullOrEmpty(context.PostLogoutRedirectUri))
@ -344,7 +344,7 @@ namespace OpenIddict.Server.Owin
return default;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7151), context.PostLogoutRedirectUri, response);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6151), context.PostLogoutRedirectUri, response);
var location = context.PostLogoutRedirectUri;

100
src/OpenIddict.Server.Owin/OpenIddictServerOwinHandlers.cs

@ -85,7 +85,7 @@ namespace OpenIddict.Server.Owin
var request = context.Transaction.GetOwinRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
context.EndpointType =
@ -103,7 +103,7 @@ namespace OpenIddict.Server.Owin
if (context.EndpointType != OpenIddictServerEndpointType.Unknown)
{
context.Logger.LogInformation(SR.GetResourceString(SR.ID7053), context.EndpointType);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6053), context.EndpointType);
}
return default;
@ -187,7 +187,7 @@ namespace OpenIddict.Server.Owin
var request = context.Transaction.GetOwinRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
// Don't require that the request host be present if the request is not handled
@ -201,7 +201,7 @@ namespace OpenIddict.Server.Owin
{
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3081, "Host"]);
description: context.Localizer[SR.ID2081, "Host"]);
return default;
}
@ -211,7 +211,7 @@ namespace OpenIddict.Server.Owin
{
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3082, "Host"]);
description: context.Localizer[SR.ID2082, "Host"]);
return default;
}
@ -253,7 +253,7 @@ namespace OpenIddict.Server.Owin
var request = context.Transaction.GetOwinRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
// Don't require that the host be present if the request is not handled by OpenIddict.
@ -267,7 +267,7 @@ namespace OpenIddict.Server.Owin
{
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3083]);
description: context.Localizer[SR.ID2083]);
return default;
}
@ -347,7 +347,7 @@ namespace OpenIddict.Server.Owin
var request = context.Transaction.GetOwinRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
if (string.Equals(request.Method, "GET", StringComparison.OrdinalIgnoreCase))
@ -357,11 +357,11 @@ namespace OpenIddict.Server.Owin
else
{
context.Logger.LogError(SR.GetResourceString(SR.ID7137), request.Method);
context.Logger.LogError(SR.GetResourceString(SR.ID6137), request.Method);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3084]);
description: context.Localizer[SR.ID2084]);
return default;
}
@ -400,7 +400,7 @@ namespace OpenIddict.Server.Owin
var request = context.Transaction.GetOwinRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
if (string.Equals(request.Method, "GET", StringComparison.OrdinalIgnoreCase))
@ -413,11 +413,11 @@ namespace OpenIddict.Server.Owin
// See http://openid.net/specs/openid-connect-core-1_0.html#FormSerialization
if (string.IsNullOrEmpty(request.ContentType))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7138), "Content-Type");
context.Logger.LogError(SR.GetResourceString(SR.ID6138), "Content-Type");
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3081, "Content-Type"]);
description: context.Localizer[SR.ID2081, "Content-Type"]);
return;
}
@ -425,11 +425,11 @@ namespace OpenIddict.Server.Owin
// May have media/type; charset=utf-8, allow partial match.
if (!request.ContentType.StartsWith("application/x-www-form-urlencoded", StringComparison.OrdinalIgnoreCase))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7139), "Content-Type", request.ContentType);
context.Logger.LogError(SR.GetResourceString(SR.ID6139), "Content-Type", request.ContentType);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3082, "Content-Type"]);
description: context.Localizer[SR.ID2082, "Content-Type"]);
return;
}
@ -439,11 +439,11 @@ namespace OpenIddict.Server.Owin
else
{
context.Logger.LogError(SR.GetResourceString(SR.ID7137), request.Method);
context.Logger.LogError(SR.GetResourceString(SR.ID6137), request.Method);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3084]);
description: context.Localizer[SR.ID2084]);
return;
}
@ -480,7 +480,7 @@ namespace OpenIddict.Server.Owin
var request = context.Transaction.GetOwinRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
if (string.Equals(request.Method, "POST", StringComparison.OrdinalIgnoreCase))
@ -488,11 +488,11 @@ namespace OpenIddict.Server.Owin
// See http://openid.net/specs/openid-connect-core-1_0.html#FormSerialization
if (string.IsNullOrEmpty(request.ContentType))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7138), "Content-Type");
context.Logger.LogError(SR.GetResourceString(SR.ID6138), "Content-Type");
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3081, "Content-Type"]);
description: context.Localizer[SR.ID2081, "Content-Type"]);
return;
}
@ -500,11 +500,11 @@ namespace OpenIddict.Server.Owin
// May have media/type; charset=utf-8, allow partial match.
if (!request.ContentType.StartsWith("application/x-www-form-urlencoded", StringComparison.OrdinalIgnoreCase))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7139), "Content-Type", request.ContentType);
context.Logger.LogError(SR.GetResourceString(SR.ID6139), "Content-Type", request.ContentType);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3082, "Content-Type"]);
description: context.Localizer[SR.ID2082, "Content-Type"]);
return;
}
@ -514,11 +514,11 @@ namespace OpenIddict.Server.Owin
else
{
context.Logger.LogError(SR.GetResourceString(SR.ID7137), request.Method);
context.Logger.LogError(SR.GetResourceString(SR.ID6137), request.Method);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3084]);
description: context.Localizer[SR.ID2084]);
return;
}
@ -551,14 +551,14 @@ namespace OpenIddict.Server.Owin
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Transaction.Request is not null, SR.GetResourceString(SR.ID5008));
Debug.Assert(context.Transaction.Request is not null, SR.GetResourceString(SR.ID4008));
// This handler only applies to OWIN requests. If The OWIN request cannot be resolved,
// this may indicate that the request was incorrectly processed by another server stack.
var request = context.Transaction.GetOwinRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
var header = request.Headers["Authorization"];
@ -572,11 +572,11 @@ namespace OpenIddict.Server.Owin
if (!string.IsNullOrEmpty(context.Transaction.Request.ClientAssertion) ||
!string.IsNullOrEmpty(context.Transaction.Request.ClientSecret))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7140));
context.Logger.LogError(SR.GetResourceString(SR.ID6140));
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3087]);
description: context.Localizer[SR.ID2087]);
return default;
}
@ -591,7 +591,7 @@ namespace OpenIddict.Server.Owin
{
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3055]);
description: context.Localizer[SR.ID2055]);
return default;
}
@ -607,7 +607,7 @@ namespace OpenIddict.Server.Owin
{
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3055]);
description: context.Localizer[SR.ID2055]);
return default;
}
@ -650,14 +650,14 @@ namespace OpenIddict.Server.Owin
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Transaction.Request is not null, SR.GetResourceString(SR.ID5008));
Debug.Assert(context.Transaction.Request is not null, SR.GetResourceString(SR.ID4008));
// This handler only applies to OWIN requests. If The OWIN request cannot be resolved,
// this may indicate that the request was incorrectly processed by another server stack.
var request = context.Transaction.GetOwinRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
var header = request.Headers["Authorization"];
@ -732,14 +732,14 @@ namespace OpenIddict.Server.Owin
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID5007));
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID4007));
// This handler only applies to OWIN requests. If The OWIN request cannot be resolved,
// this may indicate that the request was incorrectly processed by another server stack.
var response = context.Transaction.GetOwinRequest()?.Context.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
// When client authentication is made using basic authentication, the authorization server MUST return
@ -797,7 +797,7 @@ namespace OpenIddict.Server.Owin
var response = context.Transaction.GetOwinRequest()?.Context.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
// Prevent the response from being cached.
@ -839,14 +839,14 @@ namespace OpenIddict.Server.Owin
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID5007));
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID4007));
// This handler only applies to OWIN requests. If The OWIN request cannot be resolved,
// this may indicate that the request was incorrectly processed by another server stack.
var response = context.Transaction.GetOwinRequest()?.Context.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
// When client authentication is made using basic authentication, the authorization server MUST return
@ -958,7 +958,7 @@ namespace OpenIddict.Server.Owin
var response = context.Transaction.GetOwinRequest()?.Context.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
// If the response doesn't contain a WWW-Authenticate header, don't return an empty response.
@ -967,7 +967,7 @@ namespace OpenIddict.Server.Owin
return default;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7141), context.Transaction.Response);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6141), context.Transaction.Response);
context.HandleRequest();
return default;
@ -999,17 +999,17 @@ namespace OpenIddict.Server.Owin
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID5007));
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID4007));
// This handler only applies to OWIN requests. If The OWIN request cannot be resolved,
// this may indicate that the request was incorrectly processed by another server stack.
var response = context.Transaction.GetOwinRequest()?.Context.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7142), context.Transaction.Response);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6142), context.Transaction.Response);
using var stream = new MemoryStream();
using var writer = new Utf8JsonWriter(stream, new JsonWriterOptions
@ -1061,14 +1061,14 @@ namespace OpenIddict.Server.Owin
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID5007));
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID4007));
// This handler only applies to OWIN requests. If The OWIN request cannot be resolved,
// this may indicate that the request was incorrectly processed by another server stack.
var response = context.Transaction.GetOwinRequest()?.Context.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
if (string.IsNullOrEmpty(context.Transaction.Response.Error))
@ -1111,14 +1111,14 @@ namespace OpenIddict.Server.Owin
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID5007));
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID4007));
// This handler only applies to OWIN requests. If The OWIN request cannot be resolved,
// this may indicate that the request was incorrectly processed by another server stack.
var response = context.Transaction.GetOwinRequest()?.Context.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
if (string.IsNullOrEmpty(context.Transaction.Response.Error))
@ -1129,7 +1129,7 @@ namespace OpenIddict.Server.Owin
// Don't return the state originally sent by the client application.
context.Transaction.Response.State = null;
context.Logger.LogInformation(SR.GetResourceString(SR.ID7143), context.Transaction.Response);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6143), context.Transaction.Response);
using var stream = new MemoryStream();
using var writer = new StreamWriter(stream);
@ -1193,7 +1193,7 @@ namespace OpenIddict.Server.Owin
var response = context.Transaction.GetOwinRequest()?.Context.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
var properties = context.Transaction.GetProperty<AuthenticationProperties>(typeof(AuthenticationProperties).FullName!);
@ -1201,7 +1201,7 @@ namespace OpenIddict.Server.Owin
{
response.Redirect(properties.RedirectUri);
context.Logger.LogInformation(SR.GetResourceString(SR.ID7144));
context.Logger.LogInformation(SR.GetResourceString(SR.ID6144));
context.HandleRequest();
}
@ -1235,7 +1235,7 @@ namespace OpenIddict.Server.Owin
throw new ArgumentNullException(nameof(context));
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7145));
context.Logger.LogInformation(SR.GetResourceString(SR.ID6145));
context.HandleRequest();
return default;

4
src/OpenIddict.Server.Owin/OpenIddictServerOwinMiddlewareFactory.cs

@ -47,7 +47,7 @@ namespace OpenIddict.Server.Owin
var provider = context.Get<IServiceProvider>(typeof(IServiceProvider).FullName);
if (provider is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1120));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0121));
}
// Note: the Microsoft.Extensions.DependencyInjection container doesn't support resolving services
@ -63,7 +63,7 @@ namespace OpenIddict.Server.Owin
return middleware.Invoke(context);
static T GetRequiredService<T>(IServiceProvider provider) => provider.GetService<T>() ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1121));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0122));
}
}
}

6
src/OpenIddict.Server.Quartz/OpenIddictServerQuartzBuilder.cs

@ -71,7 +71,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (count < 0)
{
throw new ArgumentOutOfRangeException(nameof(count), SR.GetResourceString(SR.ID1278));
throw new ArgumentOutOfRangeException(nameof(count), SR.GetResourceString(SR.ID0279));
}
return Configure(options => options.MaximumRefireCount = count);
@ -86,7 +86,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (lifespan < TimeSpan.FromMinutes(10))
{
throw new ArgumentOutOfRangeException(nameof(lifespan), SR.GetResourceString(SR.ID1279));
throw new ArgumentOutOfRangeException(nameof(lifespan), SR.GetResourceString(SR.ID0280));
}
return Configure(options => options.MinimumAuthorizationLifespan = lifespan);
@ -101,7 +101,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (lifespan < TimeSpan.FromMinutes(10))
{
throw new ArgumentOutOfRangeException(nameof(lifespan), SR.GetResourceString(SR.ID1279));
throw new ArgumentOutOfRangeException(nameof(lifespan), SR.GetResourceString(SR.ID0280));
}
return Configure(options => options.MinimumTokenLifespan = lifespan);

4
src/OpenIddict.Server.Quartz/OpenIddictServerQuartzExtensions.cs

@ -47,7 +47,7 @@ namespace Microsoft.Extensions.DependencyInjection
JobBuilder.Create<OpenIddictServerQuartzJob>()
.StoreDurably()
.WithIdentity(OpenIddictServerQuartzJob.Identity)
.WithDescription(SR.GetResourceString(SR.ID9000))
.WithDescription(SR.GetResourceString(SR.ID8000))
.Build());
}
@ -65,7 +65,7 @@ namespace Microsoft.Extensions.DependencyInjection
TriggerBuilder.Create()
.ForJob(OpenIddictServerQuartzJob.Identity)
.WithSimpleSchedule(options => options.WithIntervalInHours(1).RepeatForever())
.WithDescription(SR.GetResourceString(SR.ID9001))
.WithDescription(SR.GetResourceString(SR.ID8001))
.StartNow()
.Build());
}

6
src/OpenIddict.Server.Quartz/OpenIddictServerQuartzJob.cs

@ -27,7 +27,7 @@ namespace OpenIddict.Server.Quartz
/// <summary>
/// Creates a new instance of the <see cref="OpenIddictServerQuartzJob"/> class.
/// </summary>
public OpenIddictServerQuartzJob() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1081));
public OpenIddictServerQuartzJob() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0082));
/// <summary>
/// Creates a new instance of the <see cref="OpenIddictServerQuartzJob"/> class.
@ -76,7 +76,7 @@ namespace OpenIddict.Server.Quartz
// Inform Quartz.NET that the triggers associated with this job should be removed,
// as the future invocations will always fail until the application is correctly
// re-configured to register the OpenIddict core services in the DI container.
throw new JobExecutionException(new InvalidOperationException(SR.GetResourceString(SR.ID1277)))
throw new JobExecutionException(new InvalidOperationException(SR.GetResourceString(SR.ID0278)))
{
RefireImmediately = false,
UnscheduleAllTriggers = true,
@ -133,7 +133,7 @@ namespace OpenIddict.Server.Quartz
// Inform Quartz.NET that the triggers associated with this job should be removed,
// as the future invocations will always fail until the application is correctly
// re-configured to register the OpenIddict core services in the DI container.
throw new JobExecutionException(new InvalidOperationException(SR.GetResourceString(SR.ID1277)))
throw new JobExecutionException(new InvalidOperationException(SR.GetResourceString(SR.ID0278)))
{
RefireImmediately = false,
UnscheduleAllTriggers = true,

114
src/OpenIddict.Server/OpenIddictServerBuilder.cs

@ -170,7 +170,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (key is AsymmetricSecurityKey asymmetricSecurityKey &&
asymmetricSecurityKey.PrivateKeyStatus == PrivateKeyStatus.DoesNotExist)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1054));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0055));
}
if (key.IsSupportedAlgorithm(SecurityAlgorithms.Aes256KW))
@ -185,7 +185,7 @@ namespace Microsoft.Extensions.DependencyInjection
SecurityAlgorithms.RsaOAEP, SecurityAlgorithms.Aes256CbcHmacSha512));
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1055));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0056));
}
/// <summary>
@ -273,7 +273,7 @@ namespace Microsoft.Extensions.DependencyInjection
return AddEncryptionCertificate(certificate);
#else
throw new PlatformNotSupportedException(SR.GetResourceString(SR.ID1263));
throw new PlatformNotSupportedException(SR.GetResourceString(SR.ID0264));
#endif
}
@ -299,7 +299,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (string.IsNullOrEmpty(algorithm))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1056), nameof(algorithm));
throw new ArgumentException(SR.GetResourceString(SR.ID0057), nameof(algorithm));
}
switch (algorithm)
@ -313,7 +313,7 @@ namespace Microsoft.Extensions.DependencyInjection
return AddEncryptionCredentials(new EncryptingCredentials(CreateRsaSecurityKey(2048),
algorithm, SecurityAlgorithms.Aes256CbcHmacSha512));
default: throw new InvalidOperationException(SR.GetResourceString(SR.ID1057));
default: throw new InvalidOperationException(SR.GetResourceString(SR.ID0058));
}
static SymmetricSecurityKey CreateSymmetricSecurityKey(int size)
@ -355,7 +355,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (algorithm.KeySize < size)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1058));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0059));
}
return new RsaSecurityKey(algorithm);
@ -382,13 +382,13 @@ namespace Microsoft.Extensions.DependencyInjection
var extensions = certificate.Extensions.OfType<X509KeyUsageExtension>().ToList();
if (extensions.Count != 0 && !extensions.Any(extension => extension.KeyUsages.HasFlag(X509KeyUsageFlags.KeyEncipherment)))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1059));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0060));
}
}
if (!certificate.HasPrivateKey)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1060));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0061));
}
return AddEncryptionKey(new X509SecurityKey(certificate));
@ -430,18 +430,18 @@ namespace Microsoft.Extensions.DependencyInjection
if (string.IsNullOrEmpty(resource))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1061), nameof(resource));
throw new ArgumentException(SR.GetResourceString(SR.ID0062), nameof(resource));
}
if (string.IsNullOrEmpty(password))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1062), nameof(password));
throw new ArgumentException(SR.GetResourceString(SR.ID0063), nameof(password));
}
using var stream = assembly.GetManifestResourceStream(resource);
if (stream is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1063));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0064));
}
return AddEncryptionCertificate(stream, password, flags);
@ -484,7 +484,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (string.IsNullOrEmpty(password))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1062), nameof(password));
throw new ArgumentException(SR.GetResourceString(SR.ID0063), nameof(password));
}
using var buffer = new MemoryStream();
@ -502,13 +502,13 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (string.IsNullOrEmpty(thumbprint))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1064), nameof(thumbprint));
throw new ArgumentException(SR.GetResourceString(SR.ID0065), nameof(thumbprint));
}
var certificate = GetCertificate(StoreLocation.CurrentUser, thumbprint) ?? GetCertificate(StoreLocation.LocalMachine, thumbprint);
if (certificate is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1065));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0066));
}
return AddEncryptionCertificate(certificate);
@ -535,7 +535,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (string.IsNullOrEmpty(thumbprint))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1064), nameof(thumbprint));
throw new ArgumentException(SR.GetResourceString(SR.ID0065), nameof(thumbprint));
}
using var store = new X509Store(name, location);
@ -547,7 +547,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (certificate is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1065));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0066));
}
return AddEncryptionCertificate(certificate);
@ -584,7 +584,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (key is AsymmetricSecurityKey asymmetricSecurityKey &&
asymmetricSecurityKey.PrivateKeyStatus == PrivateKeyStatus.DoesNotExist)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1066));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0067));
}
if (key.IsSupportedAlgorithm(SecurityAlgorithms.RsaSha256))
@ -618,11 +618,11 @@ namespace Microsoft.Extensions.DependencyInjection
key.IsSupportedAlgorithm(SecurityAlgorithms.EcdsaSha384) ||
key.IsSupportedAlgorithm(SecurityAlgorithms.EcdsaSha512))
{
throw new PlatformNotSupportedException(SR.GetResourceString(SR.ID1068));
throw new PlatformNotSupportedException(SR.GetResourceString(SR.ID0069));
}
#endif
throw new InvalidOperationException(SR.GetResourceString(SR.ID1067));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0068));
}
/// <summary>
@ -710,7 +710,7 @@ namespace Microsoft.Extensions.DependencyInjection
return AddSigningCertificate(certificate);
#else
throw new PlatformNotSupportedException(SR.GetResourceString(SR.ID1263));
throw new PlatformNotSupportedException(SR.GetResourceString(SR.ID0264));
#endif
}
@ -738,7 +738,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (string.IsNullOrEmpty(algorithm))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1056), nameof(algorithm));
throw new ArgumentException(SR.GetResourceString(SR.ID0057), nameof(algorithm));
}
switch (algorithm)
@ -780,10 +780,10 @@ namespace Microsoft.Extensions.DependencyInjection
case SecurityAlgorithms.EcdsaSha256Signature:
case SecurityAlgorithms.EcdsaSha384Signature:
case SecurityAlgorithms.EcdsaSha512Signature:
throw new PlatformNotSupportedException(SR.GetResourceString(SR.ID1068));
throw new PlatformNotSupportedException(SR.GetResourceString(SR.ID0069));
#endif
default: throw new InvalidOperationException(SR.GetResourceString(SR.ID1057));
default: throw new InvalidOperationException(SR.GetResourceString(SR.ID0058));
}
[SuppressMessage("Reliability", "CA2000:Dispose objects before losing scope",
@ -811,7 +811,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (algorithm.KeySize < size)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1058));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0059));
}
return new RsaSecurityKey(algorithm);
@ -838,13 +838,13 @@ namespace Microsoft.Extensions.DependencyInjection
var extensions = certificate.Extensions.OfType<X509KeyUsageExtension>().ToList();
if (extensions.Count != 0 && !extensions.Any(extension => extension.KeyUsages.HasFlag(X509KeyUsageFlags.DigitalSignature)))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1069));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0070));
}
}
if (!certificate.HasPrivateKey)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1060));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0061));
}
return AddSigningKey(new X509SecurityKey(certificate));
@ -886,18 +886,18 @@ namespace Microsoft.Extensions.DependencyInjection
if (string.IsNullOrEmpty(resource))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1061), nameof(resource));
throw new ArgumentException(SR.GetResourceString(SR.ID0062), nameof(resource));
}
if (string.IsNullOrEmpty(password))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1062), nameof(password));
throw new ArgumentException(SR.GetResourceString(SR.ID0063), nameof(password));
}
using var stream = assembly.GetManifestResourceStream(resource);
if (stream is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1063));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0064));
}
return AddSigningCertificate(stream, password, flags);
@ -940,7 +940,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (string.IsNullOrEmpty(password))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1062), nameof(password));
throw new ArgumentException(SR.GetResourceString(SR.ID0063), nameof(password));
}
using var buffer = new MemoryStream();
@ -958,13 +958,13 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (string.IsNullOrEmpty(thumbprint))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1064), nameof(thumbprint));
throw new ArgumentException(SR.GetResourceString(SR.ID0065), nameof(thumbprint));
}
var certificate = GetCertificate(StoreLocation.CurrentUser, thumbprint) ?? GetCertificate(StoreLocation.LocalMachine, thumbprint);
if (certificate is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1065));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0066));
}
return AddSigningCertificate(certificate);
@ -991,7 +991,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (string.IsNullOrEmpty(thumbprint))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1064), nameof(thumbprint));
throw new ArgumentException(SR.GetResourceString(SR.ID0065), nameof(thumbprint));
}
using var store = new X509Store(name, location);
@ -1003,7 +1003,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (certificate is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1065));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0066));
}
return AddSigningCertificate(certificate);
@ -1036,7 +1036,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (string.IsNullOrEmpty(type))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1070), nameof(type));
throw new ArgumentException(SR.GetResourceString(SR.ID0071), nameof(type));
}
return Configure(options => options.GrantTypes.Add(type));
@ -1109,12 +1109,12 @@ namespace Microsoft.Extensions.DependencyInjection
if (addresses.Any(address => !address.IsWellFormedOriginalString()))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1071), nameof(addresses));
throw new ArgumentException(SR.GetResourceString(SR.ID0072), nameof(addresses));
}
if (addresses.Any(address => address.OriginalString.StartsWith("~", StringComparison.OrdinalIgnoreCase)))
{
throw new ArgumentException(SR.FormatID1080("~"), nameof(addresses));
throw new ArgumentException(SR.FormatID0081("~"), nameof(addresses));
}
return Configure(options =>
@ -1157,12 +1157,12 @@ namespace Microsoft.Extensions.DependencyInjection
if (addresses.Any(address => !address.IsWellFormedOriginalString()))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1071), nameof(addresses));
throw new ArgumentException(SR.GetResourceString(SR.ID0072), nameof(addresses));
}
if (addresses.Any(address => address.OriginalString.StartsWith("~", StringComparison.OrdinalIgnoreCase)))
{
throw new ArgumentException(SR.FormatID1080("~"), nameof(addresses));
throw new ArgumentException(SR.FormatID0081("~"), nameof(addresses));
}
return Configure(options =>
@ -1205,12 +1205,12 @@ namespace Microsoft.Extensions.DependencyInjection
if (addresses.Any(address => !address.IsWellFormedOriginalString()))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1071), nameof(addresses));
throw new ArgumentException(SR.GetResourceString(SR.ID0072), nameof(addresses));
}
if (addresses.Any(address => address.OriginalString.StartsWith("~", StringComparison.OrdinalIgnoreCase)))
{
throw new ArgumentException(SR.FormatID1080("~"), nameof(addresses));
throw new ArgumentException(SR.FormatID0081("~"), nameof(addresses));
}
return Configure(options =>
@ -1253,12 +1253,12 @@ namespace Microsoft.Extensions.DependencyInjection
if (addresses.Any(address => !address.IsWellFormedOriginalString()))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1071), nameof(addresses));
throw new ArgumentException(SR.GetResourceString(SR.ID0072), nameof(addresses));
}
if (addresses.Any(address => address.OriginalString.StartsWith("~", StringComparison.OrdinalIgnoreCase)))
{
throw new ArgumentException(SR.FormatID1080("~"), nameof(addresses));
throw new ArgumentException(SR.FormatID0081("~"), nameof(addresses));
}
return Configure(options =>
@ -1301,12 +1301,12 @@ namespace Microsoft.Extensions.DependencyInjection
if (addresses.Any(address => !address.IsWellFormedOriginalString()))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1071), nameof(addresses));
throw new ArgumentException(SR.GetResourceString(SR.ID0072), nameof(addresses));
}
if (addresses.Any(address => address.OriginalString.StartsWith("~", StringComparison.OrdinalIgnoreCase)))
{
throw new ArgumentException(SR.FormatID1080("~"), nameof(addresses));
throw new ArgumentException(SR.FormatID0081("~"), nameof(addresses));
}
return Configure(options =>
@ -1349,12 +1349,12 @@ namespace Microsoft.Extensions.DependencyInjection
if (addresses.Any(address => !address.IsWellFormedOriginalString()))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1071), nameof(addresses));
throw new ArgumentException(SR.GetResourceString(SR.ID0072), nameof(addresses));
}
if (addresses.Any(address => address.OriginalString.StartsWith("~", StringComparison.OrdinalIgnoreCase)))
{
throw new ArgumentException(SR.FormatID1080("~"), nameof(addresses));
throw new ArgumentException(SR.FormatID0081("~"), nameof(addresses));
}
return Configure(options =>
@ -1397,12 +1397,12 @@ namespace Microsoft.Extensions.DependencyInjection
if (addresses.Any(address => !address.IsWellFormedOriginalString()))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1071), nameof(addresses));
throw new ArgumentException(SR.GetResourceString(SR.ID0072), nameof(addresses));
}
if (addresses.Any(address => address.OriginalString.StartsWith("~", StringComparison.OrdinalIgnoreCase)))
{
throw new ArgumentException(SR.FormatID1080("~"), nameof(addresses));
throw new ArgumentException(SR.FormatID0081("~"), nameof(addresses));
}
return Configure(options =>
@ -1445,12 +1445,12 @@ namespace Microsoft.Extensions.DependencyInjection
if (addresses.Any(address => !address.IsWellFormedOriginalString()))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1071), nameof(addresses));
throw new ArgumentException(SR.GetResourceString(SR.ID0072), nameof(addresses));
}
if (addresses.Any(address => address.OriginalString.StartsWith("~", StringComparison.OrdinalIgnoreCase)))
{
throw new ArgumentException(SR.FormatID1080("~"), nameof(addresses));
throw new ArgumentException(SR.FormatID0081("~"), nameof(addresses));
}
return Configure(options =>
@ -1493,12 +1493,12 @@ namespace Microsoft.Extensions.DependencyInjection
if (addresses.Any(address => !address.IsWellFormedOriginalString()))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1071), nameof(addresses));
throw new ArgumentException(SR.GetResourceString(SR.ID0072), nameof(addresses));
}
if (addresses.Any(address => address.OriginalString.StartsWith("~", StringComparison.OrdinalIgnoreCase)))
{
throw new ArgumentException(SR.FormatID1080("~"), nameof(addresses));
throw new ArgumentException(SR.FormatID0081("~"), nameof(addresses));
}
return Configure(options =>
@ -1541,12 +1541,12 @@ namespace Microsoft.Extensions.DependencyInjection
if (addresses.Any(address => !address.IsWellFormedOriginalString()))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1071), nameof(addresses));
throw new ArgumentException(SR.GetResourceString(SR.ID0072), nameof(addresses));
}
if (addresses.Any(address => address.OriginalString.StartsWith("~", StringComparison.OrdinalIgnoreCase)))
{
throw new ArgumentException(SR.FormatID1080("~"), nameof(addresses));
throw new ArgumentException(SR.FormatID0081("~"), nameof(addresses));
}
return Configure(options =>
@ -1653,7 +1653,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (claims.Any(claim => string.IsNullOrEmpty(claim)))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1072), nameof(claims));
throw new ArgumentException(SR.GetResourceString(SR.ID0073), nameof(claims));
}
return Configure(options => options.Claims.UnionWith(claims));
@ -1674,7 +1674,7 @@ namespace Microsoft.Extensions.DependencyInjection
if (scopes.Any(scope => string.IsNullOrEmpty(scope)))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1073), nameof(scopes));
throw new ArgumentException(SR.GetResourceString(SR.ID0074), nameof(scopes));
}
return Configure(options => options.Scopes.UnionWith(scopes));

46
src/OpenIddict.Server/OpenIddictServerConfiguration.cs

@ -50,13 +50,13 @@ namespace OpenIddict.Server
if (options.JsonWebTokenHandler is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1074));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0075));
}
// Ensure at least one flow has been enabled.
if (options.GrantTypes.Count == 0)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1075));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0076));
}
// Ensure the authorization endpoint has been enabled when
@ -64,13 +64,13 @@ namespace OpenIddict.Server
if (options.AuthorizationEndpointUris.Count == 0 && (options.GrantTypes.Contains(GrantTypes.AuthorizationCode) ||
options.GrantTypes.Contains(GrantTypes.Implicit)))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1076));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0077));
}
// Ensure the device endpoint has been enabled when the device grant is supported.
if (options.DeviceEndpointUris.Count == 0 && options.GrantTypes.Contains(GrantTypes.DeviceCode))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1077));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0078));
}
// Ensure the token endpoint has been enabled when the authorization code,
@ -81,50 +81,50 @@ namespace OpenIddict.Server
options.GrantTypes.Contains(GrantTypes.Password) ||
options.GrantTypes.Contains(GrantTypes.RefreshToken)))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1078));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0079));
}
// Ensure the verification endpoint has been enabled when the device grant is supported.
if (options.VerificationEndpointUris.Count == 0 && options.GrantTypes.Contains(GrantTypes.DeviceCode))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1079));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0080));
}
if (options.DisableTokenStorage)
{
if (options.UseReferenceAccessTokens || options.UseReferenceRefreshTokens)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1082));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0083));
}
if (!options.DisableSlidingRefreshTokenExpiration && !options.UseRollingRefreshTokens)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1083));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0084));
}
}
if (options.EncryptionCredentials.Count == 0)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1084));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0085));
}
if (!options.SigningCredentials.Any(credentials => credentials.Key is AsymmetricSecurityKey))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1085));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0086));
}
// If all the registered encryption credentials are backed by a X.509 certificate, at least one of them must be valid.
if (options.EncryptionCredentials.All(credentials => credentials.Key is X509SecurityKey x509SecurityKey &&
(x509SecurityKey.Certificate.NotBefore > DateTime.Now || x509SecurityKey.Certificate.NotAfter < DateTime.Now)))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1086));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0087));
}
// If all the registered signing credentials are backed by a X.509 certificate, at least one of them must be valid.
if (options.SigningCredentials.All(credentials => credentials.Key is X509SecurityKey x509SecurityKey &&
(x509SecurityKey.Certificate.NotBefore > DateTime.Now || x509SecurityKey.Certificate.NotAfter < DateTime.Now)))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1087));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0088));
}
if (options.EnableDegradedMode)
@ -137,7 +137,7 @@ namespace OpenIddict.Server
descriptor.Type == OpenIddictServerHandlerType.Custom &&
descriptor.FilterTypes.All(type => !typeof(RequireDegradedModeDisabled).IsAssignableFrom(type))))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1088));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0089));
}
if (options.DeviceEndpointUris.Count != 0 && !options.Handlers.Any(
@ -145,7 +145,7 @@ namespace OpenIddict.Server
descriptor.Type == OpenIddictServerHandlerType.Custom &&
descriptor.FilterTypes.All(type => !typeof(RequireDegradedModeDisabled).IsAssignableFrom(type))))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1089));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0090));
}
if (options.IntrospectionEndpointUris.Count != 0 && !options.Handlers.Any(
@ -153,7 +153,7 @@ namespace OpenIddict.Server
descriptor.Type == OpenIddictServerHandlerType.Custom &&
descriptor.FilterTypes.All(type => !typeof(RequireDegradedModeDisabled).IsAssignableFrom(type))))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1090));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0091));
}
if (options.LogoutEndpointUris.Count != 0 && !options.Handlers.Any(
@ -161,7 +161,7 @@ namespace OpenIddict.Server
descriptor.Type == OpenIddictServerHandlerType.Custom &&
descriptor.FilterTypes.All(type => !typeof(RequireDegradedModeDisabled).IsAssignableFrom(type))))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1091));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0092));
}
if (options.RevocationEndpointUris.Count != 0 && !options.Handlers.Any(
@ -169,7 +169,7 @@ namespace OpenIddict.Server
descriptor.Type == OpenIddictServerHandlerType.Custom &&
descriptor.FilterTypes.All(type => !typeof(RequireDegradedModeDisabled).IsAssignableFrom(type))))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1092));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0093));
}
if (options.TokenEndpointUris.Count != 0 && !options.Handlers.Any(
@ -177,7 +177,7 @@ namespace OpenIddict.Server
descriptor.Type == OpenIddictServerHandlerType.Custom &&
descriptor.FilterTypes.All(type => !typeof(RequireDegradedModeDisabled).IsAssignableFrom(type))))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1093));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0094));
}
if (options.VerificationEndpointUris.Count != 0 && !options.Handlers.Any(
@ -185,7 +185,7 @@ namespace OpenIddict.Server
descriptor.Type == OpenIddictServerHandlerType.Custom &&
descriptor.FilterTypes.All(type => !typeof(RequireDegradedModeDisabled).IsAssignableFrom(type))))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1094));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0095));
}
// If the degraded mode was enabled, ensure custom authentication/sign-in handlers
@ -198,7 +198,7 @@ namespace OpenIddict.Server
descriptor.Type == OpenIddictServerHandlerType.Custom &&
descriptor.FilterTypes.All(type => !typeof(RequireDegradedModeDisabled).IsAssignableFrom(type))))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1095));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0096));
}
if (!options.Handlers.Any(
@ -206,7 +206,7 @@ namespace OpenIddict.Server
descriptor.Type == OpenIddictServerHandlerType.Custom &&
descriptor.FilterTypes.All(type => !typeof(RequireDegradedModeDisabled).IsAssignableFrom(type))))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1096));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0097));
}
}
}
@ -323,7 +323,7 @@ namespace OpenIddict.Server
{
parameters = rsaSecurityKey.Rsa.ExportParameters(includePrivateParameters: false);
Debug.Assert(parameters.Modulus is not null, SR.GetResourceString(SR.ID5003));
Debug.Assert(parameters.Modulus is not null, SR.GetResourceString(SR.ID4003));
}
// Only use the 40 first chars of the base64url-encoded modulus.
@ -337,7 +337,7 @@ namespace OpenIddict.Server
// Extract the ECDSA parameters from the signing credentials.
var parameters = ecsdaSecurityKey.ECDsa.ExportParameters(includePrivateParameters: false);
Debug.Assert(parameters.Q.X is not null, SR.GetResourceString(SR.ID5004));
Debug.Assert(parameters.Q.X is not null, SR.GetResourceString(SR.ID4004));
// Only use the 40 first chars of the base64url-encoded X coordinate.
var identifier = Base64UrlEncoder.Encode(parameters.Q.X);

14
src/OpenIddict.Server/OpenIddictServerDispatcher.cs

@ -49,14 +49,14 @@ namespace OpenIddict.Server
catch (Exception exception) when (_logger.IsEnabled(LogLevel.Debug))
{
_logger.LogDebug(exception, SR.GetResourceString(SR.ID7132), handler.GetType().FullName, typeof(TContext).FullName);
_logger.LogDebug(exception, SR.GetResourceString(SR.ID6132), handler.GetType().FullName, typeof(TContext).FullName);
throw;
}
if (_logger.IsEnabled(LogLevel.Debug))
{
_logger.LogDebug(SR.GetResourceString(SR.ID7133), typeof(TContext).FullName, handler.GetType().FullName);
_logger.LogDebug(SR.GetResourceString(SR.ID6133), typeof(TContext).FullName, handler.GetType().FullName);
}
switch (context)
@ -64,21 +64,21 @@ namespace OpenIddict.Server
case BaseRequestContext notification when notification.IsRequestHandled:
if (_logger.IsEnabled(LogLevel.Debug))
{
_logger.LogDebug(SR.GetResourceString(SR.ID7134), typeof(TContext).FullName, handler.GetType().FullName);
_logger.LogDebug(SR.GetResourceString(SR.ID6134), typeof(TContext).FullName, handler.GetType().FullName);
}
return;
case BaseRequestContext notification when notification.IsRequestSkipped:
if (_logger.IsEnabled(LogLevel.Debug))
{
_logger.LogDebug(SR.GetResourceString(SR.ID7135), typeof(TContext).FullName, handler.GetType().FullName);
_logger.LogDebug(SR.GetResourceString(SR.ID6135), typeof(TContext).FullName, handler.GetType().FullName);
}
return;
case BaseValidatingContext notification when notification.IsRejected:
if (_logger.IsEnabled(LogLevel.Debug))
{
_logger.LogDebug(SR.GetResourceString(SR.ID7136), typeof(TContext).FullName, handler.GetType().FullName);
_logger.LogDebug(SR.GetResourceString(SR.ID6136), typeof(TContext).FullName, handler.GetType().FullName);
}
return;
@ -109,7 +109,7 @@ namespace OpenIddict.Server
if (handler is null)
{
throw new InvalidOperationException(SR.FormatID1097(descriptor.ServiceDescriptor.ServiceType));
throw new InvalidOperationException(SR.FormatID0098(descriptor.ServiceDescriptor.ServiceType));
}
yield return handler;
@ -122,7 +122,7 @@ namespace OpenIddict.Server
{
if (!(_provider.GetService(descriptor.FilterTypes[index]) is IOpenIddictServerHandlerFilter<TContext> filter))
{
throw new InvalidOperationException(SR.FormatID1098(descriptor.FilterTypes[index]));
throw new InvalidOperationException(SR.FormatID0099(descriptor.FilterTypes[index]));
}
if (!await filter.IsActiveAsync(context))

4
src/OpenIddict.Server/OpenIddictServerEvents.Authentication.cs

@ -80,7 +80,7 @@ namespace OpenIddict.Server
{
if (string.IsNullOrEmpty(address))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1099), nameof(address));
throw new ArgumentException(SR.GetResourceString(SR.ID0100), nameof(address));
}
// Don't allow validation to alter the redirect_uri parameter extracted
@ -88,7 +88,7 @@ namespace OpenIddict.Server
if (!string.IsNullOrEmpty(Request?.RedirectUri) &&
!string.Equals(Request.RedirectUri, address, StringComparison.Ordinal))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1100));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0101));
}
RedirectUri = address;

4
src/OpenIddict.Server/OpenIddictServerEvents.Session.cs

@ -72,7 +72,7 @@ namespace OpenIddict.Server
{
if (string.IsNullOrEmpty(address))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1101), nameof(address));
throw new ArgumentException(SR.GetResourceString(SR.ID0102), nameof(address));
}
// Don't allow validation to alter the post_logout_redirect_uri parameter extracted
@ -80,7 +80,7 @@ namespace OpenIddict.Server
if (!string.IsNullOrEmpty(Request?.PostLogoutRedirectUri) &&
!string.Equals(Request.PostLogoutRedirectUri, address, StringComparison.Ordinal))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1102));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0103));
}
PostLogoutRedirectUri = address;

6
src/OpenIddict.Server/OpenIddictServerHandlerDescriptor.cs

@ -86,7 +86,7 @@ namespace OpenIddict.Server
if (!typeof(IOpenIddictServerHandlerFilter<>).MakeGenericType(typeof(TContext)).IsAssignableFrom(type))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1103));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0104));
}
_filterTypes.Add(type);
@ -118,7 +118,7 @@ namespace OpenIddict.Server
var type = descriptor.ServiceType;
if (!typeof(IOpenIddictServerHandler<>).MakeGenericType(typeof(TContext)).IsAssignableFrom(type))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1103));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0104));
}
_descriptor = descriptor;
@ -216,7 +216,7 @@ namespace OpenIddict.Server
ContextType = typeof(TContext),
FilterTypes = _filterTypes.ToImmutableArray(),
Order = _order,
ServiceDescriptor = _descriptor ?? throw new InvalidOperationException(SR.GetResourceString(SR.ID1104)),
ServiceDescriptor = _descriptor ?? throw new InvalidOperationException(SR.GetResourceString(SR.ID0105)),
Type = _type
};
}

176
src/OpenIddict.Server/OpenIddictServerHandlers.Authentication.cs

@ -119,10 +119,10 @@ namespace OpenIddict.Server
if (notification.Request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1026));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0027));
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7030), notification.Request);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6030), notification.Request);
}
}
@ -185,10 +185,10 @@ namespace OpenIddict.Server
if (string.IsNullOrEmpty(notification.RedirectUri))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1027));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0028));
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7031));
context.Logger.LogInformation(SR.GetResourceString(SR.ID6031));
}
}
@ -277,7 +277,7 @@ namespace OpenIddict.Server
}
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1028));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0029));
}
}
@ -325,7 +325,7 @@ namespace OpenIddict.Server
return;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1029));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0030));
}
}
@ -355,11 +355,11 @@ namespace OpenIddict.Server
// Reject requests using the unsupported request parameter.
if (!string.IsNullOrEmpty(context.Request.Request))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7032), Parameters.Request);
context.Logger.LogError(SR.GetResourceString(SR.ID6032), Parameters.Request);
context.Reject(
error: Errors.RequestNotSupported,
description: context.Localizer[SR.ID3028, Parameters.Request]);
description: context.Localizer[SR.ID2028, Parameters.Request]);
return default;
}
@ -394,11 +394,11 @@ namespace OpenIddict.Server
// Reject requests using the unsupported request_uri parameter.
if (!string.IsNullOrEmpty(context.Request.RequestUri))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7032), Parameters.RequestUri);
context.Logger.LogError(SR.GetResourceString(SR.ID6032), Parameters.RequestUri);
context.Reject(
error: Errors.RequestUriNotSupported,
description: context.Localizer[SR.ID3028, Parameters.RequestUri]);
description: context.Localizer[SR.ID2028, Parameters.RequestUri]);
return default;
}
@ -434,11 +434,11 @@ namespace OpenIddict.Server
// See http://openid.net/specs/openid-connect-core-1_0.html#AuthRequest.
if (string.IsNullOrEmpty(context.ClientId))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7033), Parameters.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6033), Parameters.ClientId);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3029, Parameters.ClientId]);
description: context.Localizer[SR.ID2029, Parameters.ClientId]);
return default;
}
@ -479,11 +479,11 @@ namespace OpenIddict.Server
{
if (context.Request.HasScope(Scopes.OpenId))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7033), Parameters.RedirectUri);
context.Logger.LogError(SR.GetResourceString(SR.ID6033), Parameters.RedirectUri);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3029, Parameters.RedirectUri]);
description: context.Localizer[SR.ID2029, Parameters.RedirectUri]);
return default;
}
@ -501,11 +501,11 @@ namespace OpenIddict.Server
// See https://github.com/dotnet/corefx/issues/22098 for more information.
if (!Uri.TryCreate(context.RedirectUri, UriKind.Absolute, out Uri? uri) || !uri.IsWellFormedOriginalString())
{
context.Logger.LogError(SR.GetResourceString(SR.ID7034), Parameters.RedirectUri, context.RedirectUri);
context.Logger.LogError(SR.GetResourceString(SR.ID6034), Parameters.RedirectUri, context.RedirectUri);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3030, Parameters.RedirectUri]);
description: context.Localizer[SR.ID2030, Parameters.RedirectUri]);
return default;
}
@ -515,11 +515,11 @@ namespace OpenIddict.Server
// and http://openid.net/specs/openid-connect-core-1_0.html#AuthRequest
if (!string.IsNullOrEmpty(uri.Fragment))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7035), Parameters.RedirectUri, context.RedirectUri);
context.Logger.LogError(SR.GetResourceString(SR.ID6035), Parameters.RedirectUri, context.RedirectUri);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3031, Parameters.RedirectUri]);
description: context.Localizer[SR.ID2031, Parameters.RedirectUri]);
return default;
}
@ -554,11 +554,11 @@ namespace OpenIddict.Server
// Reject requests missing the mandatory response_type parameter.
if (string.IsNullOrEmpty(context.Request.ResponseType))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7033), Parameters.ResponseType);
context.Logger.LogError(SR.GetResourceString(SR.ID6033), Parameters.ResponseType);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3029, Parameters.ResponseType]);
description: context.Localizer[SR.ID2029, Parameters.ResponseType]);
return default;
}
@ -568,11 +568,11 @@ namespace OpenIddict.Server
if (!context.Options.ResponseTypes.Any(type =>
types.SetEquals(type.Split(Separators.Space, StringSplitOptions.RemoveEmptyEntries))))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7036), context.Request.ResponseType);
context.Logger.LogError(SR.GetResourceString(SR.ID6036), context.Request.ResponseType);
context.Reject(
error: Errors.UnsupportedResponseType,
description: context.Localizer[SR.ID3032, Parameters.ResponseType]);
description: context.Localizer[SR.ID2032, Parameters.ResponseType]);
return default;
}
@ -610,11 +610,11 @@ namespace OpenIddict.Server
if (context.Request.IsQueryResponseMode() && (context.Request.HasResponseType(ResponseTypes.IdToken) ||
context.Request.HasResponseType(ResponseTypes.Token)))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7037), context.Request.ResponseType, context.Request.ResponseMode);
context.Logger.LogError(SR.GetResourceString(SR.ID6037), context.Request.ResponseType, context.Request.ResponseMode);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3033, Parameters.ResponseType, Parameters.ResponseMode]);
description: context.Localizer[SR.ID2033, Parameters.ResponseType, Parameters.ResponseMode]);
return default;
}
@ -623,11 +623,11 @@ namespace OpenIddict.Server
// if the default response_mode inferred from the response_type was explicitly disabled in the options.
if (!ValidateResponseMode(context.Request, context.Options))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7038), context.Request.ResponseMode);
context.Logger.LogError(SR.GetResourceString(SR.ID6038), context.Request.ResponseMode);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3032, Parameters.ResponseMode]);
description: context.Localizer[SR.ID2032, Parameters.ResponseMode]);
return default;
}
@ -687,11 +687,11 @@ namespace OpenIddict.Server
// Reject authorization requests containing the id_token response_type if no openid scope has been received.
if (context.Request.HasResponseType(ResponseTypes.IdToken) && !context.Request.HasScope(Scopes.OpenId))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7039), Scopes.OpenId);
context.Logger.LogError(SR.GetResourceString(SR.ID6039), Scopes.OpenId);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3034, Scopes.OpenId]);
description: context.Localizer[SR.ID2034, Scopes.OpenId]);
return default;
}
@ -701,7 +701,7 @@ namespace OpenIddict.Server
{
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3035, Scopes.OfflineAccess]);
description: context.Localizer[SR.ID2035, Scopes.OfflineAccess]);
return default;
}
@ -745,11 +745,11 @@ namespace OpenIddict.Server
if (context.Request.IsImplicitFlow() || context.Request.IsHybridFlow())
{
context.Logger.LogError(SR.GetResourceString(SR.ID7033), Parameters.Nonce);
context.Logger.LogError(SR.GetResourceString(SR.ID6033), Parameters.Nonce);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3029, Parameters.Nonce]);
description: context.Localizer[SR.ID2029, Parameters.Nonce]);
return default;
}
@ -786,11 +786,11 @@ namespace OpenIddict.Server
context.Request.HasPrompt(Prompts.Login) ||
context.Request.HasPrompt(Prompts.SelectAccount)))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7040));
context.Logger.LogError(SR.GetResourceString(SR.ID6040));
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3052, Parameters.Prompt]);
description: context.Localizer[SR.ID2052, Parameters.Prompt]);
return default;
}
@ -831,11 +831,11 @@ namespace OpenIddict.Server
// Ensure a code_challenge was specified if a code_challenge_method was used.
if (string.IsNullOrEmpty(context.Request.CodeChallenge))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7033), Parameters.CodeChallenge);
context.Logger.LogError(SR.GetResourceString(SR.ID6033), Parameters.CodeChallenge);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3037, Parameters.CodeChallengeMethod, Parameters.CodeChallenge]);
description: context.Localizer[SR.ID2037, Parameters.CodeChallengeMethod, Parameters.CodeChallenge]);
return default;
}
@ -845,11 +845,11 @@ namespace OpenIddict.Server
if (string.IsNullOrEmpty(context.Request.CodeChallengeMethod) &&
!context.Options.CodeChallengeMethods.Contains(CodeChallengeMethods.Plain))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7033), Parameters.CodeChallengeMethod);
context.Logger.LogError(SR.GetResourceString(SR.ID6033), Parameters.CodeChallengeMethod);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3029, Parameters.CodeChallengeMethod]);
description: context.Localizer[SR.ID2029, Parameters.CodeChallengeMethod]);
return default;
}
@ -858,11 +858,11 @@ namespace OpenIddict.Server
if (!string.IsNullOrEmpty(context.Request.CodeChallengeMethod) &&
!context.Options.CodeChallengeMethods.Contains(context.Request.CodeChallengeMethod))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7041));
context.Logger.LogError(SR.GetResourceString(SR.ID6041));
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3032, Parameters.CodeChallengeMethod]);
description: context.Localizer[SR.ID2032, Parameters.CodeChallengeMethod]);
return default;
}
@ -870,11 +870,11 @@ namespace OpenIddict.Server
// When code_challenge or code_challenge_method is specified, ensure the response_type includes "code".
if (!context.Request.HasResponseType(ResponseTypes.Code))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7042));
context.Logger.LogError(SR.GetResourceString(SR.ID6042));
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3040, Parameters.CodeChallenge,
description: context.Localizer[SR.ID2040, Parameters.CodeChallenge,
Parameters.CodeChallengeMethod, ResponseTypes.Code]);
return default;
@ -883,11 +883,11 @@ namespace OpenIddict.Server
// Reject authorization requests that contain response_type=token when a code_challenge is specified.
if (context.Request.HasResponseType(ResponseTypes.Token))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7043));
context.Logger.LogError(SR.GetResourceString(SR.ID6043));
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3041, Parameters.ResponseType]);
description: context.Localizer[SR.ID2041, Parameters.ResponseType]);
return default;
}
@ -904,7 +904,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateClientId() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateClientId() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateClientId(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -928,16 +928,16 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
context.Logger.LogError(SR.GetResourceString(SR.ID7044), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6044), context.ClientId);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3052, Parameters.ClientId]);
description: context.Localizer[SR.ID2052, Parameters.ClientId]);
return;
}
@ -953,7 +953,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateClientType() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateClientType() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateClientType(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -977,12 +977,12 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
// To prevent downgrade attacks, ensure that authorization requests returning an access token directly
@ -992,11 +992,11 @@ namespace OpenIddict.Server
if (context.Request.HasResponseType(ResponseTypes.Token) &&
await _applicationManager.HasClientTypeAsync(application, ClientTypes.Confidential))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7045), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6045), context.ClientId);
context.Reject(
error: Errors.UnauthorizedClient,
description: context.Localizer[SR.ID3043, Parameters.ResponseType]);
description: context.Localizer[SR.ID2043, Parameters.ResponseType]);
return;
}
@ -1011,7 +1011,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateClientRedirectUri() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateClientRedirectUri() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateClientRedirectUri(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -1035,12 +1035,12 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
// If no explicit redirect_uri was specified, retrieve the addresses associated with
@ -1050,11 +1050,11 @@ namespace OpenIddict.Server
var addresses = await _applicationManager.GetRedirectUrisAsync(application);
if (addresses.Length != 1)
{
context.Logger.LogError(SR.GetResourceString(SR.ID7033), Parameters.RedirectUri);
context.Logger.LogError(SR.GetResourceString(SR.ID6033), Parameters.RedirectUri);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3029, Parameters.RedirectUri]);
description: context.Localizer[SR.ID2029, Parameters.RedirectUri]);
return;
}
@ -1067,11 +1067,11 @@ namespace OpenIddict.Server
// Otherwise, ensure that the specified redirect_uri is valid and is associated with the client application.
if (!await _applicationManager.ValidateRedirectUriAsync(application, context.RedirectUri))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7046), context.RedirectUri);
context.Logger.LogError(SR.GetResourceString(SR.ID6046), context.RedirectUri);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3043, Parameters.RedirectUri]);
description: context.Localizer[SR.ID2043, Parameters.RedirectUri]);
return;
}
@ -1121,7 +1121,7 @@ namespace OpenIddict.Server
// even if the service was registered and resolved from the dependency injection container.
if (scopes.Count != 0 && !context.Options.EnableDegradedMode)
{
Debug.Assert(_scopeManager is not null, SR.GetResourceString(SR.ID5011));
Debug.Assert(_scopeManager is not null, SR.GetResourceString(SR.ID4011));
await foreach (var scope in _scopeManager.FindByNamesAsync(scopes.ToImmutableArray()))
{
@ -1136,11 +1136,11 @@ namespace OpenIddict.Server
// If at least one scope was not recognized, return an error.
if (scopes.Count != 0)
{
context.Logger.LogError(SR.GetResourceString(SR.ID7047), scopes);
context.Logger.LogError(SR.GetResourceString(SR.ID6047), scopes);
context.Reject(
error: Errors.InvalidScope,
description: context.Localizer[SR.ID3052, Parameters.Scope]);
description: context.Localizer[SR.ID2052, Parameters.Scope]);
return;
}
@ -1155,7 +1155,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateEndpointPermissions() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateEndpointPermissions() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateEndpointPermissions(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -1180,22 +1180,22 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
// Reject the request if the application is not allowed to use the authorization endpoint.
if (!await _applicationManager.HasPermissionAsync(application, Permissions.Endpoints.Authorization))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7048), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6048), context.ClientId);
context.Reject(
error: Errors.UnauthorizedClient,
description: context.Localizer[SR.ID3046]);
description: context.Localizer[SR.ID2046]);
return;
}
@ -1210,7 +1210,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateGrantTypePermissions() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateGrantTypePermissions() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateGrantTypePermissions(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -1235,23 +1235,23 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
// Reject the request if the application is not allowed to use the authorization code flow.
if (context.Request.IsAuthorizationCodeFlow() &&
!await _applicationManager.HasPermissionAsync(application, Permissions.GrantTypes.AuthorizationCode))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7049), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6049), context.ClientId);
context.Reject(
error: Errors.UnauthorizedClient,
description: context.Localizer[SR.ID3047]);
description: context.Localizer[SR.ID2047]);
return;
}
@ -1260,11 +1260,11 @@ namespace OpenIddict.Server
if (context.Request.IsImplicitFlow() &&
!await _applicationManager.HasPermissionAsync(application, Permissions.GrantTypes.Implicit))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7050), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6050), context.ClientId);
context.Reject(
error: Errors.UnauthorizedClient,
description: context.Localizer[SR.ID3048]);
description: context.Localizer[SR.ID2048]);
return;
}
@ -1274,11 +1274,11 @@ namespace OpenIddict.Server
(!await _applicationManager.HasPermissionAsync(application, Permissions.GrantTypes.AuthorizationCode) ||
!await _applicationManager.HasPermissionAsync(application, Permissions.GrantTypes.Implicit)))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7051), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6051), context.ClientId);
context.Reject(
error: Errors.UnauthorizedClient,
description: context.Localizer[SR.ID3049]);
description: context.Localizer[SR.ID2049]);
return;
}
@ -1288,11 +1288,11 @@ namespace OpenIddict.Server
if (context.Request.HasScope(Scopes.OfflineAccess) &&
!await _applicationManager.HasPermissionAsync(application, Permissions.GrantTypes.RefreshToken))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7052), context.ClientId, Scopes.OfflineAccess);
context.Logger.LogError(SR.GetResourceString(SR.ID6052), context.ClientId, Scopes.OfflineAccess);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3065, Scopes.OfflineAccess]);
description: context.Localizer[SR.ID2065, Scopes.OfflineAccess]);
return;
}
@ -1307,7 +1307,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateScopePermissions() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateScopePermissions() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateScopePermissions(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -1332,12 +1332,12 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
foreach (var scope in context.Request.GetScopes())
@ -1352,11 +1352,11 @@ namespace OpenIddict.Server
// Reject the request if the application is not allowed to use the iterated scope.
if (!await _applicationManager.HasPermissionAsync(application, Permissions.Prefixes.Scope + scope))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7052), context.ClientId, scope);
context.Logger.LogError(SR.GetResourceString(SR.ID6052), context.ClientId, scope);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3051]);
description: context.Localizer[SR.ID2051]);
return;
}
@ -1373,7 +1373,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateProofKeyForCodeExchangeRequirement() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateProofKeyForCodeExchangeRequirement() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateProofKeyForCodeExchangeRequirement(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -1397,7 +1397,7 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
// If a code_challenge was provided, the request is always considered valid,
// whether the proof key for code exchange requirement is enforced or not.
@ -1409,16 +1409,16 @@ namespace OpenIddict.Server
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
if (await _applicationManager.HasRequirementAsync(application, Requirements.Features.ProofKeyForCodeExchange))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7033), Parameters.CodeChallenge);
context.Logger.LogError(SR.GetResourceString(SR.ID6033), Parameters.CodeChallenge);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3054, Parameters.CodeChallenge]);
description: context.Localizer[SR.ID2054, Parameters.CodeChallenge]);
return;
}

82
src/OpenIddict.Server/OpenIddictServerHandlers.Device.cs

@ -117,10 +117,10 @@ namespace OpenIddict.Server
if (notification.Request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1030));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0031));
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7054), notification.Request);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6054), notification.Request);
}
}
@ -177,7 +177,7 @@ namespace OpenIddict.Server
return;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7055));
context.Logger.LogInformation(SR.GetResourceString(SR.ID6055));
}
}
@ -318,7 +318,7 @@ namespace OpenIddict.Server
return;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1032));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0033));
}
}
@ -349,11 +349,11 @@ namespace OpenIddict.Server
// See https://tools.ietf.org/html/rfc8628#section-3.1 for more information.
if (string.IsNullOrEmpty(context.ClientId))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7056));
context.Logger.LogError(SR.GetResourceString(SR.ID6056));
context.Reject(
error: Errors.InvalidClient,
description: context.Localizer[SR.ID3029, Parameters.ClientId]);
description: context.Localizer[SR.ID2029, Parameters.ClientId]);
return default;
}
@ -405,7 +405,7 @@ namespace OpenIddict.Server
// even if the service was registered and resolved from the dependency injection container.
if (scopes.Count != 0 && !context.Options.EnableDegradedMode)
{
Debug.Assert(_scopeManager is not null, SR.GetResourceString(SR.ID5011));
Debug.Assert(_scopeManager is not null, SR.GetResourceString(SR.ID4011));
await foreach (var scope in _scopeManager.FindByNamesAsync(scopes.ToImmutableArray()))
{
@ -420,11 +420,11 @@ namespace OpenIddict.Server
// If at least one scope was not recognized, return an error.
if (scopes.Count != 0)
{
context.Logger.LogError(SR.GetResourceString(SR.ID7057), scopes);
context.Logger.LogError(SR.GetResourceString(SR.ID6057), scopes);
context.Reject(
error: Errors.InvalidScope,
description: context.Localizer[SR.ID3052, Parameters.Scope]);
description: context.Localizer[SR.ID2052, Parameters.Scope]);
return;
}
@ -439,7 +439,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateClientId() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateClientId() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateClientId(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -464,18 +464,18 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
// Retrieve the application details corresponding to the requested client_id.
// If no entity can be found, this likely indicates that the client_id is invalid.
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
context.Logger.LogError(SR.GetResourceString(SR.ID7058), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6058), context.ClientId);
context.Reject(
error: Errors.InvalidClient,
description: context.Localizer[SR.ID3052]);
description: context.Localizer[SR.ID2052]);
return;
}
@ -491,7 +491,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateClientType() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateClientType() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateClientType(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -516,12 +516,12 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
if (await _applicationManager.HasClientTypeAsync(application, ClientTypes.Public))
@ -529,11 +529,11 @@ namespace OpenIddict.Server
// Reject device requests containing a client_secret when the client is a public application.
if (!string.IsNullOrEmpty(context.ClientSecret))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7059), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6059), context.ClientId);
context.Reject(
error: Errors.InvalidClient,
description: context.Localizer[SR.ID3053, Parameters.ClientSecret]);
description: context.Localizer[SR.ID2053, Parameters.ClientSecret]);
return;
}
@ -544,11 +544,11 @@ namespace OpenIddict.Server
// Confidential and hybrid applications MUST authenticate to protect them from impersonation attacks.
if (string.IsNullOrEmpty(context.ClientSecret))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7060), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6060), context.ClientId);
context.Reject(
error: Errors.InvalidClient,
description: context.Localizer[SR.ID3054, Parameters.ClientSecret]);
description: context.Localizer[SR.ID2054, Parameters.ClientSecret]);
return;
}
@ -563,7 +563,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateClientSecret() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateClientSecret() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateClientSecret(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -588,12 +588,12 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
// If the application is a public client, don't validate the client secret.
@ -602,15 +602,15 @@ namespace OpenIddict.Server
return;
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientSecret), SR.FormatID5000(Parameters.ClientSecret));
Debug.Assert(!string.IsNullOrEmpty(context.ClientSecret), SR.FormatID4000(Parameters.ClientSecret));
if (!await _applicationManager.ValidateClientSecretAsync(application, context.ClientSecret))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7061), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6061), context.ClientId);
context.Reject(
error: Errors.InvalidClient,
description: context.Localizer[SR.ID3055]);
description: context.Localizer[SR.ID2055]);
return;
}
@ -626,7 +626,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateEndpointPermissions() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateEndpointPermissions() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateEndpointPermissions(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -652,22 +652,22 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
// Reject the request if the application is not allowed to use the device endpoint.
if (!await _applicationManager.HasPermissionAsync(application, Permissions.Endpoints.Device))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7062), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6062), context.ClientId);
context.Reject(
error: Errors.UnauthorizedClient,
description: context.Localizer[SR.ID3056]);
description: context.Localizer[SR.ID2056]);
return;
}
@ -683,7 +683,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateScopePermissions() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateScopePermissions() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateScopePermissions(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -709,12 +709,12 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
foreach (var scope in context.Request.GetScopes())
@ -729,11 +729,11 @@ namespace OpenIddict.Server
// Reject the request if the application is not allowed to use the iterated scope.
if (!await _applicationManager.HasPermissionAsync(application, Permissions.Prefixes.Scope + scope))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7063), context.ClientId, scope);
context.Logger.LogError(SR.GetResourceString(SR.ID6063), context.ClientId, scope);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3051]);
description: context.Localizer[SR.ID2051]);
return;
}
@ -796,10 +796,10 @@ namespace OpenIddict.Server
if (notification.Request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1033));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0034));
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7064), notification.Request);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6064), notification.Request);
}
}
@ -856,7 +856,7 @@ namespace OpenIddict.Server
return;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7065));
context.Logger.LogInformation(SR.GetResourceString(SR.ID6065));
}
}
@ -945,7 +945,7 @@ namespace OpenIddict.Server
}
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1034));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0035));
}
}
@ -993,7 +993,7 @@ namespace OpenIddict.Server
return;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1035));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0036));
}
}

36
src/OpenIddict.Server/OpenIddictServerHandlers.Discovery.cs

@ -121,10 +121,10 @@ namespace OpenIddict.Server
if (notification.Request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1036));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0037));
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7066), notification.Request);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6066), notification.Request);
}
}
@ -181,7 +181,7 @@ namespace OpenIddict.Server
return;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7067));
context.Logger.LogInformation(SR.GetResourceString(SR.ID6067));
}
}
@ -315,7 +315,7 @@ namespace OpenIddict.Server
return;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1271));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0272));
}
}
@ -388,7 +388,7 @@ namespace OpenIddict.Server
// At this stage, throw an exception if the issuer cannot be retrieved.
if (issuer is null || !issuer.IsAbsoluteUri)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1022));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0023));
}
// Ensure the issuer ends with a trailing slash, as it is necessary
@ -814,10 +814,10 @@ namespace OpenIddict.Server
if (notification.Request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1037));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0038));
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7068), notification.Request);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6068), notification.Request);
}
}
@ -874,7 +874,7 @@ namespace OpenIddict.Server
return;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7069));
context.Logger.LogInformation(SR.GetResourceString(SR.ID6069));
}
}
@ -942,7 +942,7 @@ namespace OpenIddict.Server
// See https://tools.ietf.org/html/rfc7517#section-4.1
if (string.IsNullOrEmpty(key.Kty))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7070), JsonWebKeyParameterNames.Kty);
context.Logger.LogError(SR.GetResourceString(SR.ID6070), JsonWebKeyParameterNames.Kty);
continue;
}
@ -1050,7 +1050,7 @@ namespace OpenIddict.Server
return;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1038));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0039));
}
}
@ -1086,7 +1086,7 @@ namespace OpenIddict.Server
!credentials.Key.IsSupportedAlgorithm(SecurityAlgorithms.EcdsaSha384) &&
!credentials.Key.IsSupportedAlgorithm(SecurityAlgorithms.EcdsaSha512))
{
context.Logger.LogInformation(SR.GetResourceString(SR.ID7071), credentials.Key.GetType().Name);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6071), credentials.Key.GetType().Name);
continue;
}
@ -1094,7 +1094,7 @@ namespace OpenIddict.Server
if (!credentials.Key.IsSupportedAlgorithm(SecurityAlgorithms.RsaSha256) &&
!credentials.Key.IsSupportedAlgorithm(SecurityAlgorithms.RsaSsaPssSha256))
{
context.Logger.LogInformation(SR.GetResourceString(SR.ID7072), credentials.Key.GetType().Name);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6072), credentials.Key.GetType().Name);
continue;
}
@ -1159,13 +1159,13 @@ namespace OpenIddict.Server
if (parameters is null)
{
context.Logger.LogWarning(SR.GetResourceString(SR.ID7073), credentials.Key.GetType().Name);
context.Logger.LogWarning(SR.GetResourceString(SR.ID6073), credentials.Key.GetType().Name);
continue;
}
Debug.Assert(parameters.Value.Exponent is not null &&
parameters.Value.Modulus is not null, SR.GetResourceString(SR.ID5003));
parameters.Value.Modulus is not null, SR.GetResourceString(SR.ID4003));
key.Kty = JsonWebAlgorithmsKeyTypes.RSA;
@ -1193,15 +1193,15 @@ namespace OpenIddict.Server
if (parameters is null)
{
context.Logger.LogWarning(SR.GetResourceString(SR.ID7074), credentials.Key.GetType().Name);
context.Logger.LogWarning(SR.GetResourceString(SR.ID6074), credentials.Key.GetType().Name);
continue;
}
Debug.Assert(parameters.Value.Q.X is not null &&
parameters.Value.Q.Y is not null, SR.GetResourceString(SR.ID5004));
parameters.Value.Q.Y is not null, SR.GetResourceString(SR.ID4004));
Debug.Assert(parameters.Value.Curve.IsNamed, SR.GetResourceString(SR.ID5005));
Debug.Assert(parameters.Value.Curve.IsNamed, SR.GetResourceString(SR.ID4005));
key.Kty = JsonWebAlgorithmsKeyTypes.EllipticCurve;
key.Crv = IsCurve(parameters.Value, ECCurve.NamedCurves.nistP256) ? JsonWebKeyECTypes.P256 :
@ -1252,7 +1252,7 @@ namespace OpenIddict.Server
using var hash = CryptoConfig.CreateFromName(algorithm.Name) as HashAlgorithm;
if (hash is null || hash is KeyedHashAlgorithm)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1216));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0217));
}
return hash.ComputeHash(certificate.RawData);

190
src/OpenIddict.Server/OpenIddictServerHandlers.Exchange.cs

@ -125,10 +125,10 @@ namespace OpenIddict.Server
if (notification.Request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1039));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0040));
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7075), notification.Request);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6075), notification.Request);
}
}
@ -189,7 +189,7 @@ namespace OpenIddict.Server
return;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7076));
context.Logger.LogInformation(SR.GetResourceString(SR.ID6076));
}
}
@ -278,7 +278,7 @@ namespace OpenIddict.Server
}
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1040));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0041));
}
}
@ -326,7 +326,7 @@ namespace OpenIddict.Server
return;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1041));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0042));
}
}
@ -356,11 +356,11 @@ namespace OpenIddict.Server
// Reject token requests missing the mandatory grant_type parameter.
if (string.IsNullOrEmpty(context.Request.GrantType))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7077), Parameters.GrantType);
context.Logger.LogError(SR.GetResourceString(SR.ID6077), Parameters.GrantType);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3029, Parameters.GrantType]);
description: context.Localizer[SR.ID2029, Parameters.GrantType]);
return default;
}
@ -368,11 +368,11 @@ namespace OpenIddict.Server
// Reject token requests that don't specify a supported grant type.
if (!context.Options.GrantTypes.Contains(context.Request.GrantType))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7078), context.Request.GrantType);
context.Logger.LogError(SR.GetResourceString(SR.ID6078), context.Request.GrantType);
context.Reject(
error: Errors.UnsupportedGrantType,
description: context.Localizer[SR.ID3032, Parameters.GrantType]);
description: context.Localizer[SR.ID2032, Parameters.GrantType]);
return default;
}
@ -383,7 +383,7 @@ namespace OpenIddict.Server
{
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3035, Scopes.OfflineAccess]);
description: context.Localizer[SR.ID2035, Scopes.OfflineAccess]);
return default;
}
@ -427,11 +427,11 @@ namespace OpenIddict.Server
// See https://tools.ietf.org/html/rfc6749#section-4.1.3 for more information.
if (!context.Options.AcceptAnonymousClients || context.Request.IsAuthorizationCodeGrantType())
{
context.Logger.LogError(SR.GetResourceString(SR.ID7077), Parameters.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6077), Parameters.ClientId);
context.Reject(
error: Errors.InvalidClient,
description: context.Localizer[SR.ID3029, Parameters.ClientId]);
description: context.Localizer[SR.ID2029, Parameters.ClientId]);
return default;
}
@ -468,11 +468,11 @@ namespace OpenIddict.Server
// See https://tools.ietf.org/html/rfc6749#section-4.1.3 for more information.
if (context.Request.IsAuthorizationCodeGrantType() && string.IsNullOrEmpty(context.Request.Code))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7077), Parameters.Code);
context.Logger.LogError(SR.GetResourceString(SR.ID6077), Parameters.Code);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3029, Parameters.Code]);
description: context.Localizer[SR.ID2029, Parameters.Code]);
return default;
}
@ -512,7 +512,7 @@ namespace OpenIddict.Server
{
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3057, Parameters.ClientId, Parameters.ClientSecret]);
description: context.Localizer[SR.ID2057, Parameters.ClientId, Parameters.ClientSecret]);
return default;
}
@ -551,7 +551,7 @@ namespace OpenIddict.Server
{
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3058, Parameters.DeviceCode]);
description: context.Localizer[SR.ID2058, Parameters.DeviceCode]);
return default;
}
@ -588,11 +588,11 @@ namespace OpenIddict.Server
// See https://tools.ietf.org/html/rfc6749#section-6 for more information.
if (context.Request.IsRefreshTokenGrantType() && string.IsNullOrEmpty(context.Request.RefreshToken))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7077), Parameters.RefreshToken);
context.Logger.LogError(SR.GetResourceString(SR.ID6077), Parameters.RefreshToken);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3029, Parameters.RefreshToken]);
description: context.Localizer[SR.ID2029, Parameters.RefreshToken]);
return default;
}
@ -630,11 +630,11 @@ namespace OpenIddict.Server
if (context.Request.IsPasswordGrantType() && (string.IsNullOrEmpty(context.Request.Username) ||
string.IsNullOrEmpty(context.Request.Password)))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7079));
context.Logger.LogError(SR.GetResourceString(SR.ID6079));
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3059, Parameters.Username, Parameters.Password]);
description: context.Localizer[SR.ID2059, Parameters.Username, Parameters.Password]);
return default;
}
@ -686,7 +686,7 @@ namespace OpenIddict.Server
// even if the service was registered and resolved from the dependency injection container.
if (scopes.Count != 0 && !context.Options.EnableDegradedMode)
{
Debug.Assert(_scopeManager is not null, SR.GetResourceString(SR.ID5011));
Debug.Assert(_scopeManager is not null, SR.GetResourceString(SR.ID4011));
await foreach (var scope in _scopeManager.FindByNamesAsync(scopes.ToImmutableArray()))
{
@ -701,11 +701,11 @@ namespace OpenIddict.Server
// If at least one scope was not recognized, return an error.
if (scopes.Count != 0)
{
context.Logger.LogError(SR.GetResourceString(SR.ID7080), scopes);
context.Logger.LogError(SR.GetResourceString(SR.ID6080), scopes);
context.Reject(
error: Errors.InvalidScope,
description: context.Localizer[SR.ID3052, Parameters.Scope]);
description: context.Localizer[SR.ID2052, Parameters.Scope]);
return;
}
@ -720,7 +720,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateClientId() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateClientId() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateClientId(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -745,18 +745,18 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
// Retrieve the application details corresponding to the requested client_id.
// If no entity can be found, this likely indicates that the client_id is invalid.
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
context.Logger.LogError(SR.GetResourceString(SR.ID7081), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6081), context.ClientId);
context.Reject(
error: Errors.InvalidClient,
description: context.Localizer[SR.ID3052, Parameters.ClientId]);
description: context.Localizer[SR.ID2052, Parameters.ClientId]);
return;
}
@ -772,7 +772,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateClientType() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateClientType() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateClientType(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -797,12 +797,12 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
if (await _applicationManager.HasClientTypeAsync(application, ClientTypes.Public))
@ -810,11 +810,11 @@ namespace OpenIddict.Server
// Public applications are not allowed to use the client credentials grant.
if (context.Request.IsClientCredentialsGrantType())
{
context.Logger.LogError(SR.GetResourceString(SR.ID7082), context.Request.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6082), context.Request.ClientId);
context.Reject(
error: Errors.UnauthorizedClient,
description: context.Localizer[SR.ID3043, Parameters.GrantType]);
description: context.Localizer[SR.ID2043, Parameters.GrantType]);
return;
}
@ -822,11 +822,11 @@ namespace OpenIddict.Server
// Reject token requests containing a client_secret when the client is a public application.
if (!string.IsNullOrEmpty(context.ClientSecret))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7083), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6083), context.ClientId);
context.Reject(
error: Errors.InvalidClient,
description: context.Localizer[SR.ID3053, Parameters.ClientSecret]);
description: context.Localizer[SR.ID2053, Parameters.ClientSecret]);
return;
}
@ -837,11 +837,11 @@ namespace OpenIddict.Server
// Confidential and hybrid applications MUST authenticate to protect them from impersonation attacks.
if (string.IsNullOrEmpty(context.ClientSecret))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7084), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6084), context.ClientId);
context.Reject(
error: Errors.InvalidClient,
description: context.Localizer[SR.ID3054, Parameters.ClientSecret]);
description: context.Localizer[SR.ID2054, Parameters.ClientSecret]);
return;
}
@ -856,7 +856,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateClientSecret() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateClientSecret() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateClientSecret(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -881,12 +881,12 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
// If the application is a public client, don't validate the client secret.
@ -895,15 +895,15 @@ namespace OpenIddict.Server
return;
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientSecret), SR.FormatID5000(Parameters.ClientSecret));
Debug.Assert(!string.IsNullOrEmpty(context.ClientSecret), SR.FormatID4000(Parameters.ClientSecret));
if (!await _applicationManager.ValidateClientSecretAsync(application, context.ClientSecret))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7085), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6085), context.ClientId);
context.Reject(
error: Errors.InvalidClient,
description: context.Localizer[SR.ID3055]);
description: context.Localizer[SR.ID2055]);
return;
}
@ -919,7 +919,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateEndpointPermissions() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateEndpointPermissions() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateEndpointPermissions(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -945,22 +945,22 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
// Reject the request if the application is not allowed to use the token endpoint.
if (!await _applicationManager.HasPermissionAsync(application, Permissions.Endpoints.Token))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7086), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6086), context.ClientId);
context.Reject(
error: Errors.UnauthorizedClient,
description: context.Localizer[SR.ID3063]);
description: context.Localizer[SR.ID2063]);
return;
}
@ -976,7 +976,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateGrantTypePermissions() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateGrantTypePermissions() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateGrantTypePermissions(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -1002,22 +1002,22 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
// Reject the request if the application is not allowed to use the specified grant type.
if (!await _applicationManager.HasPermissionAsync(application, Permissions.Prefixes.GrantType + context.Request.GrantType))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7087), context.ClientId, context.Request.GrantType);
context.Logger.LogError(SR.GetResourceString(SR.ID6087), context.ClientId, context.Request.GrantType);
context.Reject(
error: Errors.UnauthorizedClient,
description: context.Localizer[SR.ID3064]);
description: context.Localizer[SR.ID2064]);
return;
}
@ -1027,11 +1027,11 @@ namespace OpenIddict.Server
if (context.Request.HasScope(Scopes.OfflineAccess) &&
!await _applicationManager.HasPermissionAsync(application, Permissions.GrantTypes.RefreshToken))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7088), context.ClientId, Scopes.OfflineAccess);
context.Logger.LogError(SR.GetResourceString(SR.ID6088), context.ClientId, Scopes.OfflineAccess);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3065, Scopes.OfflineAccess]);
description: context.Localizer[SR.ID2065, Scopes.OfflineAccess]);
return;
}
@ -1047,7 +1047,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateScopePermissions() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateScopePermissions() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateScopePermissions(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -1073,12 +1073,12 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
foreach (var scope in context.Request.GetScopes())
@ -1093,11 +1093,11 @@ namespace OpenIddict.Server
// Reject the request if the application is not allowed to use the iterated scope.
if (!await _applicationManager.HasPermissionAsync(application, Permissions.Prefixes.Scope + scope))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7089), context.ClientId, scope);
context.Logger.LogError(SR.GetResourceString(SR.ID6089), context.ClientId, scope);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3051]);
description: context.Localizer[SR.ID2051]);
return;
}
@ -1114,7 +1114,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateProofKeyForCodeExchangeRequirement() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateProofKeyForCodeExchangeRequirement() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateProofKeyForCodeExchangeRequirement(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -1151,21 +1151,21 @@ namespace OpenIddict.Server
return;
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
if (await _applicationManager.HasRequirementAsync(application, Requirements.Features.ProofKeyForCodeExchange))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7077), Parameters.CodeVerifier);
context.Logger.LogError(SR.GetResourceString(SR.ID6077), Parameters.CodeVerifier);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3054, Parameters.CodeVerifier]);
description: context.Localizer[SR.ID2054, Parameters.CodeVerifier]);
return;
}
@ -1272,7 +1272,7 @@ namespace OpenIddict.Server
return default;
}
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID5006));
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID4006));
var presenters = context.Principal.GetPresenters();
if (presenters.IsDefaultOrEmpty)
@ -1281,12 +1281,12 @@ namespace OpenIddict.Server
// was issued to a public client but cannot be null for an authorization or device code grant request.
if (context.Request.IsAuthorizationCodeGrantType())
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1042));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0043));
}
if (context.Request.IsDeviceCodeGrantType())
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1043));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0044));
}
return default;
@ -1296,13 +1296,13 @@ namespace OpenIddict.Server
// reject the request if the client_id of the caller cannot be retrieved or inferred.
if (string.IsNullOrEmpty(context.ClientId))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7090));
context.Logger.LogError(SR.GetResourceString(SR.ID6090));
context.Reject(
error: Errors.InvalidGrant,
description: context.Request.IsAuthorizationCodeGrantType() ? context.Localizer[SR.ID3066] :
context.Request.IsDeviceCodeGrantType() ? context.Localizer[SR.ID3067] :
context.Localizer[SR.ID3068]);
description: context.Request.IsAuthorizationCodeGrantType() ? context.Localizer[SR.ID2066] :
context.Request.IsDeviceCodeGrantType() ? context.Localizer[SR.ID2067] :
context.Localizer[SR.ID2068]);
return default;
}
@ -1313,13 +1313,13 @@ namespace OpenIddict.Server
// and http://openid.net/specs/openid-connect-core-1_0.html#RefreshingAccessToken.
if (!presenters.Contains(context.ClientId))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7091));
context.Logger.LogError(SR.GetResourceString(SR.ID6091));
context.Reject(
error: Errors.InvalidGrant,
description: context.Request.IsAuthorizationCodeGrantType() ? context.Localizer[SR.ID3069] :
context.Request.IsDeviceCodeGrantType() ? context.Localizer[SR.ID3070] :
context.Localizer[SR.ID3071]);
description: context.Request.IsAuthorizationCodeGrantType() ? context.Localizer[SR.ID2069] :
context.Request.IsDeviceCodeGrantType() ? context.Localizer[SR.ID2070] :
context.Localizer[SR.ID2071]);
return default;
}
@ -1356,7 +1356,7 @@ namespace OpenIddict.Server
return default;
}
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID5006));
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID4006));
// Validate the redirect_uri sent by the client application as part of this token request.
// Note: for pure OAuth 2.0 requests, redirect_uri is only mandatory if the authorization request
@ -1373,22 +1373,22 @@ namespace OpenIddict.Server
if (string.IsNullOrEmpty(context.Request.RedirectUri))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7077), Parameters.RedirectUri);
context.Logger.LogError(SR.GetResourceString(SR.ID6077), Parameters.RedirectUri);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3029, Parameters.RedirectUri]);
description: context.Localizer[SR.ID2029, Parameters.RedirectUri]);
return default;
}
if (!string.Equals(address, context.Request.RedirectUri, StringComparison.Ordinal))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7092), Parameters.RedirectUri);
context.Logger.LogError(SR.GetResourceString(SR.ID6092), Parameters.RedirectUri);
context.Reject(
error: Errors.InvalidGrant,
description: context.Localizer[SR.ID3072, Parameters.RedirectUri]);
description: context.Localizer[SR.ID2072, Parameters.RedirectUri]);
return default;
}
@ -1425,7 +1425,7 @@ namespace OpenIddict.Server
return default;
}
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID5006));
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID4006));
// Note: the ValidateProofKeyForCodeExchangeRequirement handler (invoked earlier) ensures
// a code_verifier is specified if the proof key for code exchange requirement was enforced
@ -1440,11 +1440,11 @@ namespace OpenIddict.Server
// when code_challenge private claim was attached to the authorization code.
if (!string.IsNullOrEmpty(context.Request.CodeVerifier))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7093), Parameters.CodeVerifier);
context.Logger.LogError(SR.GetResourceString(SR.ID6093), Parameters.CodeVerifier);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3073, Parameters.CodeVerifier, Parameters.CodeChallenge]);
description: context.Localizer[SR.ID2073, Parameters.CodeVerifier, Parameters.CodeChallenge]);
return default;
}
@ -1455,11 +1455,11 @@ namespace OpenIddict.Server
// Get the code verifier from the token request. If it cannot be found, return an invalid_grant error.
if (string.IsNullOrEmpty(context.Request.CodeVerifier))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7077), Parameters.CodeVerifier);
context.Logger.LogError(SR.GetResourceString(SR.ID6077), Parameters.CodeVerifier);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3029, Parameters.CodeVerifier]);
description: context.Localizer[SR.ID2029, Parameters.CodeVerifier]);
return default;
}
@ -1468,7 +1468,7 @@ namespace OpenIddict.Server
var method = context.Principal.GetClaim(Claims.Private.CodeChallengeMethod);
if (string.IsNullOrEmpty(method))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1267));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0268));
}
// Note: when using the "plain" code challenge method, no hashing is actually performed.
@ -1488,7 +1488,7 @@ namespace OpenIddict.Server
else
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1044));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0045));
}
// Compare the verifier and the code challenge: if the two don't match, return an error.
@ -1499,11 +1499,11 @@ namespace OpenIddict.Server
if (!Arrays.ConstantTimeAreEqual(data, Encoding.ASCII.GetBytes(challenge)))
#endif
{
context.Logger.LogError(SR.GetResourceString(SR.ID7092), Parameters.CodeVerifier);
context.Logger.LogError(SR.GetResourceString(SR.ID6092), Parameters.CodeVerifier);
context.Reject(
error: Errors.InvalidGrant,
description: context.Localizer[SR.ID3052, Parameters.CodeVerifier]);
description: context.Localizer[SR.ID2052, Parameters.CodeVerifier]);
return default;
}
@ -1546,7 +1546,7 @@ namespace OpenIddict.Server
return default;
}
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID5006));
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID4006));
// When an explicit scope parameter has been included in the token request
// but was missing from the initial request, the request MUST be rejected.
@ -1554,11 +1554,11 @@ namespace OpenIddict.Server
var scopes = new HashSet<string>(context.Principal.GetScopes(), StringComparer.Ordinal);
if (scopes.Count == 0)
{
context.Logger.LogError(SR.GetResourceString(SR.ID7094), Parameters.Scope);
context.Logger.LogError(SR.GetResourceString(SR.ID6094), Parameters.Scope);
context.Reject(
error: Errors.InvalidGrant,
description: context.Localizer[SR.ID3074, Parameters.Scope]);
description: context.Localizer[SR.ID2074, Parameters.Scope]);
return default;
}
@ -1569,11 +1569,11 @@ namespace OpenIddict.Server
// See https://tools.ietf.org/html/rfc6749#section-6 for more information.
else if (!scopes.IsSupersetOf(context.Request.GetScopes()))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7095), Parameters.Scope);
context.Logger.LogError(SR.GetResourceString(SR.ID6095), Parameters.Scope);
context.Reject(
error: Errors.InvalidGrant,
description: context.Localizer[SR.ID3052, Parameters.Scope]);
description: context.Localizer[SR.ID2052, Parameters.Scope]);
return default;
}
@ -1613,7 +1613,7 @@ namespace OpenIddict.Server
var notification = context.Transaction.GetProperty<ValidateTokenRequestContext>(
typeof(ValidateTokenRequestContext).FullName!) ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1006));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0007));
context.Principal ??= notification.Principal;

90
src/OpenIddict.Server/OpenIddictServerHandlers.Introspection.cs

@ -122,10 +122,10 @@ namespace OpenIddict.Server
if (notification.Request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1045));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0046));
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7096), notification.Request);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6096), notification.Request);
}
}
@ -186,7 +186,7 @@ namespace OpenIddict.Server
return;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7097));
context.Logger.LogInformation(SR.GetResourceString(SR.ID6097));
}
}
@ -337,7 +337,7 @@ namespace OpenIddict.Server
return;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1046));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0047));
}
}
@ -367,11 +367,11 @@ namespace OpenIddict.Server
// Reject introspection requests missing the mandatory token parameter.
if (string.IsNullOrEmpty(context.Request.Token))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7098), Parameters.Token);
context.Logger.LogError(SR.GetResourceString(SR.ID6098), Parameters.Token);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3029, Parameters.Token]);
description: context.Localizer[SR.ID2029, Parameters.Token]);
return default;
}
@ -406,11 +406,11 @@ namespace OpenIddict.Server
// At this stage, reject the introspection request unless the client identification requirement was disabled.
if (!context.Options.AcceptAnonymousClients && string.IsNullOrEmpty(context.ClientId))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7098), Parameters.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6098), Parameters.ClientId);
context.Reject(
error: Errors.InvalidClient,
description: context.Localizer[SR.ID3029, Parameters.ClientId]);
description: context.Localizer[SR.ID2029, Parameters.ClientId]);
return default;
}
@ -427,7 +427,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateClientId() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateClientId() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateClientId(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -452,18 +452,18 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
// Retrieve the application details corresponding to the requested client_id.
// If no entity can be found, this likely indicates that the client_id is invalid.
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
context.Logger.LogError(SR.GetResourceString(SR.ID7099), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6099), context.ClientId);
context.Reject(
error: Errors.InvalidClient,
description: context.Localizer[SR.ID3052, Parameters.ClientId]);
description: context.Localizer[SR.ID2052, Parameters.ClientId]);
return;
}
@ -479,7 +479,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateClientType() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateClientType() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateClientType(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -504,12 +504,12 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
if (await _applicationManager.HasClientTypeAsync(application, ClientTypes.Public))
@ -517,11 +517,11 @@ namespace OpenIddict.Server
// Reject introspection requests containing a client_secret when the client is a public application.
if (!string.IsNullOrEmpty(context.ClientSecret))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7100), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6100), context.ClientId);
context.Reject(
error: Errors.InvalidClient,
description: context.Localizer[SR.ID3053, Parameters.ClientSecret]);
description: context.Localizer[SR.ID2053, Parameters.ClientSecret]);
return;
}
@ -532,11 +532,11 @@ namespace OpenIddict.Server
// Confidential and hybrid applications MUST authenticate to protect them from impersonation attacks.
if (string.IsNullOrEmpty(context.ClientSecret))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7101), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6101), context.ClientId);
context.Reject(
error: Errors.InvalidClient,
description: context.Localizer[SR.ID3054, Parameters.ClientSecret]);
description: context.Localizer[SR.ID2054, Parameters.ClientSecret]);
return;
}
@ -551,7 +551,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateClientSecret() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateClientSecret() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateClientSecret(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -576,12 +576,12 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
// If the application is a public client, don't validate the client secret.
@ -590,15 +590,15 @@ namespace OpenIddict.Server
return;
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientSecret), SR.FormatID5000(Parameters.ClientSecret));
Debug.Assert(!string.IsNullOrEmpty(context.ClientSecret), SR.FormatID4000(Parameters.ClientSecret));
if (!await _applicationManager.ValidateClientSecretAsync(application, context.ClientSecret))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7102), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6102), context.ClientId);
context.Reject(
error: Errors.InvalidClient,
description: context.Localizer[SR.ID3055]);
description: context.Localizer[SR.ID2055]);
return;
}
@ -614,7 +614,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateEndpointPermissions() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateEndpointPermissions() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateEndpointPermissions(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -640,22 +640,22 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
// Reject the request if the application is not allowed to use the introspection endpoint.
if (!await _applicationManager.HasPermissionAsync(application, Permissions.Endpoints.Introspection))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7103), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6103), context.ClientId);
context.Reject(
error: Errors.UnauthorizedClient,
description: context.Localizer[SR.ID3075]);
description: context.Localizer[SR.ID2075]);
return;
}
@ -742,16 +742,16 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID5006));
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID4006));
if (!context.Principal.HasTokenType(TokenTypeHints.AccessToken) &&
!context.Principal.HasTokenType(TokenTypeHints.RefreshToken))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7104));
context.Logger.LogError(SR.GetResourceString(SR.ID6104));
context.Reject(
error: Errors.UnsupportedTokenType,
description: context.Localizer[SR.ID3076]);
description: context.Localizer[SR.ID2076]);
return default;
}
@ -788,8 +788,8 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID5006));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID4006));
// When the introspected token is an access token, the caller must be listed either as a presenter
// (i.e the party the token was issued to) or as an audience (i.e a resource server/API).
@ -799,11 +799,11 @@ namespace OpenIddict.Server
context.Principal.HasAudience() && !context.Principal.HasAudience(context.ClientId) &&
context.Principal.HasPresenter() && !context.Principal.HasPresenter(context.ClientId))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7106));
context.Logger.LogError(SR.GetResourceString(SR.ID6106));
context.Reject(
error: Errors.InvalidToken,
description: context.Localizer[SR.ID3077]);
description: context.Localizer[SR.ID2077]);
return default;
}
@ -815,11 +815,11 @@ namespace OpenIddict.Server
if (context.Principal.HasTokenType(TokenTypeHints.RefreshToken) &&
context.Principal.HasPresenter() && !context.Principal.HasPresenter(context.ClientId))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7108));
context.Logger.LogError(SR.GetResourceString(SR.ID6108));
context.Reject(
error: Errors.InvalidToken,
description: context.Localizer[SR.ID3077]);
description: context.Localizer[SR.ID2077]);
return default;
}
@ -854,7 +854,7 @@ namespace OpenIddict.Server
var notification = context.Transaction.GetProperty<ValidateIntrospectionRequestContext>(
typeof(ValidateIntrospectionRequestContext).FullName!) ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1006));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0007));
context.Principal ??= notification.Principal;
@ -885,7 +885,7 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID5006));
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID4006));
context.TokenId = context.Principal.GetClaim(Claims.JwtId);
context.TokenUsage = context.Principal.GetTokenType();
@ -920,7 +920,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public AttachApplicationClaims() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public AttachApplicationClaims() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public AttachApplicationClaims(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -945,8 +945,8 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.Request.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID5006));
Debug.Assert(!string.IsNullOrEmpty(context.Request.ClientId), SR.FormatID4000(Parameters.ClientId));
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID4006));
// Don't return application-specific claims if the token is not an access token.
if (!context.Principal.HasTokenType(TokenTypeHints.AccessToken))
@ -965,7 +965,7 @@ namespace OpenIddict.Server
var application = await _applicationManager.FindByClientIdAsync(context.Request.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
// Public clients are not allowed to access sensitive claims as authentication cannot be enforced.

94
src/OpenIddict.Server/OpenIddictServerHandlers.Revocation.cs

@ -110,10 +110,10 @@ namespace OpenIddict.Server
if (notification.Request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1047));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0048));
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7109), notification.Request);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6109), notification.Request);
}
}
@ -174,7 +174,7 @@ namespace OpenIddict.Server
return;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7110));
context.Logger.LogInformation(SR.GetResourceString(SR.ID6110));
}
}
@ -279,7 +279,7 @@ namespace OpenIddict.Server
return;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1048));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0049));
}
}
@ -309,11 +309,11 @@ namespace OpenIddict.Server
// Reject revocation requests missing the mandatory token parameter.
if (string.IsNullOrEmpty(context.Request.Token))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7111), Parameters.Token);
context.Logger.LogError(SR.GetResourceString(SR.ID6111), Parameters.Token);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3029, Parameters.Token]);
description: context.Localizer[SR.ID2029, Parameters.Token]);
return default;
}
@ -348,11 +348,11 @@ namespace OpenIddict.Server
// At this stage, reject the revocation request unless the client identification requirement was disabled.
if (!context.Options.AcceptAnonymousClients && string.IsNullOrEmpty(context.ClientId))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7111), Parameters.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6111), Parameters.ClientId);
context.Reject(
error: Errors.InvalidClient,
description: context.Localizer[SR.ID3029, Parameters.ClientId]);
description: context.Localizer[SR.ID2029, Parameters.ClientId]);
return default;
}
@ -369,7 +369,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateClientId() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateClientId() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateClientId(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -394,18 +394,18 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
// Retrieve the application details corresponding to the requested client_id.
// If no entity can be found, this likely indicates that the client_id is invalid.
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
context.Logger.LogError(SR.GetResourceString(SR.ID7112), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6112), context.ClientId);
context.Reject(
error: Errors.InvalidClient,
description: context.Localizer[SR.ID3052, Parameters.ClientId]);
description: context.Localizer[SR.ID2052, Parameters.ClientId]);
return;
}
@ -421,7 +421,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateClientType() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateClientType() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateClientType(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -446,12 +446,12 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
if (await _applicationManager.HasClientTypeAsync(application, ClientTypes.Public))
@ -459,11 +459,11 @@ namespace OpenIddict.Server
// Reject revocation requests containing a client_secret when the client is a public application.
if (!string.IsNullOrEmpty(context.ClientSecret))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7113), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6113), context.ClientId);
context.Reject(
error: Errors.InvalidClient,
description: context.Localizer[SR.ID3053, Parameters.ClientSecret]);
description: context.Localizer[SR.ID2053, Parameters.ClientSecret]);
return;
}
@ -474,11 +474,11 @@ namespace OpenIddict.Server
// Confidential and hybrid applications MUST authenticate to protect them from impersonation attacks.
if (string.IsNullOrEmpty(context.ClientSecret))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7114), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6114), context.ClientId);
context.Reject(
error: Errors.InvalidClient,
description: context.Localizer[SR.ID3054, Parameters.ClientSecret]);
description: context.Localizer[SR.ID2054, Parameters.ClientSecret]);
return;
}
@ -493,7 +493,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateClientSecret() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateClientSecret() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateClientSecret(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -518,12 +518,12 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
// If the application is a public client, don't validate the client secret.
@ -532,15 +532,15 @@ namespace OpenIddict.Server
return;
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientSecret), SR.FormatID5000(Parameters.ClientSecret));
Debug.Assert(!string.IsNullOrEmpty(context.ClientSecret), SR.FormatID4000(Parameters.ClientSecret));
if (!await _applicationManager.ValidateClientSecretAsync(application, context.ClientSecret))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7115), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6115), context.ClientId);
context.Reject(
error: Errors.InvalidClient,
description: context.Localizer[SR.ID3055]);
description: context.Localizer[SR.ID2055]);
return;
}
@ -556,7 +556,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateEndpointPermissions() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateEndpointPermissions() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateEndpointPermissions(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -582,22 +582,22 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
var application = await _applicationManager.FindByClientIdAsync(context.ClientId);
if (application is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1031));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0032));
}
// Reject the request if the application is not allowed to use the revocation endpoint.
if (!await _applicationManager.HasPermissionAsync(application, Permissions.Endpoints.Revocation))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7116), context.ClientId);
context.Logger.LogError(SR.GetResourceString(SR.ID6116), context.ClientId);
context.Reject(
error: Errors.UnauthorizedClient,
description: context.Localizer[SR.ID3078]);
description: context.Localizer[SR.ID2078]);
return;
}
@ -684,16 +684,16 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID5006));
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID4006));
if (!context.Principal.HasTokenType(TokenTypeHints.AccessToken) &&
!context.Principal.HasTokenType(TokenTypeHints.RefreshToken))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7117));
context.Logger.LogError(SR.GetResourceString(SR.ID6117));
context.Reject(
error: Errors.UnsupportedTokenType,
description: context.Localizer[SR.ID3079]);
description: context.Localizer[SR.ID2079]);
return default;
}
@ -730,8 +730,8 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID5000(Parameters.ClientId));
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID5006));
Debug.Assert(!string.IsNullOrEmpty(context.ClientId), SR.FormatID4000(Parameters.ClientId));
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID4006));
// When the revoked token is an access token, the caller must be listed either as a presenter
// (i.e the party the token was issued to) or as an audience (i.e a resource server/API).
@ -741,11 +741,11 @@ namespace OpenIddict.Server
context.Principal.HasAudience() && !context.Principal.HasAudience(context.ClientId) &&
context.Principal.HasPresenter() && !context.Principal.HasPresenter(context.ClientId))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7119));
context.Logger.LogError(SR.GetResourceString(SR.ID6119));
context.Reject(
error: Errors.InvalidToken,
description: context.Localizer[SR.ID3080]);
description: context.Localizer[SR.ID2080]);
return default;
}
@ -757,11 +757,11 @@ namespace OpenIddict.Server
if (context.Principal.HasTokenType(TokenTypeHints.RefreshToken) &&
context.Principal.HasPresenter() && !context.Principal.HasPresenter(context.ClientId))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7121));
context.Logger.LogError(SR.GetResourceString(SR.ID6121));
context.Reject(
error: Errors.InvalidToken,
description: context.Localizer[SR.ID3080]);
description: context.Localizer[SR.ID2080]);
return default;
}
@ -796,7 +796,7 @@ namespace OpenIddict.Server
var notification = context.Transaction.GetProperty<ValidateRevocationRequestContext>(
typeof(ValidateRevocationRequestContext).FullName!) ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1006));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0007));
context.Principal ??= notification.Principal;
@ -812,7 +812,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictTokenManager _tokenManager;
public RevokeToken() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public RevokeToken() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public RevokeToken(IOpenIddictTokenManager tokenManager)
=> _tokenManager = tokenManager;
@ -836,17 +836,17 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID5006));
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID4006));
// Extract the token identifier from the authentication principal.
var identifier = context.Principal.GetTokenId();
if (string.IsNullOrEmpty(identifier))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7122));
context.Logger.LogError(SR.GetResourceString(SR.ID6122));
context.Reject(
error: Errors.UnsupportedTokenType,
description: context.Localizer[SR.ID3079]);
description: context.Localizer[SR.ID2079]);
return;
}
@ -854,11 +854,11 @@ namespace OpenIddict.Server
var token = await _tokenManager.FindByIdAsync(identifier);
if (token is null)
{
context.Logger.LogInformation(SR.GetResourceString(SR.ID7123), identifier);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6123), identifier);
context.Reject(
error: Errors.InvalidToken,
description: context.Localizer[SR.ID3004]);
description: context.Localizer[SR.ID2004]);
return;
}
@ -868,7 +868,7 @@ namespace OpenIddict.Server
{
context.Reject(
error: Errors.UnsupportedTokenType,
description: context.Localizer[SR.ID3079]);
description: context.Localizer[SR.ID2079]);
return;
}

26
src/OpenIddict.Server/OpenIddictServerHandlers.Session.cs

@ -99,10 +99,10 @@ namespace OpenIddict.Server
if (notification.Request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1049));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0050));
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7124), notification.Request);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6124), notification.Request);
}
}
@ -163,7 +163,7 @@ namespace OpenIddict.Server
return;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7125));
context.Logger.LogInformation(SR.GetResourceString(SR.ID6125));
}
}
@ -251,7 +251,7 @@ namespace OpenIddict.Server
}
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1050));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0051));
}
}
@ -299,7 +299,7 @@ namespace OpenIddict.Server
return;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1051));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0052));
}
}
@ -334,22 +334,22 @@ namespace OpenIddict.Server
// If an optional post_logout_redirect_uri was provided, validate it.
if (!Uri.TryCreate(context.PostLogoutRedirectUri, UriKind.Absolute, out Uri? uri) || !uri.IsWellFormedOriginalString())
{
context.Logger.LogError(SR.GetResourceString(SR.ID7126), Parameters.PostLogoutRedirectUri, context.PostLogoutRedirectUri);
context.Logger.LogError(SR.GetResourceString(SR.ID6126), Parameters.PostLogoutRedirectUri, context.PostLogoutRedirectUri);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3030, Parameters.PostLogoutRedirectUri]);
description: context.Localizer[SR.ID2030, Parameters.PostLogoutRedirectUri]);
return default;
}
if (!string.IsNullOrEmpty(uri.Fragment))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7127), Parameters.PostLogoutRedirectUri, context.PostLogoutRedirectUri);
context.Logger.LogError(SR.GetResourceString(SR.ID6127), Parameters.PostLogoutRedirectUri, context.PostLogoutRedirectUri);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3031, Parameters.PostLogoutRedirectUri]);
description: context.Localizer[SR.ID2031, Parameters.PostLogoutRedirectUri]);
return default;
}
@ -366,7 +366,7 @@ namespace OpenIddict.Server
{
private readonly IOpenIddictApplicationManager _applicationManager;
public ValidateClientPostLogoutRedirectUri() => throw new InvalidOperationException(SR.GetResourceString(SR.ID1015));
public ValidateClientPostLogoutRedirectUri() => throw new InvalidOperationException(SR.GetResourceString(SR.ID0016));
public ValidateClientPostLogoutRedirectUri(IOpenIddictApplicationManager applicationManager)
=> _applicationManager = applicationManager;
@ -391,15 +391,15 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(!string.IsNullOrEmpty(context.PostLogoutRedirectUri), SR.FormatID5000(Parameters.PostLogoutRedirectUri));
Debug.Assert(!string.IsNullOrEmpty(context.PostLogoutRedirectUri), SR.FormatID4000(Parameters.PostLogoutRedirectUri));
if (!await ValidatePostLogoutRedirectUriAsync(context.PostLogoutRedirectUri))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7128), context.PostLogoutRedirectUri);
context.Logger.LogError(SR.GetResourceString(SR.ID6128), context.PostLogoutRedirectUri);
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3052, Parameters.PostLogoutRedirectUri]);
description: context.Localizer[SR.ID2052, Parameters.PostLogoutRedirectUri]);
return;
}

18
src/OpenIddict.Server/OpenIddictServerHandlers.Userinfo.cs

@ -101,10 +101,10 @@ namespace OpenIddict.Server
if (notification.Request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1052));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0053));
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7129), notification.Request);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6129), notification.Request);
}
}
@ -165,7 +165,7 @@ namespace OpenIddict.Server
return;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7130));
context.Logger.LogInformation(SR.GetResourceString(SR.ID6130));
}
}
@ -305,7 +305,7 @@ namespace OpenIddict.Server
return;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1053));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0054));
}
}
@ -334,11 +334,11 @@ namespace OpenIddict.Server
if (string.IsNullOrEmpty(context.Request.AccessToken))
{
context.Logger.LogError(SR.GetResourceString(SR.ID7131), Parameters.AccessToken);
context.Logger.LogError(SR.GetResourceString(SR.ID6131), Parameters.AccessToken);
context.Reject(
error: Errors.MissingToken,
description: context.Localizer[SR.ID3029, Parameters.AccessToken]);
description: context.Localizer[SR.ID2029, Parameters.AccessToken]);
return default;
}
@ -430,7 +430,7 @@ namespace OpenIddict.Server
var notification = context.Transaction.GetProperty<ValidateUserinfoRequestContext>(
typeof(ValidateUserinfoRequestContext).FullName!) ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1006));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0007));
context.Principal ??= notification.Principal;
@ -461,7 +461,7 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID5006));
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID4006));
// Note: when receiving an access token, its audiences list cannot be used for the "aud" claim
// as the client application is not the intented audience but only an authorized presenter.
@ -495,7 +495,7 @@ namespace OpenIddict.Server
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID5006));
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID4006));
context.Subject = context.Principal.GetClaim(Claims.Subject);

412
src/OpenIddict.Server/OpenIddictServerHandlers.cs

File diff suppressed because it is too large

4
src/OpenIddict.Server/OpenIddictServerHelpers.cs

@ -31,7 +31,7 @@ namespace OpenIddict.Server
if (string.IsNullOrEmpty(name))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1105), nameof(name));
throw new ArgumentException(SR.GetResourceString(SR.ID0106), nameof(name));
}
if (transaction.Properties.TryGetValue(name, out var property) && property is TProperty result)
@ -61,7 +61,7 @@ namespace OpenIddict.Server
if (string.IsNullOrEmpty(name))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1105), nameof(name));
throw new ArgumentException(SR.GetResourceString(SR.ID0106), nameof(name));
}
if (value is null)

6
src/OpenIddict.Server/OpenIddictServerOptions.cs

@ -151,7 +151,7 @@ namespace OpenIddict.Server
TokenTypeHints.AccessToken => JsonWebTokenTypes.AccessToken,
TokenTypeHints.IdToken => JsonWebTokenTypes.IdentityToken,
_ => throw new NotSupportedException(SR.GetResourceString(SR.ID1268))
_ => throw new NotSupportedException(SR.GetResourceString(SR.ID0269))
};
}
@ -159,14 +159,14 @@ namespace OpenIddict.Server
// (provided via the type delegate parameter) or inferred from the token_usage claim.
if (string.IsNullOrEmpty(type))
{
throw new SecurityTokenInvalidTypeException(SR.GetResourceString(SR.ID1269));
throw new SecurityTokenInvalidTypeException(SR.GetResourceString(SR.ID0270));
}
// Note: unlike IdentityModel, this custom validator deliberately uses case-insensitive comparisons.
if (parameters.ValidTypes is not null && parameters.ValidTypes.Any() &&
!parameters.ValidTypes.Contains(type, StringComparer.OrdinalIgnoreCase))
{
throw new SecurityTokenInvalidTypeException(SR.GetResourceString(SR.ID1270))
throw new SecurityTokenInvalidTypeException(SR.GetResourceString(SR.ID0271))
{
InvalidType = type
};

2
src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreBuilder.cs

@ -57,7 +57,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (string.IsNullOrEmpty(realm))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1106), nameof(realm));
throw new ArgumentException(SR.GetResourceString(SR.ID0107), nameof(realm));
}
return Configure(options => options.Realm = realm);

4
src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreConfiguration.cs

@ -34,7 +34,7 @@ namespace OpenIddict.Validation.AspNetCore
if (options.SchemeMap.TryGetValue(OpenIddictValidationAspNetCoreDefaults.AuthenticationScheme, out var builder) &&
builder.HandlerType != typeof(OpenIddictValidationAspNetCoreHandler))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1163));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0164));
}
options.AddScheme<OpenIddictValidationAspNetCoreHandler>(
@ -67,7 +67,7 @@ namespace OpenIddict.Validation.AspNetCore
if (!TryValidate(options.SchemeMap, options.DefaultSignInScheme) ||
!TryValidate(options.SchemeMap, options.DefaultSignOutScheme))
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1164));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0165));
}
static bool TryValidate(IDictionary<string, AuthenticationSchemeBuilder> map, string? scheme)

16
src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreHandler.cs

@ -99,7 +99,7 @@ namespace OpenIddict.Validation.AspNetCore
return false;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1110));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0111));
}
return false;
@ -109,7 +109,7 @@ namespace OpenIddict.Validation.AspNetCore
protected override async Task<AuthenticateResult> HandleAuthenticateAsync()
{
var transaction = Context.Features.Get<OpenIddictValidationAspNetCoreFeature>()?.Transaction ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1165));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0166));
// Note: in many cases, the authentication token was already validated by the time this action is called
// (generally later in the pipeline, when using the pass-through mode). To avoid having to re-validate it,
@ -147,14 +147,14 @@ namespace OpenIddict.Validation.AspNetCore
[OpenIddictValidationAspNetCoreConstants.Properties.ErrorUri] = context.ErrorUri
});
return AuthenticateResult.Fail(SR.GetResourceString(SR.ID1112), properties);
return AuthenticateResult.Fail(SR.GetResourceString(SR.ID0113), properties);
}
else
{
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID5006));
Debug.Assert(!string.IsNullOrEmpty(context.Principal.GetTokenType()), SR.GetResourceString(SR.ID5009));
Debug.Assert(!string.IsNullOrEmpty(context.Token), SR.GetResourceString(SR.ID5010));
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID4006));
Debug.Assert(!string.IsNullOrEmpty(context.Principal.GetTokenType()), SR.GetResourceString(SR.ID4009));
Debug.Assert(!string.IsNullOrEmpty(context.Token), SR.GetResourceString(SR.ID4010));
// Store the token to allow any ASP.NET Core component (e.g a controller)
// to retrieve it (e.g to make an API request to another application).
@ -178,7 +178,7 @@ namespace OpenIddict.Validation.AspNetCore
protected override async Task HandleChallengeAsync(AuthenticationProperties? properties)
{
var transaction = Context.Features.Get<OpenIddictValidationAspNetCoreFeature>()?.Transaction ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1165));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0166));
transaction.Properties[typeof(AuthenticationProperties).FullName!] = properties ?? new AuthenticationProperties();
@ -213,7 +213,7 @@ namespace OpenIddict.Validation.AspNetCore
return;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1110));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0111));
}
}

32
src/OpenIddict.Validation.AspNetCore/OpenIddictValidationAspNetCoreHandlers.cs

@ -95,7 +95,7 @@ namespace OpenIddict.Validation.AspNetCore
var request = context.Transaction.GetHttpRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
// Only use the current host as the issuer if the
@ -109,7 +109,7 @@ namespace OpenIddict.Validation.AspNetCore
{
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3081, HeaderNames.Host]);
description: context.Localizer[SR.ID2081, HeaderNames.Host]);
return default;
}
@ -119,7 +119,7 @@ namespace OpenIddict.Validation.AspNetCore
{
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3082, HeaderNames.Host]);
description: context.Localizer[SR.ID2082, HeaderNames.Host]);
return default;
}
@ -166,7 +166,7 @@ namespace OpenIddict.Validation.AspNetCore
var request = context.Transaction.GetHttpRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
// Resolve the access token from the standard Authorization header.
@ -220,7 +220,7 @@ namespace OpenIddict.Validation.AspNetCore
var request = context.Transaction.GetHttpRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
if (string.IsNullOrEmpty(request.ContentType) ||
@ -278,7 +278,7 @@ namespace OpenIddict.Validation.AspNetCore
var request = context.Transaction.GetHttpRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
// Resolve the access token from the standard access_token query parameter.
@ -358,14 +358,14 @@ namespace OpenIddict.Validation.AspNetCore
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID5007));
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID4007));
// This handler only applies to ASP.NET Core requests. If the HTTP context cannot be resolved,
// this may indicate that the request was incorrectly processed by another server stack.
var response = context.Transaction.GetHttpRequest()?.HttpContext.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
response.StatusCode = context.Transaction.Response.Error switch
@ -415,7 +415,7 @@ namespace OpenIddict.Validation.AspNetCore
var response = context.Transaction.GetHttpRequest()?.HttpContext.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
// Prevent the response from being cached.
@ -457,14 +457,14 @@ namespace OpenIddict.Validation.AspNetCore
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID5007));
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID4007));
// This handler only applies to ASP.NET Core requests. If the HTTP context cannot be resolved,
// this may indicate that the request was incorrectly processed by another server stack.
var response = context.Transaction.GetHttpRequest()?.HttpContext.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
var scheme = context.Transaction.Response.Error switch
@ -567,7 +567,7 @@ namespace OpenIddict.Validation.AspNetCore
var response = context.Transaction.GetHttpRequest()?.HttpContext.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
// If the response doesn't contain a WWW-Authenticate header, don't return an empty response.
@ -576,7 +576,7 @@ namespace OpenIddict.Validation.AspNetCore
return default;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7141), context.Transaction.Response);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6141), context.Transaction.Response);
context.HandleRequest();
return default;
@ -608,17 +608,17 @@ namespace OpenIddict.Validation.AspNetCore
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID5007));
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID4007));
// This handler only applies to ASP.NET Core requests. If the HTTP context cannot be resolved,
// this may indicate that the request was incorrectly processed by another server stack.
var response = context.Transaction.GetHttpRequest()?.HttpContext.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1113));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0114));
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7142), context.Transaction.Response);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6142), context.Transaction.Response);
using var stream = new MemoryStream();
using var writer = new Utf8JsonWriter(stream, new JsonWriterOptions

10
src/OpenIddict.Validation.DataProtection/OpenIddictValidationDataProtectionHandlers.cs

@ -77,14 +77,14 @@ namespace OpenIddict.Validation.DataProtection
// Create a Data Protection protector using the provider registered in the options.
var protector = _options.CurrentValue.DataProtectionProvider.CreateProtector(context.TokenType switch
{
null => throw new InvalidOperationException(SR.GetResourceString(SR.ID1166)),
null => throw new InvalidOperationException(SR.GetResourceString(SR.ID0167)),
TokenTypeHints.AccessToken when context.Transaction.Properties.ContainsKey(Properties.ReferenceTokenIdentifier)
=> new[] { Handlers.Server, Formats.AccessToken, Features.ReferenceTokens, Schemes.Server },
TokenTypeHints.AccessToken => new[] { Handlers.Server, Formats.AccessToken, Schemes.Server },
_ => throw new InvalidOperationException(SR.GetResourceString(SR.ID1002))
_ => throw new InvalidOperationException(SR.GetResourceString(SR.ID0003))
});
try
@ -99,19 +99,19 @@ namespace OpenIddict.Validation.DataProtection
catch (Exception exception)
{
context.Logger.LogTrace(exception, SR.GetResourceString(SR.ID7153), context.Token);
context.Logger.LogTrace(exception, SR.GetResourceString(SR.ID6153), context.Token);
}
if (context.Principal is null)
{
context.Reject(
error: Errors.InvalidToken,
description: context.Localizer[SR.ID3004]);
description: context.Localizer[SR.ID2004]);
return default;
}
context.Logger.LogTrace(SR.GetResourceString(SR.ID7152), context.Token, context.Principal.Claims);
context.Logger.LogTrace(SR.GetResourceString(SR.ID6152), context.Token, context.Principal.Claims);
return default;
}

2
src/OpenIddict.Validation.Owin/OpenIddictValidationOwinBuilder.cs

@ -73,7 +73,7 @@ namespace Microsoft.Extensions.DependencyInjection
{
if (string.IsNullOrEmpty(realm))
{
throw new ArgumentException(SR.GetResourceString(SR.ID1106), nameof(realm));
throw new ArgumentException(SR.GetResourceString(SR.ID0107), nameof(realm));
}
return Configure(options => options.Realm = realm);

18
src/OpenIddict.Validation.Owin/OpenIddictValidationOwinHandler.cs

@ -72,10 +72,10 @@ namespace OpenIddict.Validation.Owin
// active authentication is used, as AuthenticateCoreAsync() is always called before InvokeAsync() in this case.
var transaction = Context.Get<OpenIddictValidationTransaction>(typeof(OpenIddictValidationTransaction).FullName) ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1165));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0166));
var context = transaction.GetProperty<ProcessRequestContext>(typeof(ProcessRequestContext).FullName!) ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1165));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0166));
if (context.IsRequestHandled)
{
@ -111,7 +111,7 @@ namespace OpenIddict.Validation.Owin
return false;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1110));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0111));
}
return false;
@ -121,7 +121,7 @@ namespace OpenIddict.Validation.Owin
protected override async Task<AuthenticationTicket?> AuthenticateCoreAsync()
{
var transaction = Context.Get<OpenIddictValidationTransaction>(typeof(OpenIddictValidationTransaction).FullName) ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1165));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0166));
// Note: in many cases, the authentication token was already validated by the time this action is called
// (generally later in the pipeline, when using the pass-through mode). To avoid having to re-validate it,
@ -164,9 +164,9 @@ namespace OpenIddict.Validation.Owin
else
{
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID5006));
Debug.Assert(!string.IsNullOrEmpty(context.Principal.GetTokenType()), SR.GetResourceString(SR.ID5009));
Debug.Assert(!string.IsNullOrEmpty(context.Token), SR.GetResourceString(SR.ID5010));
Debug.Assert(context.Principal is not null, SR.GetResourceString(SR.ID4006));
Debug.Assert(!string.IsNullOrEmpty(context.Principal.GetTokenType()), SR.GetResourceString(SR.ID4009));
Debug.Assert(!string.IsNullOrEmpty(context.Token), SR.GetResourceString(SR.ID4010));
// Store the token to allow any OWIN/Katana component (e.g a controller)
// to retrieve it (e.g to make an API request to another application).
@ -201,7 +201,7 @@ namespace OpenIddict.Validation.Owin
if (challenge is not null && (Response.StatusCode == 401 || Response.StatusCode == 403))
{
var transaction = Context.Get<OpenIddictValidationTransaction>(typeof(OpenIddictValidationTransaction).FullName) ??
throw new InvalidOperationException(SR.GetResourceString(SR.ID1165));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0166));
transaction.Properties[typeof(AuthenticationProperties).FullName!] = challenge.Properties ?? new AuthenticationProperties();
@ -236,7 +236,7 @@ namespace OpenIddict.Validation.Owin
return;
}
throw new InvalidOperationException(SR.GetResourceString(SR.ID1110));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0111));
}
}
}

32
src/OpenIddict.Validation.Owin/OpenIddictValidationOwinHandlers.cs

@ -92,7 +92,7 @@ namespace OpenIddict.Validation.Owin
var request = context.Transaction.GetOwinRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
// Only use the current host as the issuer if the
@ -106,7 +106,7 @@ namespace OpenIddict.Validation.Owin
{
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3081, "Host"]);
description: context.Localizer[SR.ID2081, "Host"]);
return default;
}
@ -116,7 +116,7 @@ namespace OpenIddict.Validation.Owin
{
context.Reject(
error: Errors.InvalidRequest,
description: context.Localizer[SR.ID3082, "Host"]);
description: context.Localizer[SR.ID2082, "Host"]);
return default;
}
@ -163,7 +163,7 @@ namespace OpenIddict.Validation.Owin
var request = context.Transaction.GetOwinRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
// Resolve the access token from the standard Authorization header.
@ -217,7 +217,7 @@ namespace OpenIddict.Validation.Owin
var request = context.Transaction.GetOwinRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
if (string.IsNullOrEmpty(request.ContentType) ||
@ -276,7 +276,7 @@ namespace OpenIddict.Validation.Owin
var request = context.Transaction.GetOwinRequest();
if (request is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
// Resolve the access token from the standard access_token query parameter.
@ -360,14 +360,14 @@ namespace OpenIddict.Validation.Owin
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID5007));
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID4007));
// This handler only applies to OWIN requests. If The OWIN request cannot be resolved,
// this may indicate that the request was incorrectly processed by another server stack.
var response = context.Transaction.GetOwinRequest()?.Context.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
response.StatusCode = context.Transaction.Response.Error switch
@ -417,7 +417,7 @@ namespace OpenIddict.Validation.Owin
var response = context.Transaction.GetOwinRequest()?.Context.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
// Prevent the response from being cached.
@ -459,14 +459,14 @@ namespace OpenIddict.Validation.Owin
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID5007));
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID4007));
// This handler only applies to OWIN requests. If The OWIN request cannot be resolved,
// this may indicate that the request was incorrectly processed by another server stack.
var response = context.Transaction.GetOwinRequest()?.Context.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
if (string.IsNullOrEmpty(context.Transaction.Response.Error))
@ -574,7 +574,7 @@ namespace OpenIddict.Validation.Owin
var response = context.Transaction.GetOwinRequest()?.Context.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
// If the response doesn't contain a WWW-Authenticate header, don't return an empty response.
@ -583,7 +583,7 @@ namespace OpenIddict.Validation.Owin
return default;
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7141), context.Transaction.Response);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6141), context.Transaction.Response);
context.HandleRequest();
return default;
@ -615,17 +615,17 @@ namespace OpenIddict.Validation.Owin
throw new ArgumentNullException(nameof(context));
}
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID5007));
Debug.Assert(context.Transaction.Response is not null, SR.GetResourceString(SR.ID4007));
// This handler only applies to OWIN requests. If The OWIN request cannot be resolved,
// this may indicate that the request was incorrectly processed by another server stack.
var response = context.Transaction.GetOwinRequest()?.Context.Response;
if (response is null)
{
throw new InvalidOperationException(SR.GetResourceString(SR.ID1119));
throw new InvalidOperationException(SR.GetResourceString(SR.ID0120));
}
context.Logger.LogInformation(SR.GetResourceString(SR.ID7142), context.Transaction.Response);
context.Logger.LogInformation(SR.GetResourceString(SR.ID6142), context.Transaction.Response);
using var stream = new MemoryStream();
using var writer = new Utf8JsonWriter(stream, new JsonWriterOptions

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save