首页 文章

ASP.NET身份承载令牌与JWT优点和缺点

提问于
浏览
14

我已经使用了ASP.NET Identity一段时间了,并且一直在关注JWT(JSON Web Token),因为它们看起来非常有趣且易于使用 .

JWT.IO有一个很好的调试令牌的示例/工具 .

但是,我不完全确定JWT在后端的工作方式,你还会使用Identity吗?

另外,令牌(Bearer vs JWT)如何比较?哪个更安全?

2 回答

  • 30

    JWT就像是一个景点门票 . 它包含服务器需要嵌入其中的所有安全信息 . 一旦服务器将其发送出去,客户端只需要在需要时提供它,服务器就会相应地响应它是否有效 .

    内容完全可见,但它们是由服务器使用密钥签名的,因此它可以判断它们是否已被篡改 .

    由于所有内容都在JWT中,并且客户端可以将其呈现给他们想要的任何人,只要不同的服务器共享相同的秘密,他们就可以将其用于单点登录,以便他们可以验证签名 .

    就像一张票,JWT有一个到期日 . 只要它没有过期,它就是有效的 . 这意味着你不能在此之前撤销它们 . 因此,JWT通常具有较短的到期时间(30分钟左右),并且客户端还会发出刷新令牌,以便在JWT到期时快速续订 .

    JWTs

    • 未存储在服务器上

    • 非常适合SSO

    • 不能过早撤销

    持票人令牌就像客人名单 . 服务器将客户端放在访客列表上,然后提供密码以在需要时识别它 . 当客户端提供代码时,服务器在列表中查找它并检查它是否允许执行它所要求的任何操作 .

    服务器必须具有可用的列表,因此如果要跨服务器共享访问权限,则它们都需要能够访问列表(数据库),或者与具有它的某个权限(auth服务器)通信 .

    另一方面,由于他们有客人名单,他们可以随时带你离开 .

    Bearer Tokens

    • 存储在服务器上

    • 可以随时撤销

    • 需要中央机构或共享数据库才能跨服务器共享令牌

    如果你想沿着那条路走下去,Bit of Tech有一些关于用Web Api实现JWT的优秀教程 .

    http://bitoftech.net/2015/02/16/implement-oauth-json-web-tokens-authentication-in-asp-net-web-api-and-identity-2/

  • 4

    不幸的是,之前的回答可能会产生误导: Bearer Tokens 是OAuth 2.0使用的主要访问令牌类型 . 承载令牌是一个不透明的字符串,不打算对使用它的客户有任何意义 . 某些服务器将发出一串十六进制字符串的令牌,而其他服务器可能会使用结构化令牌,例如 JSON Web Tokens . (https://oauth.net/2/bearer-tokens/

相关问题