From 6b4baadcae7501d40247e57ed3be406860f0fdd2 Mon Sep 17 00:00:00 2001 From: geffzhang Date: Sat, 17 Feb 2024 21:13:02 +0800 Subject: [PATCH 1/3] add keycloak auth --- .../BotSharp.OpenAPI/BotSharp.OpenAPI.csproj | 3 +++ .../BotSharp.OpenAPI/BotSharpOpenApiExtensions.cs | 15 +++++++++++++++ .../Controllers/UserController.cs | 4 ++-- src/WebStarter/appsettings.json | 7 +++++++ 4 files changed, 27 insertions(+), 2 deletions(-) diff --git a/src/Infrastructure/BotSharp.OpenAPI/BotSharp.OpenAPI.csproj b/src/Infrastructure/BotSharp.OpenAPI/BotSharp.OpenAPI.csproj index 46bd85c8..8b23713a 100644 --- a/src/Infrastructure/BotSharp.OpenAPI/BotSharp.OpenAPI.csproj +++ b/src/Infrastructure/BotSharp.OpenAPI/BotSharp.OpenAPI.csproj @@ -19,12 +19,14 @@ + + @@ -32,6 +34,7 @@ + diff --git a/src/Infrastructure/BotSharp.OpenAPI/BotSharpOpenApiExtensions.cs b/src/Infrastructure/BotSharp.OpenAPI/BotSharpOpenApiExtensions.cs index 1d36f597..335015a2 100644 --- a/src/Infrastructure/BotSharp.OpenAPI/BotSharpOpenApiExtensions.cs +++ b/src/Infrastructure/BotSharp.OpenAPI/BotSharpOpenApiExtensions.cs @@ -101,6 +101,21 @@ public static class BotSharpOpenApiExtensions }); } + // Keycloak Identiy OAuth + if (!string.IsNullOrWhiteSpace(config["OAuth:Keycloak:ClientId"]) && !string.IsNullOrWhiteSpace(config["OAuth:Keycloak:ClientSecret"])) + { + builder = builder.AddKeycloak(options => + { + options.BaseAddress = new Uri(config["OAuth:Keycloak:BaseAddress"]); + options.Realm = config["OAuth:Keycloak:Realm"]; + options.ClientId = config["OAuth:Keycloak:ClientId"]; + options.ClientSecret = config["OAuth:Keycloak:ClientSecret"]; + options.AccessType = AspNet.Security.OAuth.Keycloak.KeycloakAuthenticationAccessType.Confidential; + int version = Convert.ToInt32(config["OAuth:Keycloak:Version"]??"22") ; + options.Version = new Version(version,0); + }); + } + // Add services to the container. services.AddControllers() .AddJsonOptions(options => diff --git a/src/Infrastructure/BotSharp.OpenAPI/Controllers/UserController.cs b/src/Infrastructure/BotSharp.OpenAPI/Controllers/UserController.cs index 65b7a46a..97ac35aa 100644 --- a/src/Infrastructure/BotSharp.OpenAPI/Controllers/UserController.cs +++ b/src/Infrastructure/BotSharp.OpenAPI/Controllers/UserController.cs @@ -36,9 +36,9 @@ public class UserController : ControllerBase [AllowAnonymous] [HttpGet("/sso/{provider}")] - public async Task Authorize([FromRoute] string provider) + public async Task Authorize([FromRoute] string provider,string redirectHost) { - return Challenge(new AuthenticationProperties { RedirectUri = $"page/user/me" }, provider); + return Challenge(new AuthenticationProperties { RedirectUri = $"{redirectHost}/page/user/me" }, provider); } [AllowAnonymous] diff --git a/src/WebStarter/appsettings.json b/src/WebStarter/appsettings.json index c040b498..37907ff4 100644 --- a/src/WebStarter/appsettings.json +++ b/src/WebStarter/appsettings.json @@ -21,6 +21,13 @@ "Google": { "ClientId": "", "ClientSecret": "" + }, + "Keycloak": { + "BaseAddress": "", + "Realm": "", + "ClientId": "", + "ClientSecret": "", + "Version": 22 } }, From 7d0038ec741b28b55514bbcbae92ad7a62215f94 Mon Sep 17 00:00:00 2001 From: geffzhang Date: Sat, 17 Feb 2024 21:33:43 +0800 Subject: [PATCH 2/3] Update UserController.cs --- .../BotSharp.OpenAPI/Controllers/UserController.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Infrastructure/BotSharp.OpenAPI/Controllers/UserController.cs b/src/Infrastructure/BotSharp.OpenAPI/Controllers/UserController.cs index 97ac35aa..7b399909 100644 --- a/src/Infrastructure/BotSharp.OpenAPI/Controllers/UserController.cs +++ b/src/Infrastructure/BotSharp.OpenAPI/Controllers/UserController.cs @@ -36,9 +36,9 @@ public class UserController : ControllerBase [AllowAnonymous] [HttpGet("/sso/{provider}")] - public async Task Authorize([FromRoute] string provider,string redirectHost) + public async Task Authorize([FromRoute] string provider,string redirecturl) { - return Challenge(new AuthenticationProperties { RedirectUri = $"{redirectHost}/page/user/me" }, provider); + return Challenge(new AuthenticationProperties { RedirectUri = redirecturl }, provider); } [AllowAnonymous] From 496528c124cb9b1df11f1b9367bd356d14062969 Mon Sep 17 00:00:00 2001 From: geffzhang Date: Sat, 17 Feb 2024 22:16:21 +0800 Subject: [PATCH 3/3] Update UserController.cs --- .../BotSharp.OpenAPI/Controllers/UserController.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Infrastructure/BotSharp.OpenAPI/Controllers/UserController.cs b/src/Infrastructure/BotSharp.OpenAPI/Controllers/UserController.cs index 7b399909..e4201aa8 100644 --- a/src/Infrastructure/BotSharp.OpenAPI/Controllers/UserController.cs +++ b/src/Infrastructure/BotSharp.OpenAPI/Controllers/UserController.cs @@ -36,9 +36,9 @@ public class UserController : ControllerBase [AllowAnonymous] [HttpGet("/sso/{provider}")] - public async Task Authorize([FromRoute] string provider,string redirecturl) + public async Task Authorize([FromRoute] string provider,string redirectUrl) { - return Challenge(new AuthenticationProperties { RedirectUri = redirecturl }, provider); + return Challenge(new AuthenticationProperties { RedirectUri = redirectUrl }, provider); } [AllowAnonymous]