问题标签 [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 投票
0 回答
46 浏览

python - 我需要在 Django 中实现 JWT 吗?

我对身份验证不是很熟悉,但我知道 JWT 是最佳实践和市场标准,但我真的需要在 Django 中实现 JWT,如果不是,我可以不使用 Django 内置的基于 cookie 的身份验证吗?在 Django 基于 cookie 的身份验证上使用 JWT。

0 投票
2 回答
567 浏览

c# - ASP.NET Core 3.1 中的条件 AccessDeniedPath

我的项目有两个控制器来支持来自不同角色的用户 -成员顾问。在登录时,我为每个设置了“角色” ClaimType

会员和顾问有一个不同的登录页面,登录后MemberControllerConsultantController都重定向到“桌面”操作。

顾问控制器

启动程序

问题

如何配置身份验证服务以在用户尝试访问授权资源时将用户重定向到正确的登录页面)但未登录(即没有有效的身份验证 cookie)?目前我只有一个“AccessDeniedPath”,它将用户带到主页。

0 投票
1 回答
483 浏览

c# - 在 ASP.NET Core 中,您在哪里配置重定向登录?

我正在研究此处提供的示例:

我正在尝试在我自己的应用程序中实现类似的东西。示例应用程序的大部分功能都有效,正如我的应用程序中所复制的那样,但有一个关键功能不起作用。

在此示例应用程序中,有一个“联系(需要身份验证)”链接,单击该链接时会加载“/联系”页面 - 如果用户已登录。

如果用户未登录,“联系人(需要身份验证)”链接的 href= 仍然设置为“/Contact”,但是当您单击它时,您最终会进入“/Account/Login”控制器,并带有 ReturnUrl设置为“/联系人”。

“主页”链接指向 Index.cshtml,如果用户未登录,则不会重定向到“/Account/Login”。

这一切都很普通,除了......我找不到重定向到 /Account/Login 的位置,我无法确定为什么我们在一个页面上重定向而不是另一个页面。

是什么导致联系人重定向到登录名和主页而不是,我在哪里配置它是我要重定向到的帐户/登录名?


Rakib 的评论将我指向一个 YouTube 视频,同一系列中的一个早期视频给了我一个关于我的问题的提示。

ConfigureServices() 中的示例应用程序具有:

所以这就是“/Contact”需要身份验证的原因。但是当您需要身份验证时,我仍然看不到将“/Account/Login”设置为 URL 的内容。

0 投票
0 回答
37 浏览

asp.net-core - 为什么即使我从 aspnetcore 5.0 的目录中删除了 DataProtectionProvider 密钥后 cookie 身份验证仍然成功

我正在寻求实现在多服务器环境/webfarm 中工作的 cookie 身份验证。当我使用映射到本地文件夹的数据保护提供程序 persistkeystofilesystem 进行测试时,密钥被创建并且 cookie 也被验证,但是当我从文件夹中删除密钥时仍然cookie 得到验证是真的。我期望的是,如果 cookie 受密钥保护,那么在删除该密钥身份验证后应该不起作用。我是否缺少 aspnetcore 的任何核心/基本功能。

... .AddCookie(opt=>{ opt.DataProtectionProvider=DataProtectionProvider.Create(new DirectoryInfo(@"c:\temp-keys")); });

...

我在这里做错了什么。

0 投票
1 回答
240 浏览

google-chrome - Blazor Set-Cookie 无效

我正在尝试在 Chrome 中运行的 Blazor WebAssembly 中设置 Cookie 身份验证。

WebApp 在 https://localhost:44342
上运行 WebApi 在 https://localhost:44377 上运行

在使用有效凭据向 https://localhost:44377/user/loginuser 发送发布请求(使用 PostAsJsonAsync)后,WebApi 会发送回带有 Set-Cookie: .AspNetCore.Cookies=... 的响应标头

该cookie似乎被浏览器拒绝,因为

  1. 我在 F12 -> 应用程序 -> Cookies 中看不到它
  2. 后续请求没有附加 cookie

我在网上广泛研究了这个问题。我发现了大量的提示和解释。包括配置 CORS、使用 IP 而不是 localhost、设置 cookie 属性(如 SameSite、HttpOnly、Expiration 和 Domain)或使用 chrome 内部结构进行进一步调查。

这些都没有帮助。Set-Cookie 仍然被浏览器忽略。

有人对我如何继续有一个好主意吗?谢谢

0 投票
0 回答
337 浏览

c# - .NET 5、ASP .NET Core 5 应用程序 ajax 发布请求 cookie 为空

如标题所述,我有一个 ASP.NET Core 5 MVC 应用程序,它部署在 Windows 2019 服务器上的 IIS 上。

这些是一些细节

的输出dotnet --info

当我使用 POST 方法发送 ajax 请求时,它无法通过身份验证,这要求 cookie 中存在一些声明。

请求很简单:

并且控制器上的授权是

非常奇怪的是:在 localhost 上它可以工作。在我使用 IIS 放置的 Azure VM 上,它可以工作。在装有 IIS 的客户机器上,我收到此错误。

我设置了这样的 cookie 身份验证:

然后在调用Login(使用[AllowAnonymous])后的控制器上我使用它

在 Chrome 开发者控制台中,我得到了一个常见的

没有任何其他细节

我的控制器有这个身份验证

真正的奥秘在于:

  • 本地主机 Visual Studio 工作
  • 我使用与上面指定的相同版本的 IIS 设置的带有 Windows Server 2019 的 Azure VM 运行良好且完美无缺。
  • 具有 Windows Server 2019 和相同 IIS 版本的客户虚拟机会产生该错误。

我还添加了一些登录到事件查看器,方法是将其放入appsettings.json

这就是客户服务器上的事件查看器中出现的内容:

##################################### 类别:Microsoft.AspNetCore.Hosting.Diagnostics EventId:1 SpanId:ab3998eb3f2a4048 TraceId:180f1ccebad55449a5c211e9dabf3c20 ParentId:0000000000000000 RequestId:800000a7-0001-ff00-b63f-84710c7967bb RequestPath:/MyApplication/Home/Login

请求开始 HTTP/1.1 POST http://CustomerVirtualMachineHost/MyApplication/Home/Login application/json;+charset=UTF-8 59

##################################### 类别:Microsoft.AspNetCore.HttpsPolicy.HstsMiddleware EventId:1 SpanId:ab3998eb3f2a4048 TraceId:180f1ccebad55449a5c211e9dabf3c20 ParentId:0000000000000000 RequestId:800000a7-0001-ff00-b63f-84710c7967bb RequestPath:/MyApplication/Home/Login

请求不安全。跳过 HSTS 标头。

#################################### 类别:Microsoft.AspNetCore.StaticFiles.StaticFileMiddleware EventId:1 SpanId:ab3998eb3f2a4048 TraceId:180f1ccebad55449a5c211e9dabf3c20 ParentId:0000000000000000 RequestId:800000a7-0001-ff00-b63f-84710c7967bb RequestPath:/MyApplication/Home/Login

不支持 POST 请求##################################### 类别:Microsoft.AspNetCore.Routing .Matching.DfaMatcher EventId: 1001 SpanId: ab3998eb3f2a4048 TraceId: 180f1ccebad55449a5c211e9dabf3c20 ParentId: 0000000000000000 RequestId: 800000a7-0001-ff00-b63f-84710/c796 RequestbbPath: /MyApplication

为请求路径“/MyApplication/Home/Login”找到 1 个候选人

##################################### 类别:Microsoft.AspNetCore.Routing.Matching.DfaMatcher EventId : 1005 SpanId: ab3998eb3f2a4048 TraceId: 180f1ccebad55449a5c211e9dabf3c20 ParentId: 0000000000000000 RequestId: 800000a7-0001-ff00-b63f-84710c7967bb RequestPath: /MyApplication/Home/Login

路由模式为“MyApplication/{controller=Home}/{action=Index}/{id?}”的端点“MYAPPLICATION.Areas.MyApplication.Controllers.HomeController.Login (MYAPPLICATION)”对请求路径“/MyApplication/”有效主页/登录

#################################### 类别:Microsoft.AspNetCore.Routing.EndpointRoutingMiddleware EventId:1 SpanId:ab3998eb3f2a4048 TraceId:180f1ccebad55449a5c211e9dabf3c20 ParentId:0000000000000000 RequestId:800000a7-0001-ff00-b63f-84710c7967bb RequestPath:/MyApplication/Home/Login

请求匹配的端点“MYAPPLICATION.Areas.MyApplication.Controllers.HomeController.Login (MYAPPLICATION)”

##################################### 类别:Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler EventId :7 SpanId:ab3998eb3f2a4048 TraceId:180f1ccebad55449a5c211e9dabf3c20 ParentId:0000000000000000 RequestId:800000a7-0001-ff00-b63f-84710c7967bb RequestPath:/MyApplication/Home/Login

Cookie 未通过身份验证。失败信息:票已过期

##################################### 类别:Microsoft.AspNetCore.Authorization.DefaultAuthorizationService EventId:2 SpanId:ab3998eb3f2a4048 TraceId:180f1ccebad55449a5c211e9dabf3c20 ParentId:0000000000000000 RequestId:800000a7-0001-ff00-b63f-84710c7967bb RequestPath:/MyApplication/Home/Login

授权失败。未满足这些要求: DenyAnonymousAuthorizationRequirement:需要经过身份验证的用户。ClaimsAuthorizationRequirement:Claim.Type=MYAPPLICATION_ENABLED_USER 和 Claim.Value 是以下值之一:(true)

##################################### 类别:Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationHandler EventId :12 SpanId:ab3998eb3f2a4048 TraceId:180f1ccebad55449a5c211e9dabf3c20 ParentId:0000000000000000 RequestId:800000a7-0001-ff00-b63f-84710c7967bb RequestPath:/MyApplication/Home/Login

AuthenticationScheme:Cookie 受到质疑。

##################################### 类别:Microsoft.AspNetCore.Hosting.Diagnostics EventId:2 SpanId:ab3998eb3f2a4048 TraceId:180f1ccebad55449a5c211e9dabf3c20 ParentId:0000000000000000 RequestId:800000a7-0001-ff00-b63f-84710c7967bb RequestPath:/MyApplication/Home/Login

请求完成 HTTP/1.1 POST http://CustomerVirtualMachineHost/MyApplication/Home/Login

应用程序/json;+charset=UTF-8 59 - 401 - - 2.7820ms

会是什么?我该如何解决这个问题?是 IIS 的一些 cookie 设置吗?

我怀疑它可能与某些 IIS cookie 配置或用户浏览器和驻留在不同域上的客户服务器之间的差异有关?

谁能帮我?

0 投票
0 回答
15 浏览

docker-compose - 本地主机上的 Cookie 身份验证 Couchdb

尝试使用我的开发环境上的 cookie 身份验证从 Couchdb 检索数据,但登录后浏览器不存储 cookie。在 Couchdb (couch_httpd_auth, cookie_authentication_handler) 上启用了 cookie 身份验证。Couchdb 从 docker-compose 文件执行。

有什么事要做吗?是因为我不使用 tls 吗?

0 投票
1 回答
73 浏览

c# - 添加 JWT 身份验证后,CookieAuthenticationOptions.AccessDeniedPath 和 LoginPath Redirect 停止工作

我最初的配置只是 cookie 身份验证,未登录或未授权的重定向有效。然后我添加了 jwt token auth 以与我们应用程序的 api 端一起使用,并且可以正常工作,但是重定向已停止工作。我尝试将架构添加到授权属性,但它没有帮助。  [Authorize(AuthenticationSchemes = CookieAuthenticationDefaults.AuthenticationScheme)]

我尝试处理 Events.OnRedirectToAccessDenied 事件,当我添加 jwt 支持(AddJwtBearer 并将架构添加到默认策略)时它不会触发。

0 投票
0 回答
286 浏览

authentication - ASP.NET Core:Cookie 未经过身份验证。失败消息:取消保护票证失败

我们最近将我们的 .net 核心应用程序部署到负载均衡的生产环境中。用户报告说该网站间歇性地死掉——通常在 20 到 30 分钟后。应用程序无法再从数据库中获取数据,用户被迫再次登录。它似乎最常发生在交通繁忙的时期。

在部署之前,该应用程序在负载平衡的服务器上进行了测试,一切都按预期工作。

查看应用程序的日志,我看到以下消息:

我在想数据保护的设置方式可能有问题。它目前使用数据库上下文方案。

这是中间件的样子:

数据库上下文类:

以下是我们迄今为止尝试过的事情的列表:

  • 检查数据库中的 DataProtectionKeys 表是否有过期密钥。一切看起来都很好。
  • IIS:AppPool 将空闲超时设置为 0,启动模式设置为“始终运行”,启用预加载 = True
  • 尝试通过在应用程序处于活动状态时关闭负载平衡来复制暂存中的问题。没有看到任何问题,该应用程序保持与数据库的连接并继续工作。
  • 清除缓存以删除现有 cookie

关于什么可能是错误的任何想法?

0 投票
0 回答
29 浏览

c# - 在 MVC 应用程序中使用 OAuth

对于我的项目,我们目前使用多种身份验证方法,Cookie 身份验证、承载 OAuth 令牌和外部登录。我们正在尝试简化我们的代码库以删除 Cookie 身份验证。我们只想使用 OAuth 身份验证。在非 SPA、常规 MVC 应用程序中实现此功能的最佳方法是什么?或者这甚至是可能的吗?

我目前已经能够使用 HttpOnly Cookie 通过自定义中间件来存储和设置 Authorization 标头。但是,我现在想设置刷新令牌,因为我们需要将令牌的到期时间保持在最短。我怎样才能设置刷新令牌?

我目前正在使用来自 Identity 的内置 OAuth。