标签: jwt

JWT和SAML之间的区别?

JWT(Json Web Token)和SAML有什么主要区别?请告诉我任何有弹簧安全性的例子.提前致谢.

saml jwt

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

JWT:什么是一个好的秘密密钥,以及如何将它存储在Node.js/Express应用程序中?

首先,生成密钥的好方法是什么?我应该在键盘上输入很多随机键来生成一个,但必须有一个更好的解决方案.解释生成一个非常好的密钥的方法.

第二,存储密钥的好方法是什么?我可以在我的应用程序配置中编写密钥,但这意味着对源代码的破坏将危及整个系统.在Node.js Express应用程序中存储密钥的好方法是什么?

security node.js express jwt json-web-token

40
推荐指数
1
解决办法
1万
查看次数

更新到 .NET 6 后使用 JWT Bearer Token 进行身份验证时未经授权(无效令牌)

将软件包Microsoft.AspNetCore.Authentication.JwtBearer从版本 3.1.14 更新到 6.0.1 后,身份验证请求失败,并显示 401 Unauthorized invalid token

新的软件包版本需要更改哪些内容?

c# authentication jwt asp.net-core

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

JWT中exp(到期时间)声明的格式是什么

我正在使用ADAL库来获取资源的访问令牌.有谁知道到期时间是什么格式?更具体地说 "exp" (Expiration time) claim.

JwtSecurityTokenclass在解析后只返回int32.所以,这不是一个好的指标.

尝试解析它TimeSpan,DateTime但值不是相隔90分钟.它几乎是一样的.

这是我从小提琴手那里得到的iatexp声称(使用https://jwt.io/来解析令牌)

iat:1475874457

exp"1475878357

这些价值差不多.

jwt azure-active-directory adal

38
推荐指数
2
解决办法
3万
查看次数

使用JWT和Basic身份验证保护REST应用程序是否有意义?

我有一个Spring REST应用程序,它首先使用基本身份验证进行保护.

然后我添加了一个登录控制器,它创建了一个JWT JSON Web令牌,用于后续请求.

我可以将以下代码移出登录控制器并进入安全过滤器吗?然后我不再需要登录控制器了.

tokenAuthenticationService.addTokenToResponseHeader(responseHeaders, credentialsResource.getEmail());
Run Code Online (Sandbox Code Playgroud)

或者我可以删除基本身份验证吗?

将基本身份验证与JWT混合是一种好的设计吗?

虽然一切正常,但我在这里有点黑暗,以便最好地设计这种安全性.

spring-security basic-authentication jwt

37
推荐指数
1
解决办法
2万
查看次数

如何在节点应用中解码Google OAuth 2.0 JWT(OpenID Connect)?

我在这里尝试使用谷歌OAuth来验证我的节点快递应用程序中的用户.我可以成功执行OAuth,它会返回如下响应:

{
  access_token: 'token string',
  id_token: 'id.string',
  expires_in: 3599,
  token_type: "Bearer"
}
Run Code Online (Sandbox Code Playgroud)

这一切都有道理,但我不能为我的生活弄清楚如何解码JWT.我对这一切都缺乏经验,所以这对我来说有点陌生.

按照此处列出的说明操作:https://developers.google.com/accounts/docs/OAuth2Login#validatinganidtoken我正在尝试在我的节点应用中本地解码JWT.

我在我的节点环境中安装了https://github.com/hokaccha/node-jwt-simple.

而且我很确定我需要使用这个证书(https://www.googleapis.com/oauth2/v1/certs)以某种方式解码它,但我在这里有点不知所措.我真的不明白我如何将证书带入我的节点应用程序,之后如何将它与node-jwt-simple一起使用.而且我也不太了解我何时需要提取新证书,而不是使用缓存证书.

那些有经验的人可以帮助我吗?

谢谢你的帮助.我现在完全不知所措.

**更新**

所以我取得了一些进展......有点儿.通过调用jwt.decode(id_token,certificate,true); 我能够成功解码令牌.即使证书var是一个空对象{}.这给我留下了3个问题.1:使用谷歌网址将证书送入我的快递应用程序的最佳方法是什么?2:我怎么知道何时需要提供它的新版本?3:似乎传递给noVerify(jwt.decode中的第3个arg)的真实是一个糟糕的主意.如何在不通过的情况下实现这一目标?看起来似乎jwt-simple期待hs256并且令牌正在使用rs256.

再一次,我对此缺乏经验,所以我可能会离开这里.

*更新* 感谢Nat的帮助,我得到了这个工作!我想我尝试了每一个JWT和JWS节点模块.我最终登陆的内容如下:我发现我所看到的所有模块都没有完全符合我的想法.我创建了以下jwt解码辅助方法,我用它来解码id_token,所以我可以从标题中获取孩子.

module.exports = {
  decodeJwt: function (token) {
    var segments = token.split('.');

    if (segments.length !== 3) {
      throw new Error('Not enough or too many segments');
    }

    // All segment should be base64
    var headerSeg = segments[0];
    var payloadSeg = segments[1];
    var signatureSeg = segments[2];

    // base64 decode and parse …
Run Code Online (Sandbox Code Playgroud)

google-openid node.js express jwt google-oauth

36
推荐指数
1
解决办法
2万
查看次数

Google Play服务返回使用非Google密钥签名的令牌

我有一个Android客户端通过使用从Google Play服务获取身份验证令牌GoogleAuthUtil.getToken(Context context, Account account, String scope).

然后将其发送到后端(Go)服务器,该服务器检查该令牌是否来自https://www.googleapis.com/oauth2/v1/cert中的一个Google签名证书.为此,它需要在令牌标头中查找分配给"kid"的证书.

99%的情况下,这很好用,但我经常会遇到"孩子"与任何已发布的Google证书不对应的情况,因此我无法授权令牌.

编辑:

我已经在服务器上添加了大量的日志记录来尝试跟踪它,并且有一些关系值得注意:

  1. 任何给定的无效kid仅用于单个用户.我经常会在同一个用户的几天内看到多个具有给定无效的请求kid,但只能来自该用户.
  2. 提供无效的用户kid从不kid对任何请求使用有效,或者对请求使用任何其他kid请求,即使它们相隔数天.Afaik Google每24小时左右循环一次证书.
  3. 许多用户使用较旧的客户端版本.大多数用户在发布新版本的一两天内升级,但大多数使用无效证书密钥的用户都使用几周前的版本.
  4. 这些要求来自全球各地,与我们的用户群一致.
  5. 这些要求来自于我们的用户群.
  6. 这些请求来自各种设备,制造商和型号.

我目前的想法是,它可能来自从谷歌播放以外的网站下载APK的用户,但我现在无法验证这一点.

编辑:有一个问题跟踪器,但它似乎已被标记为低优先级.如果有人遇到此问题,请在跟踪器上告知.https://issuetracker.google.com/issues/37734997

android certificate jwt google-play-services

36
推荐指数
1
解决办法
730
查看次数

JWT令牌中"孩子"声明的含义是什么?

我生成了一个JTW令牌,并且有一些我很清楚的声明,但是kid在标题中有一个声明.有谁知道这意味着什么?

我使用auth0.com生成令牌

token jwt

35
推荐指数
2
解决办法
3万
查看次数

为什么同源策略不足以阻止CSRF攻击?

首先,我假设一个后端控制输入以防止XSS漏洞.

这个答案中 @Les Hazlewood解释了如何在客户端保护JWT.

假设所有通信都有100%TLS - 在登录期间和登录后的所有时间 - 通过基本身份验证使用用户名/密码进行身份验证并在交换中接收JWT是一个有效的用例.这几乎就是OAuth 2的一个流程('密码授权')的工作方式.[...]

您只需设置Authorization标头:

Authorization: Bearer <JWT value here>
Run Code Online (Sandbox Code Playgroud)

但是,话虽如此,如果您的REST客户端是"不受信任的"(例如支持JavaScript的浏览器),我甚至不会这样做:HTTP响应中可通过JavaScript访问的任何值 - 基本上任何标头值或响应正文值 - 可以通过MITM XSS攻击嗅探和截获.

最好将JWT值存储在仅安全的纯http cookie中(cookie config:setSecure(true),setHttpOnly(true)).这可以保证浏览器:

  1. 只通过TLS连接传输cookie,
  2. 永远不要将cookie值用于JavaScript代码.

这种方法几乎是您为最佳实践安全所需要做的一切.最后一件事是确保您对每个HTTP请求都有CSRF保护,以确保启动对您站点的请求的外部域无法正常运行.

最简单的方法是使用随机值(例如UUID)设置仅安全(但不是仅限http)cookie.

我不明白为什么我们需要具有随机值的cookie来确保启动对您站点的请求的外部域无法运行.使用同源策略时,这不是免费的吗?

来自OWASP:

检查Origin Header

Origin HTTP Header标准是作为防御CSRF和其他跨域攻击的方法而引入的.与引用者不同,源将出现在源自HTTPS URL的HTTP请求中.

如果存在原始标头,则应检查其是否一致.

我知道OWASP本身的一般建议是同步器令牌模式,但我看不出剩下的漏洞是什么:

  • TLS + JWT在安全的httpOnly cookie +同源策略+没有XSS漏洞.

更新1: 同源策略仅适用于XMLHTTPRequest,因此恶意站点可以轻松地生成表单POST请求,这将破坏我的安全性.需要显式的原始标头检查.等式将是:

  • TLS + JWT在安全的httpOnly cookie + Origin Header检查 +没有XSS漏洞.

cookies csrf same-origin-policy cors jwt

34
推荐指数
2
解决办法
9987
查看次数

如何在角度5中解码客户端的JWT编码令牌有效负载?

我从我的API获得一个JWT编码的访问令牌作为响应.但我无法解码它并以JSON格式获取它.我尝试使用angular2-jwt库,但它没有用.我正在编写下面的代码:

 setXAuthorizationToken(client){
    let requestHeader = new Headers();
    requestHeader.append('Content-Type', 'application/x-www-form-urlencoded');
    this.http.post(client.clientURL + "oauth/token", 'grant_type=password&client_id=toto&client_secret=sec&' +  'username=' + client.username
    + '&password=' + client.password, {
      headers: requestHeader
    }).map(res=>res.json())
    .subscribe((token) =>{
      if(!token.access_token){
          return;
      }
      else{
       var decompressToken = LZString.decompressFromEncodedURIComponent(token.access_token);
       console.log(decompressToken);




}


    });
    }
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?

decode access-token jwt angular

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