标签: formsauthenticationticket

FormsAuthenticationTicket.expiration v web.config值超时

这是一个MVC2网站,我遇到了FormsAuthentication票证的问题.30分钟后用户超时无法重新登录.在测试期间,DateTime.Now.AddMinutes(30)值设定为5000,一切正常,但是现在改为30,这是再当问题开始

从cookie创建

 FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(
            1,
            user.UserID,
            DateTime.Now,
            DateTime.Now.AddMinutes(30),
            false,
            "user,user1",
            FormsAuthentication.FormsCookiePath);
Run Code Online (Sandbox Code Playgroud)

Web.config文件

<authentication mode="Forms">
  <forms loginUrl="~/Account.mvc/LogOn" timeout="2880" name=".ASPXFORMSAUTH" />
</authentication>
Run Code Online (Sandbox Code Playgroud)

票证创建中的到期值是否必须> = web.config值?

c# cookies formsauthentication formsauthenticationticket asp.net-mvc-2

13
推荐指数
1
解决办法
9492
查看次数

OWIN自主CookieAuthentication和旧版.NET 4.0应用程序/ FormsAuthenticationTicket

我有两个有限的背景:

  1. ASP.NET 4.0 MVC/WebForms应用程序
  2. OWIN自托管与ASP.NET Web API 2

前者是现有的成熟产品,然而,它缺乏架构(SmartUI)导致难以维护的代码库,现在更加明显可见的可扩展性和可扩展性.

我们通过引入一个新的后端应用程序来迭代地解决这个问题 - 可以通过OWIN/WebAPI服务进行公开.

目前,我们只希望在新应用程序中利用cookie身份验证.最初,我认为使用基于FormsAuthenticationTicket的现有cookie身份验证/验证将是轻而易举的.显然这不是真的.

在我们的WebForms应用程序中,我们使用MachineKey来指定我们的decryptionKey和validationKey以支持我们的Web场.在.NET4中,如果我没有弄错的话,默认算法是AES.我认为如果默认值不够,利用这些信息构建我们自己的TicketDataFormat会很简单.

第一件事:

  • 如果你自主机与OWIN,默认TicketDataFormat使用DPAPI并没有 ASP.NET IIS的machineKey.
  • 在.NET 4.5中,Microsoft使MVC/WebForms MachineKey管道更具可扩展性.您可以使用自己的实现替换它,而不仅仅是更改算法.

理想情况下,我们不打算将我们的主应用程序更新到.NET 4.5来替换cookie加密.有谁知道将OWIN的CookieAuthentication与现有的FormsAuthenticationTicket集成的方法?

我们试图创建自定义: IDataProtector,SecureDataFormat<AuthenticationTicket>,IDataSerializer<AuthenticationTicket>的实现.IDataSerializer将负责FormsAuthenticationTicket和AuthenticationTicket之间的转换.

不幸的是,我无法找到有关微软机票加密的准确信息.以下是IDataProtector的示例构思:

public byte[] Unprotect(byte[] protectedData)
{
    using (var crypto = new AesCryptoServiceProvider())
    {
        byte[] result = null;
        const Int32 blockSize = 16;
        crypto.KeySize = 192;
        crypto.Key = "<MachineKey>".ToBytesFromHexadecimal();
        crypto.IV = protectedData.Take(blockSize).ToArray();
        crypto.Padding = PaddingMode.None; // This prevents a padding exception thrown.

        using (var decryptor = crypto.CreateDecryptor(crypto.Key, crypto.IV)) …
Run Code Online (Sandbox Code Playgroud)

asp.net forms-authentication formsauthenticationticket asp.net-web-api owin

13
推荐指数
1
解决办法
5638
查看次数

FormsAuthenticationTicket.Version属性有什么用?

当我偶然发现FormsAuthenticationTicket.Version属性时,我在应用程序中创建了我的身份验证机制.文档没有举例说明任何用例,我没有找到任何其他用途的参考.

有人用过吗?

谢谢

asp.net forms-authentication formsauthenticationticket

12
推荐指数
1
解决办法
2702
查看次数

FormsAuthenticationTicket.UserData属性的最大长度

我正在使用基于本教程的表单身份验证为ASP.Net 4.0站点实现自定义标识类:
表单身份验证配置和高级主题

我想在AuthCookie中存储额外的用户信息(名字/姓氏,性别,地理区域,个人资料图片缩略图文件名等...).msdn.microsoft.com上有关于限制UserData属性大小的警告.

我无法找到UserData属性的确定字符限制.只有整个加密的 cookie应该在4096字节以下.

有人知道我应该在我的代码中假设一个最大字符限制吗?或者更好地了解如何存储这些经常需要的用户信息?

谢谢

c# asp.net forms-authentication asp.net-4.0 formsauthenticationticket

11
推荐指数
1
解决办法
5677
查看次数

表单身份验证票证是否足够安全?

当用户基于默认的表单身份验证方法登录时,服务器会创建一个包含加密数据的cookie(使用Machine Key作为加密密钥).

这意味着如果有人找到/猜测/访问服务器的机器密钥,他将登录到Web应用程序.

我开发了一些在4台服务器上的应用程序.所以,我为machine.config中的所有服务器硬编码了相同的机器密钥,我无法使用自动生成模式.

  1. 是否可以暴力破坏机器钥匙?
  2. 还有其他方法吗?(我不想使用Windows和Passport)
  3. 表单身份验证票证是否足够安全?(即电子银行应用程序可接受)

asp.net forms-authentication machinekey machine.config formsauthenticationticket

9
推荐指数
1
解决办法
7142
查看次数

FormsAuthentication.SetAuthCookie与FormsAuthentication.Encrypt

问题1:setAuthCookie是否比FormsAuthentication.Encrypt(ticketVariable)更安全?

我的意思是,如果有人试图修改setAuthCookie创建的cookie,通过修改用户名,我想这会违反后续调用的身份验证?

问题2:对于那些使用iphone和平板电脑访问网站的人,我认为FormsAuthentication会失败吗?鉴于我不想使用cookieless选项,是否有另一种方法可以在智能手机网络浏览器和非智能手机网络浏览器上使网站安全?

干杯

asp.net-mvc formsauthentication formsauthenticationticket

8
推荐指数
1
解决办法
6412
查看次数

FormsAuthenticationTicket可以在应用程序池回收中存活吗?

我正在寻找一个解决方案,我们可以使用很长的有效期制作FormsAuthenticationTicket(和相应的cookie).这可以通过设置较高的值或使用滑动过期来实现,但是当网站的应用程序池被回收时,FormsAuthenticationTicket消失(我认为),cookie无效并要求用户再次登录.

有没有办法解决?

.net asp.net authentication formsauthenticationticket

6
推荐指数
1
解决办法
2043
查看次数

检查身份验证票证到期而不影响它

我正在尝试实现一个Web应用程序项目,我的网页可以使用AJAX检查服务器的身份验证票证到期日期/时间.

我正在使用带有slidingExpiration的表单身份验证.

我遇到的问题是我无法弄清楚如何检查值而不重置它.我创建了一个简单的页面 - CheckExpiration.aspx - 下面是代码背后的代码:

  private class AjaxResponse
  {
     public bool success;
     public string message;
     public string expirationDateTime;
     public string secondsRemaining;
     public string issueDate;
  }

  protected void Page_Load(object sender, EventArgs e)
  {
     AjaxResponse ar = new AjaxResponse();
     JavaScriptSerializer js = new JavaScriptSerializer();

     if (HttpContext.Current.User.Identity.IsAuthenticated)
     {
        FormsIdentity id = (FormsIdentity)HttpContext.Current.User.Identity;
        string expiration = id.Ticket.Expiration.ToString();

        TimeSpan timeRemaining = id.Ticket.Expiration - DateTime.Now;

        ar.success = true;
        ar.expirationDateTime = expiration;
        ar.issueDate = id.Ticket.IssueDate.ToString();
        ar.secondsRemaining = timeRemaining.Minutes.ToString() + ":" + timeRemaining.Seconds.ToString();
     }
     else
     { …
Run Code Online (Sandbox Code Playgroud)

c# asp.net forms-authentication formsauthenticationticket

5
推荐指数
1
解决办法
1671
查看次数

共享Owin Cookie身份验证和旧版表单身份验证Cookie

在我们公司,我们有一个使用Asp.net Web Forms 4.0构建的大型应用程序,它使用表单身份验证作为单点登录身份验证.配置如下:

<machineKey decryptionKey="..." validationKey="..." />
<authentication mode="Forms">
    <forms cookieless="UseCookies" loginUrl="/url/to/login" />
</authentication>
Run Code Online (Sandbox Code Playgroud)

上次我们正在开发一些使用Owin Cookie身份验证的项目.根据我的搜索,两种方法都不兼容.但是我发现这篇帖子是OWIN自我主机CookieAuthentication和Legacy .NET 4.0应用程序/ FormsAuthenticationTicket,我可以让他们两个一起工作,但我不能让整个代码工作得很好.实际上我不知道如何开发余数代码.

我会问你是否有人能解决这个问题或更简单的方法来解决这个问题?

我需要告诉你,我对Microsoft实现表单身份验证的细节知之甚少.

asp.net forms-authentication formsauthenticationticket asp.net-web-api owin

5
推荐指数
0
解决办法
628
查看次数