问题标签 [formsauthenticationticket]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
204 浏览

asp.net - 加密/创建 ASP.NET 表单身份验证票证需要哪些输入?

我读到的所有内容都指向 web.config 文件中的 MachineKey 元素,它是唯一决定加密票证价值的东西,但目前我有很多证据可以反驳这一点。

所以我的问题是:鉴于机器密钥和票证内的数据相同,什么可以使票证加密值(特别是长度)不同?

编辑

我们看到时间戳导致值的变化。然而,在其中一种环境中,创建的值本身要短得多。其中两个站点(.NET 4、MVC2/3)可以很好地应对它。但是,.NET 2.0 / WebForms 站点无法使用相同的机器密钥对其进行解密。

0 投票
2 回答
317 浏览

asp.net - 阻止页面或处理程序更新 FormsAuthentication 票证

我在一个域上有几个应用程序,它们共享单点登录的表单身份验证票。我们还在每个页面上都有 javascript,会在用户会话到期前 2 分钟警告用户,并允许他注销或延长会话。当倒计时达到 0 时,它们会自动注销。这一切都很好。但是,当用户打开多个浏览器窗口或选项卡以在各种应用程序上工作时,它会惨遭失败。如果用户在窗口 B 中工作时窗口 A 超时,他们将在下一次请求时退出 B。

我有一个解决方案,但我似乎无法实现它。基本上,当页面呈现时,我会写出票证发行日期的刻度。然后,当自动注销时,我想 ajax 调用一个处理程序来查看这些滴答声是否与当前的表单验证票滴答声相匹配。如果它们不匹配,那么我知道另一个应用程序一直在刷新票证,我不会将它们注销。问题是我无法创建一个不更新票证的通用处理程序,因为我们使用了slidingexpiration = true。

在下面的处理程序代码中,如果我在查询字符串中发送的值与当前工单的刻度相匹配,则数据返回为 0。不幸的是,仅仅请求处理程序的行为就会更新票证并总是发回新的滴答计数。

关于如何在不扩展票证的情况下从服务器获取 JSON 请求的任何想法?

0 投票
2 回答
6422 浏览

c# - Maximum Length of FormsAuthenticationTicket.UserData Property

I am implementing a Custom Identity class for an ASP.Net 4.0 site with Forms Authentication based on this tutorial:
Forms Authentication Configuration and Advanced Topics

I would like to store extra user information (First/Last Name, Gender, Geographic Region, Profile Picture Thumbnail Filename, etc...) in the AuthCookie. There is a warning on msdn.microsoft.com about limiting the size of the UserData property.

I have not been able to find a definitive character limit for the UserData property. Only that the entire encrypted cookie should be under 4096 bytes.

Anybody know a maximum character limit I should assume in my code? Or have a better idea about how to store these frequently needed pieces of user information?

Thanks

0 投票
1 回答
1266 浏览

asp.net - asp.net中的密码恢复控制

我想创建一个遵循以下步骤的忘记密码控件:

1-用户输入他的电子邮件。2-向用户发送一封电子邮件,其中包含具有身份验证票的 URL。

我的问题是我无法创建身份验证票并将其嵌入到 url 这是我使用的一个示例:

但是票不包含在网址中,我该怎么做,谢谢。

使用asp.net 4.0。

0 投票
1 回答
479 浏览

c# - 验证 MembershipUser 没有密码?

是否可以在没有密码的情况下验证 MembershipUser。我有 gues 用户帐户并且有临时密码,但是我不需要这些用户实际登录。我想在他们的用户 ID 上自动对他们进行身份验证。

这可以做到吗?

似乎实际上并没有针对 memebrship 提供者对它们进行身份验证。

0 投票
1 回答
523 浏览

asp.net - asp.net表单认证票滑动到期码

由于slidingExpiration 标志设置为true,我希望能够检测表单身份验证票证何时更新。我需要使用新的到期时间调用后端服务。有谁知道由于slidingExpiration而重新验证票证并使用新的到期时间更新票证的代码在哪里?

谢谢!

0 投票
1 回答
1790 浏览

asp.net-mvc-3 - MVC 3 Cookies 不工作

我正在为 MVC 网站使用表单身份验证,我在添加 Cookie 时遇到问题,我正在使用加密表单身份验证票并将其添加到 Cookie 中,但是当检查我的 Cookie 时,它​​在那里(名称为“AuthCookie”)但值始终为空,过期日期始终设置为“01/01/0001 00:00”...这是我的登录控制器代码:

起初,我认为加密字符串由于长度原因无法正常工作,但我通过创建一个简单的测试库来测试了这一点,并且得到了相同的结果。

谁能帮忙

0 投票
1 回答
3547 浏览

asp.net - FormsAuthenticationTicket 超时后重新初始化 context.User

在我们的应用程序中,我们实现了基于角色的表单身份验证。这已使用 RoleModule 处理,我们将角色数据保存在 cookie 中,每次我们从 cookie 中读取数据并实例化IPrincipal对象。此代码在Application_OnPostAcquireRequestState方法中执行:

这将初始化context.User对象。每次向服务器发出请求时,都会使用上述流程对用户进行身份验证。在 中Application_EndRequest,我们使用当前的主体对象数据更新角色 cookie。

在我们的页面中有一个FormsAuthentication_OnAuthenticate方法,我们Global.asax在其中读取 cookie,更新 cookie,并在票证过期时更新票证。此外,在此方法中,如果票证过期,我们会尝试在会话对象中设置用户名值。

这是我们在 web.config 中的表单设置:

会话超时为 20 分钟。

问题:如果用户闲置超过 30 分钟(即 FormsAuth 票据续订时间),context.User.Identity.IsAuthenticated则角色模块中的值为false,并context.User设置为NULL。现在,当用户请求一个页面时,他将被重定向到登录页面。但是,cookie 仍然存在。如果用户再次尝试请求页面,则将context.User.IsAuthenticated属性设置为true并将用户带到相应的页面。此外,在FormsAuthentication_OnAuthenticate方法中,当我尝试设置会话值时,它会引发错误,因为会话对象是NULL.

我在这里要实现的是,在持久cookie的情况下,在auth票超时后,用户不应该被注销,即应该重新验证用户。

我怎样才能做到这一点?如果我没有错,设置context.User应该解决目的,但我该怎么做呢?

附加信息:

票证到期后,我尝试请求页面,事件查看器显示错误消息:

我使用的是标准机器密钥设置,存储在 web.config 中,而不是自动生成的。此外,我检查了所有错误的进程 ID 及其相同。

0 投票
2 回答
7438 浏览

asp.net - Forms Authentication Ticket 是否足够安全?

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

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

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

  1. 是否可以暴力破解机器密钥?
  2. 还有其他方法吗?(我不想使用 Windows 和 Passport)
  3. Forms Authentication Ticket 是否足够安全?(即电子银行应用程序可接受)
0 投票
1 回答
519 浏览

c# - asp.net 2.0 - 4.0 中的双重形式身份验证

背景

我在同一个域下有两个网站。一个网站只封装了登录/账户管理功能,另一个网站是真正的网站。

  • LoginWeb - 只有登录页面/css/images/javascript 文件夹允许匿名访问
  • AdminWebsite - 通过表单身份验证完全锁定。即甚至 javascript/images/css 文件夹都没有<authorization><allow users=*>



想要达到的目标这是我想要达到的工作流程,并且已经完成了 99% 的工作:

  1. 如果用户点击AdminWebsite上的任何页面,他将通过 FormsAuthentication发送回LoginWeb
  2. 用户在登录页面中提供凭据,并且LoginWeb网站发出表单身份验证票。用户仍未登录到AdminWebSite。(这样用户可以去更改密码页面等做账户管理功能)
  3. 用户在LoginWeb中再执行两个步骤,现在可以为AdminWebsite发出 FormsAuth 票证并重定向到它。

99% 已经正常工作
这是 LoginWeb 中的代码,它试图为 AdminWeb 发出 FormsAuth 票证,但它不工作。即 AdminWeb 仍在将我重定向回登录。我确定我缺少一些非常微不足道的东西,但我无法弄清楚它到底是什么?????????


这些是我的表单身份验证的 web.config 部分:
LoginWeb


管理网站