Asp.Net Web API JWT 身份验证

Posted

技术标签:

【中文标题】Asp.Net Web API JWT 身份验证【英文标题】:Asp.Net Web API JWT Authentication 【发布时间】:2017-07-30 02:55:26 【问题描述】:

我已经在我的 Asp.Net Web API 应用程序中使用 JWT 实现了用户身份验证。每当用户登录时,它都可以正常工作,生成访问令牌并将其返回给客户端,并且客户端会发送回每个请求以访问受保护的资源。但是,如果我复制相同的访问令牌并使用相同的访问令牌准备来自任何其他客户端(如邮递员)的请求,它就可以访问受保护的资源。我认为这是一种正常的行为。但是有没有更好的解决方案来摆脱这种情况,即即使使用相同的访问令牌,也不允许任何其他客户端。这样也可以使其特定于客户。

【问题讨论】:

【参考方案1】:

如果您不希望任何其他入侵者复制您的访问令牌并访问受保护的资源,那么您必须使用 SSL

为了保护极其敏感的数据,您应该将令牌生命周期保持在非常短的时间窗口内。如果您保护的是不那么敏感的东西,您可以延长使用寿命。如果令牌有效,则令牌越长,如果用户的计算机受到威胁,攻击者将不得不冒充已验证用户的时间窗口就越大。

您可以查看this great answer 了解一些东西

【讨论】:

【参考方案2】:

您应该首先传递用户名和密码来获取令牌。该密码是提供安全性的私钥,以确保没有其他人可以为该用户获取令牌。只要您的流量通过 https(ssl),那么该令牌在传输过程中就会受到保护,其他任何人都无法拦截它。

【讨论】:

以上是关于Asp.Net Web API JWT 身份验证的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Web API 的 JWT 身份验证

Asp.Net Web API JWT 身份验证

将 JWT 身份验证实现从 .net core 2 转移到 asp.net web api 2

如何在使用 JWT 的 asp.net 核心 web 应用和 web api 中使用谷歌身份验证

具有混合身份验证 JWT 和 SAML 的 ASP.NET Web API 2.2 OWIN

text 使用ASP.NET Core 2 Web API,Angular 5,.NET核心身份和Facebook登录进行JWT身份验证