webdav portal auth via ad

This commit is contained in:
vfedosevich 2015-01-13 04:18:56 -08:00
parent 05d9fddb5d
commit 7dd090820b
56 changed files with 927 additions and 281 deletions

View file

@ -3,6 +3,10 @@ using System.Web;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;
using System.Web.Script.Serialization;
using System.Web.Security;
using WebsitePanel.WebDav.Core.Config;
using WebsitePanel.WebDav.Core.Security.Authentication.Principals;
using WebsitePanel.WebDavPortal.Controllers;
using WebsitePanel.WebDavPortal.DependencyInjection;
@ -48,5 +52,47 @@ namespace WebsitePanel.WebDavPortal
controller.Execute(requestContext);
Response.End();
}
protected void Application_PostAuthenticateRequest(Object sender, EventArgs e)
{
HttpCookie authCookie = Request.Cookies[FormsAuthentication.FormsCookieName];
var contextWrapper = new HttpContextWrapper(Context);
if (authCookie != null)
{
FormsAuthenticationTicket authTicket = FormsAuthentication.Decrypt(authCookie.Value);
var serializer = new JavaScriptSerializer();
var principalSerialized = serializer.Deserialize<WspPrincipal>(authTicket.UserData);
var principal = new WspPrincipal(principalSerialized.Login);
principal.AccountId = principalSerialized.AccountId;
principal.ItemId = principalSerialized.ItemId;
principal.OrganizationId = principalSerialized.OrganizationId;
principal.DisplayName = principalSerialized.DisplayName;
principal.EncryptedPassword = principalSerialized.EncryptedPassword;
HttpContext.Current.User = principal;
if (!contextWrapper.Request.IsAjaxRequest())
{
SetAuthenticationExpirationTicket();
}
}
}
public static void SetAuthenticationExpirationTicket()
{
var expirationDateTimeInUtc = DateTime.UtcNow.AddMinutes(FormsAuthentication.Timeout.TotalMinutes).AddSeconds(1);
var authenticationExpirationTicketCookie = new HttpCookie(WebDavAppConfigManager.Instance.AuthTimeoutCookieName);
authenticationExpirationTicketCookie.Value = expirationDateTimeInUtc.Subtract(new DateTime(1970, 1, 1)).TotalMilliseconds.ToString("F0");
authenticationExpirationTicketCookie.HttpOnly = false;
authenticationExpirationTicketCookie.Secure = FormsAuthentication.RequireSSL;
HttpContext.Current.Response.Cookies.Add(authenticationExpirationTicketCookie);
}
}
}