diff --git a/dotnet/src/dotnetframework/GxClasses/Middleware/GXHttpServices.cs b/dotnet/src/dotnetframework/GxClasses/Middleware/GXHttpServices.cs index 50d7444e1..21f80bd1a 100644 --- a/dotnet/src/dotnetframework/GxClasses/Middleware/GXHttpServices.cs +++ b/dotnet/src/dotnetframework/GxClasses/Middleware/GXHttpServices.cs @@ -473,12 +473,28 @@ public GXOAuthLogout() public override void webExecute() { + string genexus_agent = localHttpContext.Request.Headers["Genexus-Agent"]; try { - GxSecurityProvider.Provider.oauthlogout(context); + GxSecurityProvider.Provider.oauthlogout(context, out string URL, out short statusCode); + + if (statusCode == (int)HttpStatusCode.SeeOther) + localHttpContext.Response.StatusCode = (int)HttpStatusCode.OK; + else + localHttpContext.Response.StatusCode = statusCode; + + JObject jObj = new JObject(); + if (genexus_agent == "WebFrontend Application" && URL.Length > 0) + { + localHttpContext.Response.AddHeader("GXLocation", URL); + jObj.Put("GXLocation", URL); + } + else + { + jObj.Put("code", statusCode.ToString()); + } + localHttpContext.Response.Write(jObj.ToString()); localHttpContext.Response.ContentType = MediaTypesNames.ApplicationJson; - localHttpContext.Response.StatusCode = 200; - localHttpContext.Response.Write(new JObject().ToString()); context.CloseConnections(); } catch (Exception e) diff --git a/dotnet/src/dotnetframework/GxClasses/Security/GxSecurityProvider.cs b/dotnet/src/dotnetframework/GxClasses/Security/GxSecurityProvider.cs index c8d535fcc..fc6d125bf 100644 --- a/dotnet/src/dotnetframework/GxClasses/Security/GxSecurityProvider.cs +++ b/dotnet/src/dotnetframework/GxClasses/Security/GxSecurityProvider.cs @@ -31,7 +31,7 @@ public interface ISecurityProvider GxResult oauthauthentication(IGxContext context, String grantType, String userName, String userPassword, String clientId, String clientSecret, String scope, String additionalParameters, out OutData outData, out String URL, out bool flag); void oauthgetuser(IGxContext context, out String userJson, out bool isOK); void oauthlogout(IGxContext context); - + void oauthlogout(IGxContext context, out String URL, out short statusCode); } public class GxSecurityProvider { @@ -161,6 +161,12 @@ public void oauthgetuser(IGxContext context, out string userJson, out bool isOK) public void oauthlogout(IGxContext context) { } + + public void oauthlogout(IGxContext context, out string URL, out short statusCode) + { + URL = string.Empty; + statusCode = 0; + } } } \ No newline at end of file