我一直在读关于智威汤逊的文章。
但从我读到的内容来看,它不是一种身份验证机制,而更像是身份验证机制中的一个关键组件。
我目前已经实现了一个可以工作的解决方案,但这只是为了试用JWT并看看它是如何工作的。但我现在所追求的是一个人应该如何利用它。根据我的经验,它基本上只是一个加密机制,给你一个唯一的加密密钥。您还可以将信息放入此令牌中。
我希望在ASP.NET web API2上实现它,以供移动应用程序使用。
所以第一步:
这只是我对它的理解,听着,我可能走错了路。
JWT的理想状态是不是使您不必对每个请求进行身份验证?我只需要对用户的凭据进行一次身份验证(在初始登录时),然后服务器就可以简单地使用JWT,而不必在DB中查找用户pw和user?
我只想使用JWT来标识用户是谁。我将授权后,我已验证他们。据我所知,新的MVC和身份验证与授权存在很大的混淆。
所以我的问题归结为。
如何使用JWT安全有效地实现身份验证机制?我不想只是说出一些似乎有效的东西,而对安全影响没有任何想法。我确信有一个来源,一些地方,可能已经设计了一个安全的机制,将满足我的要求。
我的要求是:
谢谢
null
您的JWT可以包含您想要的任何信息。用户的姓名、出生日期、电子邮件等。您可以使用基于声明的授权来完成此操作。然后,您只需告诉您的提供者根据claims原则用这些claims创建一个JWT。下面的代码来自该成员资格重新启动示例,它向您展示了如何完成此操作。
public override Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
var svc = context.OwinContext.Environment.GetUserAccountService<UserAccount>();
UserAccount user;
if (svc.Authenticate("users", context.UserName, context.Password, out user))
{
var claims = user.GetAllClaims();
var id = new System.Security.Claims.ClaimsIdentity(claims, "MembershipReboot");
context.Validated(id);
}
return base.GrantResourceOwnerCredentials(context);
}
这允许您精确地控制谁正在访问您的资源,而不需要访问您的处理器密集型身份验证服务。
实现令牌提供程序的一个非常简单的方法是在您的WebAPI项目中使用Microsoft的OAuth授权服务器。它提供了为API制作OAuth服务器所需的基本内容。
您还可以查看ThinkTecture的身份服务器,这将使您更容易地控制用户。例如,您可以很容易地使用identity server实现刷新令牌,在该服务器中用户只进行一次身份验证,然后在一定时间内(可能一个月),他们可以继续从identity server获得短期JWT。刷新令牌很好,因为它们可以被撤销,而JWT则不能。这种解决方案的缺点是您需要设置另一个或两个服务器来托管身份服务。
为了解决最后一个问题,即入侵者不应该能够复制最后一个请求来访问资源,您必须至少使用SSL。这将保护传输中的令牌。
如果保护的是极其敏感的东西,则应将令牌生存期保持在一个非常短的时间窗口内。如果你保护的是不那么敏感的东西,你可以延长寿命。如果有效的话,标记越长,如果用户的计算机受到攻击,攻击者必须模拟已验证的用户的时间窗口就越大。
注意:我的问题与Spring-Boot REST API+web应用程序的安全性有关。
我正在开发一个具有自己的身份验证和授权机制的REST应用程序。我想使用JSON Web Tokens进行身份验证。以下是有效且安全的实现吗? < li >将开发一个REST API来接受用户名和密码并进行认证。要使用的HTTP方法是POST,因此没有缓存。此外,在传输时还会有安全SSL < li >在认证时,将创建两个JWTs访问令牌和刷新令牌。刷新令牌将具有更长的有效期。这两个令牌都将写入coo
我正在使用SpringBoot开发具有微服务架构的Rest Backend。为了保护endpoint,我使用了JWT令牌机制。我正在使用Zuul API网关。 如果请求需要权限(来自JWT的角色),它将被转发到正确的微服务。Zuul api网关的“WebSecurityConfigrerAdapter”如下。 这样,我必须在这个类中编写每个请求授权部分。因此,我希望使用方法级安全性,即“Enabl
jwt不应该仅仅用于认证用户吗?我读到过可以在里面存储非敏感的东西,比如用户ID。将权限级别之类的东西存储在令牌中可以吗?这样我可以避免数据库调用。
本文向大家介绍Angular之jwt令牌身份验证的实现,包括了Angular之jwt令牌身份验证的实现的使用技巧和注意事项,需要的朋友参考一下 Angular之jwt令牌身份验证 demo https://gitee.com/powersky/jwt 介绍 Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该toke
在身份验证等情况下,与会话相比,使用JWTs有什么优势? 它是作为独立方法使用还是在会话中使用?