问题标签 [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.

0 投票
2 回答
935 浏览

azure-keyvault - DataProtectionBuilder.ProtectKeysWithAzureKeyVault 在 .net 4.7.2 中不起作用

ProtectKeysWithAzureKeyVault没有从Azure KeyVault使用 中拔出钥匙.net 4.7.2.。但它在.netcore 2.2

我执行以下操作:

代码运行没有任何错误/异常。但没有调用 azure key vault。

问题是什么?

我已经安装了这两个 nuget 包

  • Microsoft.Owin.Security.Interop

  • Microsoft.AspNetCore.DataProtection.AzureKeyVault

0 投票
0 回答
1445 浏览

asp.net-core - User.identity.name 在 .net 核心的 cookie 身份验证中为空

我在 .Net Core 中使用 cookie 身份验证和授权。我的问题是在 SignInAsync 之后,我得到 User.identity.name null 并且还声称计数为 0。
这是我的控制器代码

我的 Startup.cs 代码

0 投票
0 回答
119 浏览

.net - 使用 CookieAuthenticationProvider OnValidateIdentity 在 validateInterval 之后始终删除身份验证 cookie

如果你喜欢,背景跳过

我正在开发一个使用 OWIN 中间件提供的 CookieAuthentication 和 OpenIdConnectAuthentication(与 Azure AD 集成)的 .NET (4.5.2) Web 应用程序。

来自客户端的渗透测试强调,即使在用户退出后,cookie 仍然是授权的,因此可以用于提交请求。这是预期的行为,但我需要找到解决方法。

我正在尝试在此相关帖子中实施解决方法,即使用该SecurityStampValidator.OnValidateIdentity方法和调用UserManager.UpdateSecurityStampAsync以在注销时有效地使 cookie 无效。

如果有帮助,代码 可以根据要求提供更多信息

我在我的方法中添加了CookieAuthenticationProviderwith :OnValidateIdentityConfigureAuth

UseTokenLifetime = false根据这篇有用的帖子,我还添加了 OpenIdConnectAuthenticationOptions 。

我计划添加UserManager.UpdateSecurityStampAsync(User.Identity.GetUserId());退出过程,但我还没有进行测试。

如果相关,这是我的登录发起人:

我的期望

由于 SecurityStamp 不应该改变,在validateInterval(1 分钟)之后,一切都应该继续正常工作(用户现有的 cookie 仍然有效)。

结果

登录后超过 1 分钟的第一个请求会导致返回以下 set-cookie 响应标头:

随便=; 路径=/; expires=周四,1970 年 1 月 1 日 00:00:00 GMT

因此,用户的 cookie 被删除并且他们被注销。

问题)

我的期望是有效的,还是我误解了validateInterval?有没有办法让我按照我想要的方式工作?在创建初始 cookie 之后,是否有可能在我没有意识到的情况下在登录过程中的某个地方更改了 SecurityStamp?

0 投票
0 回答
273 浏览

authentication - 在 ASP.NET Core 中为 Web Api 使用 JWT 而不是 Cookie 身份验证的原因

根据这个(在 youtube 上)的会议,我们不应该对 Web Api 使用 Cookie 身份验证,因为如果同一个域上有多个服务器,就有可能受到 CSRF 攻击。

另一个来源

他说:“我们应该改用 JWT Bearer 令牌

究竟使用 JWT 令牌认证如何解决这个问题?

编辑

让我们对正在发生的事情有了更多的了解。

据我了解,有两种缓解 CSRF 的方法:

  1. 将令牌放入Authentication标头而不是 cookie 并将令牌存储在localStorage中。这样,如果以上述文章中所述的某种流氓形式发送,它们就不会被附加。JWT 令牌被放入Authentication标头?

  2. 据我了解,另一种方法是使用隐藏的输入字段来添加防伪令牌。这可以在 Razor 中轻松打开,并且在 Angular 中受支持。但是 React 呢?这样我们就可以坚持为 Web Api 使用标准的 Cookie 身份验证吗?我们可以在 React 中做到吗?有什么例子吗?

但是,如上文所述,共享域呢?共享域上的其他应用程序获取身份验证令牌或 cookie 是否存在风险?

0 投票
0 回答
1288 浏览

asp.net-core - 在 HttpContext.SignInAsync 之后刷新 ClaimsPrincipal(没有身份)

我正在构建一个 ASP.NET Core 2.1 Web 应用程序。我没有使用身份。我正在使用 CookieAuthentication。

相反,我使用HttContext.SignInAsync登录用户:

当主体中的某些内容发生更改时,我必须注销并登录以刷新主体。

有没有一种方法可以在不注销/登录的情况下刷新主体?

0 投票
1 回答
26 浏览

asp.net-identity - 无法使用 cookie 身份验证执行登录

我正在尝试登录,但HttpContext.User.Identitiy.IsAuthenticated总是错误的。

配置服务

方法

0 投票
0 回答
859 浏览

angular - 如何从 Angular 访问 ASP.NET Core WebAPI(使用 cookie 身份验证)

我正在尝试从使用 cookie 身份验证的 Angular(版本 7)访问 ASP.NET Core (1.1.2) WebAPI。Angular 应用程序的后端使用 ASP.NET Core 2.1.1 和 JWT 令牌身份验证。我是否需要返回 cookie 作为响应,如果需要,如何返回?以及如何从 Angular 访问/存储该 cookie?这两个应用程序当前都托管在 localhost 下。

如果cookie是通过手动登录设置的(使用我正在尝试访问的WebAPI的角度应用程序的登录页面)一切正常。来自 Angular 应用程序的登录是通过 Razor HTTP 表单进行的,该表单生成__RequestVerificationToken. 如果我将src属性 设置<iframe>为 WebAPI 登录请求,也可以使用。然后登录也可以正常工作。

但是,如果我尝试直接从 Angular 应用程序(带有登录数据的 GET 请求)执行登录过程,登录过程本身会运行,但登录似乎不起作用,因为没有设置 cookie。

来自 Angular 的请求:

这是请求 url 的样子:

登录需要访问的WebAPI:

登入:

我想要实现的是从角度登录到 WebAPI(并存储 cookie),然后访问任何 WebAPI 方法。

0 投票
0 回答
286 浏览

c# - 通过 chrome 扩展进行 Cookie 身份验证

我正在尝试通过 chrome 扩展对我的 Web 应用程序进行身份验证,目前数据发送正常,但身份验证 cookie 没有被创建/持久化。

不确定我做错了什么/如果我想通过 chrome 扩展收集与登录用户有关的信息,那么将登录信息持久保存到我的 Web 应用程序的最佳方法是什么。

登录控制器

启动.cs

chrome 扩展脚本

});

0 投票
1 回答
54 浏览

javascript - 有没有办法直接在 ReactJs 中操作 DOM 来显示 iframe?

所以我有这个带有后端 API 的非常标准的 ReactJs/Redux 项目。API 是安全的,我正在使用 cookie 身份验证,因为该项目支持各种 id 提供程序(Azure AD、Google 等,由后端处理并生成统一的身份验证 cookie)。

此 cookie 的使用寿命有限,我正在努力通过提供身份验证 cookie 的自动更新来改善用户体验。

我的策略是这样的 - 如果 ajax 请求或我的“获取用户信息”失败并出现 401,并且已经选择了登录提供程序(我正在存储登录提供程序的用户选择),应用程序应该创建一个不可见的 iframe选择的登录端点(即https://myapi.com/login/azure),在大多数情况下将自动登录大多数用户。

我正在尝试将其与我的 api 模块集成。我的目标是尝试(例如)一个 GET 请求 - 如果 401 失败(加上用户设置了登录类型),我想显示 iframe 并在一段时间后重试请求。如果仍然失败,我将重定向到登录页面。

理想情况下,我想从 api 模块调用调度,以便 iframe 可以以受控方式显示,但 api 模块不是组件,也没有连接到 redux。它只是公开了各种方法,例如

或者,我可以尝试直接在 api 模块中操作 DOM,但这似乎有点脏。

你们中有人处理过类似的情况吗?你们是如何解决的?

编辑:

我用这条最短的路线,因为它有点超出应用程序逻辑的其余部分(我可以通过这种方式将它包含在 api 服务中) - 并遵循heetic-monkey的评论。

我创建了一种方法来将 iframe 添加到登录端点并在设定的时间段后将其删除(我使用两秒)。

然后我做了一个 fetch 包装器,在显示 iframe 后重试(如果响应是 401)

到目前为止,它看起来运行良好,并且不会弄乱应用程序的其余部分。

0 投票
3 回答
699 浏览

c# - 部署到具有子域的网站时,AuthorizeAttribute 重定向到不正确的 url

通常(例如在我的本地主机上),[Authorize]正确重定向LoginPathCookieAuthenticationOptions.

但是,当我部署到我的登台站点 ( staging.mysite.com) 时,授权重定向似乎放错了部分 url。就我而言,它将:

http://staging/Account.mysite.com/Login?ReturnUrl=%2FHome%2FAuthorize

什么时候应该去:

http://staging.mysite.com/Account/Login?ReturnUrl=%2FHome%2FAuthorize

该应用程序非常基本:

我的控制器:

任何人都看到我要去哪里错了吗?


更新:

奇怪的是,如果我进行下面的更改,它会起作用。因此,问题似乎在于在路线中指定了操作?