diff options
Diffstat (limited to 'VPNAuth.Server/Api/Oidc.cs')
-rw-r--r-- | VPNAuth.Server/Api/Oidc.cs | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/VPNAuth.Server/Api/Oidc.cs b/VPNAuth.Server/Api/Oidc.cs index e8ff3c0..366fabf 100644 --- a/VPNAuth.Server/Api/Oidc.cs +++ b/VPNAuth.Server/Api/Oidc.cs @@ -1,4 +1,5 @@ -using VPNAuth.Server.Responses; +using System.Net; +using VPNAuth.Server.Responses; namespace VPNAuth.Server.Api; @@ -73,4 +74,27 @@ public static class Oidc await context.Response.WriteAsJsonAsync(userInfoResponse); } + + public static async Task DiscoveryHandler(HttpContext context) + { + if (!context.Request.Host.HasValue) + { + context.Response.StatusCode = StatusCodes.Status400BadRequest; + return; + } + + var serverAddress = context.Request.IsHttps ? "https://" : "http://" + context.Request.Host.Value; + + await context.Response.WriteAsJsonAsync(new OidcDiscovery + { + Issuer = serverAddress + "/", + AuthorizationEndpoint = $"{serverAddress}/auth", + TokenEndpoint = $"{serverAddress}/access-token", + UserInfoEndpoint = $"{serverAddress}/user-info", + JwksUri = "", + ResponseTypesSupported = ["code"], + SubjectTypesSupported = [], + IdTokenSigningAlgValuesSupported = ["RS256"] + }); + } } |