问题标签 [cookie-authentication]
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.
c# - 如何避免 MVC5 + Identity 中的会话劫持?/ 使cookie服务器端无效
我有一个使用 MVC5 和 Aspnet Identity(本地帐户 + 基于 cookie 的身份验证)制作的完全可用的 Web 应用程序。我们对该站点进行了安全审计,结果表明我们的站点容易受到会话劫持。重现漏洞的步骤如下:
1 使用有效用户登录 2 从请求中复制 cookie 值 3 注销 4 请求任何受保护的页面,将复制的 cookie 添加到请求标头
即使浏览器删除浏览器中的 cookie 并成功注销用户,COOKIE 值仍然有效。换句话说,我们客户的安全部门要求的是使 COOKIE 无效的服务器端。
到目前为止,我尝试在注销控制器中更改 cookie 的安全标记,但 cookie 仍然有效。
这是我的身份验证配置,设置为在初始登录后 24 小时使令牌过期
这是我的注销控制器
现在,结果是一样的:在用户注销后,任何人都可以使用 cookie 来模拟原始登录用户。
我期望完成的是注销并使特定的 cookie 值成为无效的服务器端,以便在注销后没有人可以使用它。如果用户没有明确注销,则该 cookie 应在 1 天后失效。
c# - CookieAuthentication cookies are invalid after application pool recycle
I have a .net core project using Microsoft.AspNetCore.Authentication (2.2.0) configured to use CookieAuthentication. Cookies are configured to be persistent and expire after seven days. The problem is that all logged-in users are logged out whenever the application pool is recycled.
I am not using sessions at all. I have verified that the cookie is still present in the web browser, it seems like the existing cookies are determined to be invalid by the server. How can I change this behavior?
This is the current configuration:
asp.net-core-mvc - cookie身份验证中基于角色的菜单显示与asp.net核心MVC中的声明身份?
我需要最好的方法来进行基于角色的菜单导航。我的应用程序在 Asp.net core MVC 中,并且我使用了基于 cookie 的身份验证。我正在使用声明身份。
.net-core - 如何在 Azure App 服务中托管的多个 Web 应用程序之间共享相同的 .Net 核心身份验证 Cookie
在花了几天时间尝试了社区推荐的各种解决方案之后,我仍然找不到解决这个问题的方法。
我有多个应用程序需要实现单点登录。所有的应用程序都有两个项目。前端应用程序和后端应用程序。前端应用程序是用 ReactJS 编写的,后端是用 .Net core 2.2 编写的。所有应用程序都托管在 Azure 应用服务中。例如,用户身份验证系统有两个应用程序authweb.mydomain.org (ReactJS) 和authbackend.mydomain.org (.Net Core)。对于一个实例,所有其他应用程序都应通过此应用程序进行身份验证,app1 有两个 Web 应用程序app1web.mydomain.org和app1backend.mydomain.org
我选择了 cookie 身份验证方法来实现这个单点登录(不确定这是这个 scnario 的最完美选择)。用户使用他/她的用户名和密码登录到身份验证应用程序 ( authweb.mydomain.org )。然后后端(authbackend.mydomain.org)验证用户并在凭据有效时生成身份验证 cookie。这里我就不提我的ReactJs前端的源码了
authbackend.mydomain.org StartUp.cs
authbackend.mydomain.org AccountController.cs 对用户进行身份验证
一旦用户登录到 auth 应用程序,就会生成 auth cookie,并将用户重定向到 auth 应用程序的主页
authbackend.mydomain.org HomeController.cs
现在用户想要使用相同的身份验证 Cookie访问app1web.mydomain.org 。当我打开app1web.mydomain.org时,这些 cookie 在浏览器 cookie 部分中显示。此应用程序在其后端 ( app1backend.mydomain.org ) 中验证用户,以确保用户已通过身份验证。
app1backend.mydomain.org Startup.cs
app1backend.mydomain.org HomeController.js
当我调用上面的 Index 方法时,401-Unauthorized 从后端返回。但是 cookie 正在传递到后端。
当我将应用程序托管到 Azure 应用服务时,这在 localhost 上运行良好,但没有对 app1 进行身份验证。请有人解释一下我在这里错过了什么。非常感谢您的帮助。
c# - 成功 HttpContext.SigninAsync 后未找到声明
重新定义它。
我有一个 asp.net 核心 (api) 解决方案 a.sln,它有 accountcontroller.cs,它允许用户登录到应用程序。这是具有 Login 方法的 AccountController.cs 代码。
在上面的登录方法中,我们明确添加了声明“remember_me”。
成功登录后,我被定向到另一个 asp.net 核心解决方案,在 start.cs 上我试图找到相同的声明。这是 start.cs 的代码。
但是在上面的代码中,我找不到相同的声明“remember_me”。
我错过了什么吗?
asp.net-identity - Blazor AuthenticationStateProvider
有没有办法在 Component 之外访问身份验证状态?例如我正在尝试,
此类在 DI 中注册为
我正在尝试使用 CurrentUserProvider 作为 db Context 的参数
当我尝试运行时,我得到异常说,GetAuthenticationState应该在SetAuthentication State 之后调用,我该怎么做???
asp.net-core-3.1 - .NET Core 3.1 with Identity - 如何从 SQL 数据库动态设置 CookieAuthenticationOptions
现在花了很多时间但无济于事,我希望用户能够灵活地从应用程序内配置 CookieAuthenticationOptions。给出的大多数示例仅在启动时设置配置服务中的选项,但鉴于选项是硬编码的,这无用。
我面临的挑战是找到一个解决方案,允许在使用内置身份功能时配置这些选项,如果应用程序使用没有身份的 cookie 身份验证,那么它可能更容易弄清楚。
两个主要目标:
- 在启动时从 DB 表加载 CookieAuthenticationOptions。
- 如果在应用程序的生命周期内更改/更新设置,则需要使已经存在问题的 cookie 失效/强制在下一页请求中重新创建,以便 cookie 现在具有更新的参数。
到目前为止,我的理论对错是在下面的configure方法中加载选项,但是在唱歌时,我检查了chrome调试器,发现cookie名称之类的选项没有设置,假设应用程序只是使用默认值内置选项。那么我怎样才能实现上述目标呢?请注意,我在大多数应用程序中使用剃须刀页面和页面模型,还使用 MS 用户帐户模板中的内置身份系统。谢谢
MS模板登录页面模型使用标准登录方法:
asp.net-core - 在没有 BuildServiceProvider() 的情况下为 ConfigureApplicationCookie 设置自定义 SessionStore
我有一个使用 Redis 分布式缓存和 cookie 身份验证的 .NET Core 3 项目(最近从 2.2 升级)。
它目前看起来像这样:
问题是BuildServiceProvider()
导致构建错误:
Startup.cs(...):警告 ASP0000:从应用程序代码中调用“BuildServiceProvider”会导致创建单例服务的额外副本。考虑替代方案,例如依赖注入服务作为“配置”的参数。
这似乎不是一个选项 -ConfigureApplicationCookie
存在Startup.ConfigureServices
并且只能配置新服务,Startup.Configure
可以使用新服务,但不能覆盖CookieAuthenticationOptions.SessionStore
成为我的自定义商店。
我之前尝试过添加services.AddSingleton<ITicketStore>(p => new MyCustomRedisStore(cache, ...))
,ConfigureApplicationCookie
但这被忽略了。
显式设置CookieAuthenticationOptions.SessionStore
似乎是让它使用本地内存存储以外的任何东西的唯一方法。
我在网上找到的每个BuildServiceProvider()
示例都使用;
理想情况下,我想做类似的事情:
或者
然后CookieAuthenticationOptions.SessionStore
应该只使用我在那里配置的任何东西。
如何使应用程序 cookie 使用注入的存储?
c# - 区分 SignOutAsync 和 SlidingExpiration
我需要区分一个按钮的注销,它有一个 SignOutAsync 方法调用和一个实际的会话过期。有没有办法我们可以做到这一点?
这就是我目前所拥有的:
签出方式
除其他外,这是我目前要尝试区分的内容:
当然,这是行不通的,因为有多个来源,我想根据登录结果显示不同的消息。但我需要知道的重要一点是,是否有任何方法可以区分两者。
我的意思是......因为此时 cookie 已经被清除,我们没有任何关于它发生了什么的信息。
如果这是一种区分这种差异的方法,请告诉我。我会很高兴地收到它。
谢谢你的帮助。
asp.net-core-mvc - 并非所有查询参数都出现在返回 url
我已经构建了一个 ASP.NET CORE MVC 应用程序并使用 cookie 身份验证。下面是我在 Startup.cs 文件中的代码。
当 cookie 过期时,应用程序将重定向到/Account/Login
包含用户当前 url 的 Return Url 的路径。这在当前 url 具有0
或1
查询参数之前工作正常。如果当前 url 有 2 个查询参数,那么只有第一个查询参数被传递给返回 URL。登录方法如下。
例如,如果当前 URL 是/Inspection?inspectionID=1&processTypeID=2
,则返回 url 仅获取/Inspection?inspectionID=1
. processtypeID
参数不来。
但是当cookie过期时浏览器导航到/Account/Login
URL时,它会显示正确的url/Account/Login?ReturnUrl=/Inspection?inspectionID=1&processTypeID=2
谁能指出我为什么会发生这种情况以及如何解决这个问题?
谢谢,泽涵