Remove private reflection from tests (#1107)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: stephentoub <2642209+stephentoub@users.noreply.github.com> Co-authored-by: halter73 <54385+halter73@users.noreply.github.com>
This commit is contained in:
parent
aaffd71c69
commit
8b73a42c9d
2 changed files with 93 additions and 148 deletions
|
|
@ -130,7 +130,7 @@ public partial class McpAuthenticationHandler : AuthenticationHandler<McpAuthent
|
|||
|
||||
private async Task<bool> HandleResourceMetadataRequestAsync(Uri? derivedResourceUri = null)
|
||||
{
|
||||
var resourceMetadata = CloneResourceMetadata(Options.ResourceMetadata, derivedResourceUri);
|
||||
var resourceMetadata = Options.ResourceMetadata?.Clone(derivedResourceUri);
|
||||
|
||||
if (Options.Events.OnResourceMetadataRequest is not null)
|
||||
{
|
||||
|
|
@ -192,32 +192,6 @@ public partial class McpAuthenticationHandler : AuthenticationHandler<McpAuthent
|
|||
return base.HandleChallengeAsync(properties);
|
||||
}
|
||||
|
||||
internal static ProtectedResourceMetadata? CloneResourceMetadata(ProtectedResourceMetadata? resourceMetadata, Uri? derivedResourceUri = null)
|
||||
{
|
||||
if (resourceMetadata is null)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return new ProtectedResourceMetadata
|
||||
{
|
||||
Resource = resourceMetadata.Resource ?? derivedResourceUri,
|
||||
AuthorizationServers = [.. resourceMetadata.AuthorizationServers],
|
||||
BearerMethodsSupported = [.. resourceMetadata.BearerMethodsSupported],
|
||||
ScopesSupported = [.. resourceMetadata.ScopesSupported],
|
||||
JwksUri = resourceMetadata.JwksUri,
|
||||
ResourceSigningAlgValuesSupported = resourceMetadata.ResourceSigningAlgValuesSupported is not null ? [.. resourceMetadata.ResourceSigningAlgValuesSupported] : null,
|
||||
ResourceName = resourceMetadata.ResourceName,
|
||||
ResourceDocumentation = resourceMetadata.ResourceDocumentation,
|
||||
ResourcePolicyUri = resourceMetadata.ResourcePolicyUri,
|
||||
ResourceTosUri = resourceMetadata.ResourceTosUri,
|
||||
TlsClientCertificateBoundAccessTokens = resourceMetadata.TlsClientCertificateBoundAccessTokens,
|
||||
AuthorizationDetailsTypesSupported = resourceMetadata.AuthorizationDetailsTypesSupported is not null ? [.. resourceMetadata.AuthorizationDetailsTypesSupported] : null,
|
||||
DpopSigningAlgValuesSupported = resourceMetadata.DpopSigningAlgValuesSupported is not null ? [.. resourceMetadata.DpopSigningAlgValuesSupported] : null,
|
||||
DpopBoundAccessTokensRequired = resourceMetadata.DpopBoundAccessTokensRequired
|
||||
};
|
||||
}
|
||||
|
||||
[LoggerMessage(Level = LogLevel.Warning, Message = "Resource metadata request host did not match configured host '{ConfiguredHost}'.")]
|
||||
private static partial void LogResourceMetadataHostMismatch(ILogger logger, string configuredHost);
|
||||
|
||||
|
|
|
|||
|
|
@ -191,4 +191,30 @@ public sealed class ProtectedResourceMetadata
|
|||
/// </summary>
|
||||
[JsonIgnore]
|
||||
internal string? WwwAuthenticateScope { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Creates a deep copy of this <see cref="ProtectedResourceMetadata"/> instance, optionally overriding the Resource property.
|
||||
/// </summary>
|
||||
/// <param name="derivedResourceUri">Optional URI to use for the Resource property if the original Resource is null.</param>
|
||||
/// <returns>A new instance of <see cref="ProtectedResourceMetadata"/> with cloned values.</returns>
|
||||
public ProtectedResourceMetadata Clone(Uri? derivedResourceUri = null)
|
||||
{
|
||||
return new ProtectedResourceMetadata
|
||||
{
|
||||
Resource = Resource ?? derivedResourceUri,
|
||||
AuthorizationServers = [.. AuthorizationServers],
|
||||
BearerMethodsSupported = [.. BearerMethodsSupported],
|
||||
ScopesSupported = [.. ScopesSupported],
|
||||
JwksUri = JwksUri,
|
||||
ResourceSigningAlgValuesSupported = ResourceSigningAlgValuesSupported is not null ? [.. ResourceSigningAlgValuesSupported] : null,
|
||||
ResourceName = ResourceName,
|
||||
ResourceDocumentation = ResourceDocumentation,
|
||||
ResourcePolicyUri = ResourcePolicyUri,
|
||||
ResourceTosUri = ResourceTosUri,
|
||||
TlsClientCertificateBoundAccessTokens = TlsClientCertificateBoundAccessTokens,
|
||||
AuthorizationDetailsTypesSupported = AuthorizationDetailsTypesSupported is not null ? [.. AuthorizationDetailsTypesSupported] : null,
|
||||
DpopSigningAlgValuesSupported = DpopSigningAlgValuesSupported is not null ? [.. DpopSigningAlgValuesSupported] : null,
|
||||
DpopBoundAccessTokensRequired = DpopBoundAccessTokensRequired
|
||||
};
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue