标签: jwt

身份验证:JWT使用与会话

JWT在身份验证等情况下使用会话的优势是什么?

是用作独立方法还是在会话中使用?

session jwt

89
推荐指数
4
解决办法
3万
查看次数

带有node-jwt-simple的本地护照

如何在本地身份验证后,将本地护照与JWT令牌结合使用?

我想使用node-jwt-simple并查看passport.js我不知道该怎么做.

var passport = require('passport')
  , LocalStrategy = require('passport-local').Strategy;

passport.use(new LocalStrategy(
  function(username, password, done) {
    User.findOne({ username: username }, function(err, user) {
      if (err) { return done(err); }
      if (!user) {
        return done(null, false, { message: 'Incorrect username.' });
      }
      if (!user.validPassword(password)) {
        return done(null, false, { message: 'Incorrect password.' });
      }
      return done(null, user);
    });
  }
));
Run Code Online (Sandbox Code Playgroud)

调用done()时是否可以返回令牌?像这样......(只是伪代码)

if(User.validCredentials(username, password)) {
  var token = jwt.encode({username: username}, tokenSecret);
  done(null, {token : token}); //is this possible? …
Run Code Online (Sandbox Code Playgroud)

authentication token node.js jwt passport.js

87
推荐指数
2
解决办法
4万
查看次数

JWT刷新令牌流

我正在构建一个移动应用程序,并使用JWT进行身份验证.

看起来最好的方法是将JWT访问令牌与刷新令牌配对,这样我就可以根据需要随时使访问令牌过期.

  1. 刷新令牌是什么样的?它是随机字符串吗?这个字符串加密了吗?这是另一个JWT吗?
  2. 刷新令牌将存储在用户模型的数据库中以供访问,对吗?看起来它应该在这种情况下加密
  3. 我会在用户登录后发回刷新令牌,然后让客户端访问一个单独的路径来检索访问令牌吗?

security authentication oauth-2.0 jwt

87
推荐指数
5
解决办法
6万
查看次数

JWT on .NET Core 2.0

我一直在冒险让JWT在DotNet核心2.0上工作(现在到达最终版本).有大量的文档,但是所有的示例代码似乎都在使用已弃用的API并且刚刚进入Core,它确实令人眼花缭乱地想出它应该如何实现.我尝试使用Jose,但应用程序.不推荐使用UseJwtBearerAuthentication,并且没有关于下一步操作的文档.

有没有人有一个使用dotnet core 2.0的开源项目,它可以简单地从授权头解析JWT并允许我授权HS256编码的JWT令牌?

类下面不抛出任何异常,但没有请求授权,和我没有得到任何指示,为什么他们是未经授权的.响应是空的401,所以对我来说,表明没有异常,但秘密不匹配.

奇怪的是我的令牌是用HS256算法加密的,但是我没有看到任何指示器要求它强制它在任何地方使用该算法.

这是我到目前为止的课程:

using System;
using System.Collections.Generic;
using System.IO;
using Microsoft.AspNetCore.Authentication;
using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Net.Http.Headers;
using Newtonsoft.Json.Linq;
using Microsoft.IdentityModel.Tokens;
using System.Text;

namespace Site.Authorization
{
    public static class SiteAuthorizationExtensions
    {
        public static IServiceCollection AddSiteAuthorization(this IServiceCollection services)
        {
            var signingKey = new SymmetricSecurityKey(Encoding.ASCII.GetBytes("SECRET_KEY"));

            var tokenValidationParameters = new TokenValidationParameters
            {
                // The signing key must match!
                ValidateIssuerSigningKey = true,
                ValidateAudience = false,
                ValidateIssuer = false, …
Run Code Online (Sandbox Code Playgroud)

c# jwt .net-core jose

79
推荐指数
4
解决办法
5万
查看次数

JWT和Bearer Token有什么区别?

我正在学习像Basic,Digest,OAuth2.0,JWT和Bearer Token这样的授权.

现在我有一个问题.

您知道JWT在OAuth2.0标准中被用作Access_Token.JWT出现在RFC 7519中,而Bearer Token出现在RFC 6750中.

例如,持票人:

Authorization: Bearer <token>
Run Code Online (Sandbox Code Playgroud)

我曾经通过AJAX向服务器发送令牌或者将令牌添加到url的查询字符串中.我知道也可以通过将令牌添加到请求标头来发送令牌.这是否意味着应该将令牌添加到Authorization Bearer标头?

你能告诉我JWT和Bearer Token之间的关系吗?非常感谢.

oauth token jwt

77
推荐指数
3
解决办法
4万
查看次数

JWT与基于令牌的身份验证的cookie

我读了一些关于"JWT vs Cookie"的帖子,但它们只让我更加困惑......

  1. 我想要澄清一下,当人们谈论"基于令牌的身份验证与cookie"时,这里的cookie只是指会话cookie吗?我的理解是cookie就像一个媒介,它可以用来实现基于令牌的身份验证(存储可以识别客户端登录用户的东西)或基于会话的身份验证(在客户端存储常量)匹配服务器端的会话信息)

  2. 为什么我们需要JSON Web令牌?我使用标准cookie来实现基于令牌的身份验证(不使用会话ID,不使用服务器内存或文件存储):Set-Cookie: user=innocent; preferred-color=azure和我观察到的唯一区别是JWT包含有效负载和签名 ...而您可以选择http标头的签名或纯文本 cookie 之间.在我看来签署的cookie()cookie:'time=s%3A1464743488946.WvSJxbCspOG3aiGi4zCMMR9yBdvS%2B6Ob2f3OG6%2FYCJM'更节省空间,唯一的缺点是,客户端无法读取该令牌,只有服务器可以...但我认为这是很好的,因为就像要求在智威汤逊是可选的,它不是必需的令牌有意义

authentication cookies json jwt

75
推荐指数
5
解决办法
3万
查看次数

如何解码JWT Token?

我不明白这个库是如何工作的.请问你能帮帮我吗 ?

这是我的简单代码:

public void TestJwtSecurityTokenHandler()
    {
        var stream =
            "eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJJU1MiLCJzY29wZSI6Imh0dHBzOi8vbGFyaW0uZG5zY2UuZG91YW5lL2NpZWxzZXJ2aWNlL3dzIiwiYXVkIjoiaHR0cHM6Ly9kb3VhbmUuZmluYW5jZXMuZ291di5mci9vYXV0aDIvdjEiLCJpYXQiOiJcL0RhdGUoMTQ2ODM2MjU5Mzc4NClcLyJ9";
        var handler = new JwtSecurityTokenHandler();

        var jsonToken = handler.ReadToken(stream);
    }
Run Code Online (Sandbox Code Playgroud)

这是错误:

字符串需要采用紧凑的JSON格式,格式如下:Base64UrlEncodedHeader.Base64UrlEndcodedPayload.OPTIONAL,Base64UrlEncodedSignature'.

如果你在jwt.io网站上复制流,它工作正常:)

.net c# jwt

72
推荐指数
6
解决办法
8万
查看次数

JWT应该存储在localStorage还是cookie?

为了使用JWT保护REST API,根据一些材料(如本指南和此问题),JWT可以存储在localStorageCookies中.根据我的理解:

  • localStorage受XSS限制,通常不建议在其中存储任何敏感信息.
  • 使用Cookie,我们可以应用标志"httpOnly",这可以降低XSS的风险.但是,如果我们要在后端从Cookies读取JWT,那么我们将受到CSRF的约束.

因此,基于上述前提 - 最好将JWT存储在Cookies中.在每次向服务器发出请求时,将从Cookie中读取JWT并使用承载方案添加到授权标头中.然后,服务器可以验证请求标头中的JWT(而不是从cookie中读取它).

我的理解是否正确?如果是这样,上述方法是否有任何安全问题?或者实际上我们可以在第一时间使用localStorage逃脱?

security cookies restful-authentication local-storage jwt

68
推荐指数
4
解决办法
3万
查看次数

用于Java的JWT(JSON Web Token)库

我正在开发使用Java和AngularJS开发的Web应用程序,并选择实现令牌认证和授权.出于练习目的,我已经到了将证书发送到服务器,生成随机令牌存储它并将其发送回客户端的程度.在每次向服务器发出请求时,我都会在标头中附加令牌并且它可以正常工作.对于身份验证的观点是完美的,不需要更多.

但是,我现在想要跟踪用户类型(管理员,普通用户......),以及它的id或任何其他唯一字段; 据我所知,我必须在令牌中加密,我在登录操作期间将其发送回客户端.那是对的吗?

您是否使用过任何JWT库并可以生成,加密和解密此类令牌?将非常感谢图书馆的API和Maven依赖关系的链接.

谢谢

java json token jwt web

67
推荐指数
6
解决办法
11万
查看次数

在更改密码和在node.js中注销时使JWT无效的最佳做法?

我想知道在更改密码/注销时不使用db而使JWT无效的最佳实践.

我有以下想法通过点击用户数据库处理上述2个案例.

1.密码更改,我检查存储在用户db中的密码(散列).

2.注销时,我在用户数据库中保存了最后注销时间,因此通过比较令牌创建时间和注销时间,我可以使这种情况无效.

但是这两种情况是以每次用户点击api时命中用户数据库为代价的.任何最佳实践表示赞赏.

更新: 我不认为我们能够在没有命中数据库的情况下使JWT无效.所以我想出了一个解决方案.我已经发布了我的答案,如果您有任何疑虑,欢迎您.

javascript token auth-token node.js jwt

64
推荐指数
3
解决办法
5万
查看次数