密码授予类型:提供根据用户名和密码获取访问令牌的能力。
刷新授权类型:授予基于特定刷新令牌生成另一个访问令牌的能力
客户端凭证授予类型:提供用 API 密钥对交换访问令牌的能力。这是通过 API 密钥管理功能支持的。
这里真正的问题是,您是否安全地使用它?在 Stormpath,我们遵循这些最佳实践,并鼓励我们的客户也这样做:
将您的 JWT 存储在安全的 HttpOnly cookie 中。这可以防止跨站点脚本(XSS)攻击。
如果您使用 cookie 发送您的 JWT,那么 CSRF 保护是必不可少的!其他域名可能会在未经 危地马拉电报号码数据 您用户同意的情况下向您的网站发出请求,从而恶意使用您的 cookie。如果您的服务器盲目地对用户进行身份验证,仅仅因为用户有 cookie,那么您遇到的问题将比硬盘大小还要多。您还允许 CSRF 攻击,即另一个网站在未经用户同意的情况下在您的服务器上触发状态更改操作。这是可能的,因为无论请求是如何触发的,浏览器总是会自动发送用户的 cookie。使用众多 CSRF 预防措施之一来减轻这种风险。
使用仅对身份验证服务可用的强密钥对您的令牌进行签名。每次使用令牌验证用户身份时,您的服务器必须验证该令牌是否已使用您的密钥进行签名。
不要在 JWT 中存储任何敏感数据。这些令牌通常经过签名以防止操纵(未加密),以便可以轻松解码和读取声明中的数据。如果您必须在令牌中输入敏感、非透明的信息,请对令牌进行加密。秘密签名密钥仅可由发行者和消费者访问;不应在这两方之外访问。
如果您担心重放攻击,请在声明中包含随机数(jti 声明)、到期时间(exp 声明)和创建时间(iat 声明)。这在 JWT 规范中有明确的定义。