|
|
|
@ -4,7 +4,6 @@ |
|
|
|
* the license and the contributors participating to this project. |
|
|
|
*/ |
|
|
|
|
|
|
|
using System.Diagnostics.CodeAnalysis; |
|
|
|
using System.Security.Claims; |
|
|
|
using System.Text.Json; |
|
|
|
using Microsoft.AspNetCore.Authentication; |
|
|
|
@ -18,7 +17,6 @@ using Microsoft.Extensions.Logging; |
|
|
|
using OpenIddict.Server.IntegrationTests; |
|
|
|
using Xunit; |
|
|
|
using Xunit.Abstractions; |
|
|
|
using static OpenIddict.Server.AspNetCore.OpenIddictServerAspNetCoreHandlers; |
|
|
|
using static OpenIddict.Server.OpenIddictServerEvents; |
|
|
|
using static OpenIddict.Server.OpenIddictServerHandlers.Protection; |
|
|
|
|
|
|
|
@ -260,410 +258,6 @@ public partial class OpenIddictServerAspNetCoreIntegrationTests : OpenIddictServ |
|
|
|
Assert.Equal("custom_error_uri", response.ErrorUri); |
|
|
|
} |
|
|
|
|
|
|
|
[Theory] |
|
|
|
[InlineData("/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/connect", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/CONNECT", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/connect/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/CONNECT/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/connect/authorize", OpenIddictServerEndpointType.Authorization)] |
|
|
|
[InlineData("/CONNECT/AUTHORIZE", OpenIddictServerEndpointType.Authorization)] |
|
|
|
[InlineData("/connect/authorize/", OpenIddictServerEndpointType.Authorization)] |
|
|
|
[InlineData("/CONNECT/AUTHORIZE/", OpenIddictServerEndpointType.Authorization)] |
|
|
|
[InlineData("/connect/authorize/subpath", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/CONNECT/AUTHORIZE/SUBPATH", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/connect/authorize/subpath/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/CONNECT/AUTHORIZE/SUBPATH/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/.well-known/openid-configuration", OpenIddictServerEndpointType.Configuration)] |
|
|
|
[InlineData("/.WELL-KNOWN/OPENID-CONFIGURATION", OpenIddictServerEndpointType.Configuration)] |
|
|
|
[InlineData("/.well-known/openid-configuration/", OpenIddictServerEndpointType.Configuration)] |
|
|
|
[InlineData("/.WELL-KNOWN/OPENID-CONFIGURATION/", OpenIddictServerEndpointType.Configuration)] |
|
|
|
[InlineData("/.well-known/openid-configuration/subpath", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/.WELL-KNOWN/OPENID-CONFIGURATION/SUBPATH", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/.well-known/openid-configuration/subpath/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/.WELL-KNOWN/OPENID-CONFIGURATION/SUBPATH/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/.well-known/jwks", OpenIddictServerEndpointType.Cryptography)] |
|
|
|
[InlineData("/.WELL-KNOWN/JWKS", OpenIddictServerEndpointType.Cryptography)] |
|
|
|
[InlineData("/.well-known/jwks/", OpenIddictServerEndpointType.Cryptography)] |
|
|
|
[InlineData("/.WELL-KNOWN/JWKS/", OpenIddictServerEndpointType.Cryptography)] |
|
|
|
[InlineData("/.well-known/jwks/subpath", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/.WELL-KNOWN/JWKS/SUBPATH", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/.well-known/jwks/subpath/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/.WELL-KNOWN/JWKS/SUBPATH/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/connect/device", OpenIddictServerEndpointType.Device)] |
|
|
|
[InlineData("/CONNECT/DEVICE", OpenIddictServerEndpointType.Device)] |
|
|
|
[InlineData("/connect/device/", OpenIddictServerEndpointType.Device)] |
|
|
|
[InlineData("/CONNECT/DEVICE/", OpenIddictServerEndpointType.Device)] |
|
|
|
[InlineData("/connect/device/subpath", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/CONNECT/DEVICE/SUBPATH", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/connect/device/subpath/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/CONNECT/DEVICE/SUBPATH/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/connect/introspect", OpenIddictServerEndpointType.Introspection)] |
|
|
|
[InlineData("/CONNECT/INTROSPECT", OpenIddictServerEndpointType.Introspection)] |
|
|
|
[InlineData("/connect/introspect/", OpenIddictServerEndpointType.Introspection)] |
|
|
|
[InlineData("/CONNECT/INTROSPECT/", OpenIddictServerEndpointType.Introspection)] |
|
|
|
[InlineData("/connect/introspect/subpath", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/CONNECT/INTROSPECT/SUBPATH", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/connect/introspect/subpath/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/CONNECT/INTROSPECT/SUBPATH/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/connect/logout", OpenIddictServerEndpointType.Logout)] |
|
|
|
[InlineData("/CONNECT/LOGOUT", OpenIddictServerEndpointType.Logout)] |
|
|
|
[InlineData("/connect/logout/", OpenIddictServerEndpointType.Logout)] |
|
|
|
[InlineData("/CONNECT/LOGOUT/", OpenIddictServerEndpointType.Logout)] |
|
|
|
[InlineData("/connect/logout/subpath", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/CONNECT/LOGOUT/SUBPATH", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/connect/logout/subpath/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/CONNECT/LOGOUT/SUBPATH/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/connect/revoke", OpenIddictServerEndpointType.Revocation)] |
|
|
|
[InlineData("/CONNECT/REVOKE", OpenIddictServerEndpointType.Revocation)] |
|
|
|
[InlineData("/connect/revoke/", OpenIddictServerEndpointType.Revocation)] |
|
|
|
[InlineData("/CONNECT/REVOKE/", OpenIddictServerEndpointType.Revocation)] |
|
|
|
[InlineData("/connect/revoke/subpath", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/CONNECT/REVOKE/SUBPATH", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/connect/revoke/subpath/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/CONNECT/REVOKE/SUBPATH/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/connect/token", OpenIddictServerEndpointType.Token)] |
|
|
|
[InlineData("/CONNECT/TOKEN", OpenIddictServerEndpointType.Token)] |
|
|
|
[InlineData("/connect/token/", OpenIddictServerEndpointType.Token)] |
|
|
|
[InlineData("/CONNECT/TOKEN/", OpenIddictServerEndpointType.Token)] |
|
|
|
[InlineData("/connect/token/subpath", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/CONNECT/TOKEN/SUBPATH", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/connect/token/subpath/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/CONNECT/TOKEN/SUBPATH/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/connect/userinfo", OpenIddictServerEndpointType.Userinfo)] |
|
|
|
[InlineData("/CONNECT/USERINFO", OpenIddictServerEndpointType.Userinfo)] |
|
|
|
[InlineData("/connect/userinfo/", OpenIddictServerEndpointType.Userinfo)] |
|
|
|
[InlineData("/CONNECT/USERINFO/", OpenIddictServerEndpointType.Userinfo)] |
|
|
|
[InlineData("/connect/userinfo/subpath", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/CONNECT/USERINFO/SUBPATH", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/connect/userinfo/subpath/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/CONNECT/USERINFO/SUBPATH/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/connect/verification", OpenIddictServerEndpointType.Verification)] |
|
|
|
[InlineData("/CONNECT/VERIFICATION", OpenIddictServerEndpointType.Verification)] |
|
|
|
[InlineData("/connect/verification/", OpenIddictServerEndpointType.Verification)] |
|
|
|
[InlineData("/CONNECT/VERIFICATION/", OpenIddictServerEndpointType.Verification)] |
|
|
|
[InlineData("/connect/verification/subpath", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/CONNECT/VERIFICATION/SUBPATH", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/connect/verification/subpath/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/CONNECT/VERIFICATION/SUBPATH/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
public async Task ProcessRequest_MatchesCorrespondingRelativeEndpoint(string path, OpenIddictServerEndpointType type) |
|
|
|
{ |
|
|
|
// Arrange
|
|
|
|
await using var server = await CreateServerAsync(options => |
|
|
|
{ |
|
|
|
options.EnableDegradedMode(); |
|
|
|
|
|
|
|
options.AddEventHandler<HandleLogoutRequestContext>(builder => |
|
|
|
builder.UseInlineHandler(context => |
|
|
|
{ |
|
|
|
context.SkipRequest(); |
|
|
|
|
|
|
|
return default; |
|
|
|
})); |
|
|
|
|
|
|
|
options.AddEventHandler<HandleVerificationRequestContext>(builder => |
|
|
|
builder.UseInlineHandler(context => |
|
|
|
{ |
|
|
|
context.SkipRequest(); |
|
|
|
|
|
|
|
return default; |
|
|
|
})); |
|
|
|
|
|
|
|
options.AddEventHandler<ProcessRequestContext>(builder => |
|
|
|
builder.UseInlineHandler(context => |
|
|
|
{ |
|
|
|
// Assert
|
|
|
|
Assert.Equal(type, context.EndpointType); |
|
|
|
|
|
|
|
return default; |
|
|
|
})); |
|
|
|
}); |
|
|
|
|
|
|
|
await using var client = await server.CreateClientAsync(); |
|
|
|
|
|
|
|
// Act
|
|
|
|
await client.PostAsync(path, new OpenIddictRequest()); |
|
|
|
} |
|
|
|
|
|
|
|
[Theory] |
|
|
|
[InlineData("https://localhost/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:443/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost/connect", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/CONNECT", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost/connect/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/CONNECT/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:443/connect", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/CONNECT", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:443/connect/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/CONNECT/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost/connect/authorize", OpenIddictServerEndpointType.Authorization)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/CONNECT/AUTHORIZE", OpenIddictServerEndpointType.Authorization)] |
|
|
|
[InlineData("https://localhost/connect/authorize/", OpenIddictServerEndpointType.Authorization)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/CONNECT/AUTHORIZE/", OpenIddictServerEndpointType.Authorization)] |
|
|
|
[InlineData("https://localhost:443/connect/authorize", OpenIddictServerEndpointType.Authorization)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/CONNECT/AUTHORIZE", OpenIddictServerEndpointType.Authorization)] |
|
|
|
[InlineData("https://localhost:443/connect/authorize/", OpenIddictServerEndpointType.Authorization)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/CONNECT/AUTHORIZE/", OpenIddictServerEndpointType.Authorization)] |
|
|
|
[InlineData("https://fabrikam.com/connect/authorize", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://FABRIKAM.COM/CONNECT/AUTHORIZE", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://fabrikam.com/connect/authorize/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://FABRIKAM.COM/CONNECT/AUTHORIZE/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:8888/connect/authorize", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:8888/CONNECT/AUTHORIZE", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:8888/connect/authorize/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:8888/CONNECT/AUTHORIZE/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost/.well-known/openid-configuration", OpenIddictServerEndpointType.Configuration)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/.WELL-KNOWN/OPENID-CONFIGURATION", OpenIddictServerEndpointType.Configuration)] |
|
|
|
[InlineData("https://localhost/.well-known/openid-configuration/", OpenIddictServerEndpointType.Configuration)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/.WELL-KNOWN/OPENID-CONFIGURATION/", OpenIddictServerEndpointType.Configuration)] |
|
|
|
[InlineData("https://localhost:443/.well-known/openid-configuration", OpenIddictServerEndpointType.Configuration)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/.WELL-KNOWN/OPENID-CONFIGURATION", OpenIddictServerEndpointType.Configuration)] |
|
|
|
[InlineData("https://localhost:443/.well-known/openid-configuration/", OpenIddictServerEndpointType.Configuration)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/.WELL-KNOWN/OPENID-CONFIGURATION/", OpenIddictServerEndpointType.Configuration)] |
|
|
|
[InlineData("https://fabrikam.com/.well-known/openid-configuration", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://FABRIKAM.COM/.WELL-KNOWN/OPENID-CONFIGURATION", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://fabrikam.com/.well-known/openid-configuration/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://FABRIKAM.COM/.WELL-KNOWN/OPENID-CONFIGURATION/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:8888/.well-known/openid-configuration", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:8888/.WELL-KNOWN/OPENID-CONFIGURATION", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:8888/.well-known/openid-configuration/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:8888/.WELL-KNOWN/OPENID-CONFIGURATION/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost/.well-known/jwks", OpenIddictServerEndpointType.Cryptography)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/.WELL-KNOWN/JWKS", OpenIddictServerEndpointType.Cryptography)] |
|
|
|
[InlineData("https://localhost/.well-known/jwks/", OpenIddictServerEndpointType.Cryptography)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/.WELL-KNOWN/JWKS/", OpenIddictServerEndpointType.Cryptography)] |
|
|
|
[InlineData("https://localhost:443/.well-known/jwks", OpenIddictServerEndpointType.Cryptography)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/.WELL-KNOWN/JWKS", OpenIddictServerEndpointType.Cryptography)] |
|
|
|
[InlineData("https://localhost:443/.well-known/jwks/", OpenIddictServerEndpointType.Cryptography)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/.WELL-KNOWN/JWKS/", OpenIddictServerEndpointType.Cryptography)] |
|
|
|
[InlineData("https://fabrikam.com/.well-known/jwks", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://FABRIKAM.COM/.WELL-KNOWN/JWKS", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://fabrikam.com/.well-known/jwks/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://FABRIKAM.COM/.WELL-KNOWN/JWKS/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:8888/.well-known/jwks", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:8888/.WELL-KNOWN/JWKS", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:8888/.well-known/jwks/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:8888/.WELL-KNOWN/JWKS/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost/connect/device", OpenIddictServerEndpointType.Device)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/CONNECT/DEVICE", OpenIddictServerEndpointType.Device)] |
|
|
|
[InlineData("https://localhost/connect/device/", OpenIddictServerEndpointType.Device)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/CONNECT/DEVICE/", OpenIddictServerEndpointType.Device)] |
|
|
|
[InlineData("https://localhost:443/connect/device", OpenIddictServerEndpointType.Device)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/CONNECT/DEVICE", OpenIddictServerEndpointType.Device)] |
|
|
|
[InlineData("https://localhost:443/connect/device/", OpenIddictServerEndpointType.Device)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/CONNECT/DEVICE/", OpenIddictServerEndpointType.Device)] |
|
|
|
[InlineData("https://fabrikam.com/connect/device", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://FABRIKAM.COM/CONNECT/DEVICE", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://fabrikam.com/connect/device/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://FABRIKAM.COM/CONNECT/DEVICE/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:8888/connect/device", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:8888/CONNECT/DEVICE", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:8888/connect/device/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:8888/CONNECT/DEVICE/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost/connect/introspect", OpenIddictServerEndpointType.Introspection)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/CONNECT/INTROSPECT", OpenIddictServerEndpointType.Introspection)] |
|
|
|
[InlineData("https://localhost/connect/introspect/", OpenIddictServerEndpointType.Introspection)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/CONNECT/INTROSPECT/", OpenIddictServerEndpointType.Introspection)] |
|
|
|
[InlineData("https://localhost:443/connect/introspect", OpenIddictServerEndpointType.Introspection)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/CONNECT/INTROSPECT", OpenIddictServerEndpointType.Introspection)] |
|
|
|
[InlineData("https://localhost:443/connect/introspect/", OpenIddictServerEndpointType.Introspection)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/CONNECT/INTROSPECT/", OpenIddictServerEndpointType.Introspection)] |
|
|
|
[InlineData("https://fabrikam.com/connect/introspect", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://FABRIKAM.COM/CONNECT/INTROSPECT", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://fabrikam.com/connect/introspect/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://FABRIKAM.COM/CONNECT/INTROSPECT/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:8888/connect/introspect", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:8888/CONNECT/INTROSPECT", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:8888/connect/introspect/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:8888/CONNECT/INTROSPECT/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost/connect/logout", OpenIddictServerEndpointType.Logout)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/CONNECT/LOGOUT", OpenIddictServerEndpointType.Logout)] |
|
|
|
[InlineData("https://localhost/connect/logout/", OpenIddictServerEndpointType.Logout)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/CONNECT/LOGOUT/", OpenIddictServerEndpointType.Logout)] |
|
|
|
[InlineData("https://localhost:443/connect/logout", OpenIddictServerEndpointType.Logout)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/CONNECT/LOGOUT", OpenIddictServerEndpointType.Logout)] |
|
|
|
[InlineData("https://localhost:443/connect/logout/", OpenIddictServerEndpointType.Logout)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/CONNECT/LOGOUT/", OpenIddictServerEndpointType.Logout)] |
|
|
|
[InlineData("https://fabrikam.com/connect/logout", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://FABRIKAM.COM/CONNECT/LOGOUT", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://fabrikam.com/connect/logout/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://FABRIKAM.COM/CONNECT/LOGOUT/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:8888/connect/logout", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:8888/CONNECT/LOGOUT", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:8888/connect/logout/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:8888/CONNECT/LOGOUT/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost/connect/revoke", OpenIddictServerEndpointType.Revocation)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/CONNECT/REVOKE", OpenIddictServerEndpointType.Revocation)] |
|
|
|
[InlineData("https://localhost/connect/revoke/", OpenIddictServerEndpointType.Revocation)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/CONNECT/REVOKE/", OpenIddictServerEndpointType.Revocation)] |
|
|
|
[InlineData("https://localhost:443/connect/revoke", OpenIddictServerEndpointType.Revocation)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/CONNECT/REVOKE", OpenIddictServerEndpointType.Revocation)] |
|
|
|
[InlineData("https://localhost:443/connect/revoke/", OpenIddictServerEndpointType.Revocation)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/CONNECT/REVOKE/", OpenIddictServerEndpointType.Revocation)] |
|
|
|
[InlineData("https://fabrikam.com/connect/revoke", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://FABRIKAM.COM/CONNECT/REVOKE", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://fabrikam.com/connect/revoke/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://FABRIKAM.COM/CONNECT/REVOKE/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:8888/connect/revoke", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:8888/CONNECT/REVOKE", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:8888/connect/revoke/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:8888/CONNECT/REVOKE/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost/connect/token", OpenIddictServerEndpointType.Token)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/CONNECT/TOKEN", OpenIddictServerEndpointType.Token)] |
|
|
|
[InlineData("https://localhost/connect/token/", OpenIddictServerEndpointType.Token)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/CONNECT/TOKEN/", OpenIddictServerEndpointType.Token)] |
|
|
|
[InlineData("https://localhost:443/connect/token", OpenIddictServerEndpointType.Token)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/CONNECT/TOKEN", OpenIddictServerEndpointType.Token)] |
|
|
|
[InlineData("https://localhost:443/connect/token/", OpenIddictServerEndpointType.Token)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/CONNECT/TOKEN/", OpenIddictServerEndpointType.Token)] |
|
|
|
[InlineData("https://fabrikam.com/connect/token", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://FABRIKAM.COM/CONNECT/TOKEN", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://fabrikam.com/connect/token/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://FABRIKAM.COM/CONNECT/TOKEN/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:8888/connect/token", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:8888/CONNECT/TOKEN", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:8888/connect/token/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:8888/CONNECT/TOKEN/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost/connect/userinfo", OpenIddictServerEndpointType.Userinfo)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/CONNECT/USERINFO", OpenIddictServerEndpointType.Userinfo)] |
|
|
|
[InlineData("https://localhost/connect/userinfo/", OpenIddictServerEndpointType.Userinfo)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/CONNECT/USERINFO/", OpenIddictServerEndpointType.Userinfo)] |
|
|
|
[InlineData("https://localhost:443/connect/userinfo", OpenIddictServerEndpointType.Userinfo)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/CONNECT/USERINFO", OpenIddictServerEndpointType.Userinfo)] |
|
|
|
[InlineData("https://localhost:443/connect/userinfo/", OpenIddictServerEndpointType.Userinfo)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/CONNECT/USERINFO/", OpenIddictServerEndpointType.Userinfo)] |
|
|
|
[InlineData("https://fabrikam.com/connect/userinfo", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://FABRIKAM.COM/CONNECT/USERINFO", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://fabrikam.com/connect/userinfo/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://FABRIKAM.COM/CONNECT/USERINFO/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:8888/connect/userinfo", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:8888/CONNECT/USERINFO", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:8888/connect/userinfo/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:8888/CONNECT/USERINFO/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost/connect/verification", OpenIddictServerEndpointType.Verification)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/CONNECT/VERIFICATION", OpenIddictServerEndpointType.Verification)] |
|
|
|
[InlineData("https://localhost/connect/verification/", OpenIddictServerEndpointType.Verification)] |
|
|
|
[InlineData("HTTPS://LOCALHOST/CONNECT/VERIFICATION/", OpenIddictServerEndpointType.Verification)] |
|
|
|
[InlineData("https://localhost:443/connect/verification", OpenIddictServerEndpointType.Verification)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/CONNECT/VERIFICATION", OpenIddictServerEndpointType.Verification)] |
|
|
|
[InlineData("https://localhost:443/connect/verification/", OpenIddictServerEndpointType.Verification)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:443/CONNECT/VERIFICATION/", OpenIddictServerEndpointType.Verification)] |
|
|
|
[InlineData("https://fabrikam.com/connect/verification", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://FABRIKAM.COM/CONNECT/VERIFICATION", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://fabrikam.com/connect/verification/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://FABRIKAM.COM/CONNECT/VERIFICATION/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:8888/connect/verification", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:8888/CONNECT/VERIFICATION", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("https://localhost:8888/connect/verification/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("HTTPS://LOCALHOST:8888/CONNECT/VERIFICATION/", OpenIddictServerEndpointType.Unknown)] |
|
|
|
public async Task ProcessRequest_MatchesCorrespondingAbsoluteEndpoint(string path, OpenIddictServerEndpointType type) |
|
|
|
{ |
|
|
|
// Arrange
|
|
|
|
await using var server = await CreateServerAsync(options => |
|
|
|
{ |
|
|
|
options.EnableDegradedMode(); |
|
|
|
|
|
|
|
options.SetAuthorizationEndpointUris("https://localhost/connect/authorize") |
|
|
|
.SetConfigurationEndpointUris("https://localhost/.well-known/openid-configuration") |
|
|
|
.SetCryptographyEndpointUris("https://localhost/.well-known/jwks") |
|
|
|
.SetDeviceEndpointUris("https://localhost/connect/device") |
|
|
|
.SetIntrospectionEndpointUris("https://localhost/connect/introspect") |
|
|
|
.SetLogoutEndpointUris("https://localhost/connect/logout") |
|
|
|
.SetRevocationEndpointUris("https://localhost/connect/revoke") |
|
|
|
.SetTokenEndpointUris("https://localhost/connect/token") |
|
|
|
.SetUserinfoEndpointUris("https://localhost/connect/userinfo") |
|
|
|
.SetVerificationEndpointUris("https://localhost/connect/verification"); |
|
|
|
|
|
|
|
options.AddEventHandler<HandleLogoutRequestContext>(builder => |
|
|
|
builder.UseInlineHandler(context => |
|
|
|
{ |
|
|
|
context.SkipRequest(); |
|
|
|
|
|
|
|
return default; |
|
|
|
})); |
|
|
|
|
|
|
|
options.AddEventHandler<HandleVerificationRequestContext>(builder => |
|
|
|
builder.UseInlineHandler(context => |
|
|
|
{ |
|
|
|
context.SkipRequest(); |
|
|
|
|
|
|
|
return default; |
|
|
|
})); |
|
|
|
|
|
|
|
options.AddEventHandler<ProcessRequestContext>(builder => |
|
|
|
builder.UseInlineHandler(context => |
|
|
|
{ |
|
|
|
// Assert
|
|
|
|
Assert.Equal(type, context.EndpointType); |
|
|
|
|
|
|
|
return default; |
|
|
|
})); |
|
|
|
}); |
|
|
|
|
|
|
|
await using var client = await server.CreateClientAsync(); |
|
|
|
|
|
|
|
// Act
|
|
|
|
await client.PostAsync(path, new OpenIddictRequest()); |
|
|
|
} |
|
|
|
|
|
|
|
[Theory] |
|
|
|
[InlineData("/custom/connect/authorize", OpenIddictServerEndpointType.Authorization)] |
|
|
|
[InlineData("/custom/.well-known/openid-configuration", OpenIddictServerEndpointType.Configuration)] |
|
|
|
[InlineData("/custom/.well-known/jwks", OpenIddictServerEndpointType.Cryptography)] |
|
|
|
[InlineData("/custom/connect/device", OpenIddictServerEndpointType.Device)] |
|
|
|
[InlineData("/custom/connect/custom", OpenIddictServerEndpointType.Unknown)] |
|
|
|
[InlineData("/custom/connect/introspect", OpenIddictServerEndpointType.Introspection)] |
|
|
|
[InlineData("/custom/connect/logout", OpenIddictServerEndpointType.Logout)] |
|
|
|
[InlineData("/custom/connect/revoke", OpenIddictServerEndpointType.Revocation)] |
|
|
|
[InlineData("/custom/connect/token", OpenIddictServerEndpointType.Token)] |
|
|
|
[InlineData("/custom/connect/userinfo", OpenIddictServerEndpointType.Userinfo)] |
|
|
|
[InlineData("/custom/connect/verification", OpenIddictServerEndpointType.Verification)] |
|
|
|
public async Task ProcessRequest_AllowsOverridingEndpoint(string address, OpenIddictServerEndpointType type) |
|
|
|
{ |
|
|
|
// Arrange
|
|
|
|
await using var server = await CreateServerAsync(options => |
|
|
|
{ |
|
|
|
options.EnableDegradedMode(); |
|
|
|
|
|
|
|
options.AddEventHandler<HandleLogoutRequestContext>(builder => |
|
|
|
builder.UseInlineHandler(context => |
|
|
|
{ |
|
|
|
context.SkipRequest(); |
|
|
|
|
|
|
|
return default; |
|
|
|
})); |
|
|
|
|
|
|
|
options.AddEventHandler<HandleVerificationRequestContext>(builder => |
|
|
|
builder.UseInlineHandler(context => |
|
|
|
{ |
|
|
|
context.SkipRequest(); |
|
|
|
|
|
|
|
return default; |
|
|
|
})); |
|
|
|
|
|
|
|
options.AddEventHandler<ProcessRequestContext>(builder => |
|
|
|
{ |
|
|
|
builder.UseInlineHandler(context => |
|
|
|
{ |
|
|
|
// Act
|
|
|
|
context.EndpointType = type; |
|
|
|
|
|
|
|
// Assert
|
|
|
|
Assert.Equal(type, context.EndpointType); |
|
|
|
|
|
|
|
return default; |
|
|
|
}); |
|
|
|
|
|
|
|
builder.SetOrder(InferEndpointType.Descriptor.Order + 500); |
|
|
|
}); |
|
|
|
}); |
|
|
|
|
|
|
|
await using var client = await server.CreateClientAsync(); |
|
|
|
|
|
|
|
// Act
|
|
|
|
await client.PostAsync(address, new OpenIddictRequest()); |
|
|
|
} |
|
|
|
|
|
|
|
[Theory] |
|
|
|
[InlineData("/.well-known/openid-configuration")] |
|
|
|
[InlineData("/.well-known/jwks")] |
|
|
|
|