问题标签 [jwt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
118867 浏览

.net - 使用 System.IdentityModel.Tokens.Jwt 解码和验证 JWT 令牌

我一直在使用JWT库来解码 Json Web Token,并想切换到 Microsoft 的官方 JWT 实现System.IdentityModel.Tokens.Jwt

文档非常稀少,所以我很难弄清楚如何完成我一直在使用 JWT 库所做的事情。使用 JWT 库,有一个 Decode 方法,它采用 base64 编码的 JWT 并将其转换为 JSON,然后可以反序列化。我想使用 System.IdentityModel.Tokens.Jwt 做类似的事情,但经过大量挖掘,无法弄清楚如何。

对于它的价值,我正在从 cookie 中读取 JWT 令牌,用于 Google 的身份框架。

任何帮助,将不胜感激。

0 投票
3 回答
5595 浏览

.net - 如何使用服务帐户向 Google v3 api 进行身份验证

我在这里遵循了示例代码: https ://code.google.com/p/google-api-dotnet-client/wiki/OAuth2#Service_Accounts

授权失败:DotNetOpenAuth.Messaging.ProtocolException:发送直接消息或获取响应时发生错误。

内部异常是 System.Net.WebException: The remote server returned an error: (400) Bad Request。响应正文为空,响应 URI 为https://accounts.google.com/o/oauth2/token

在下面的响应中,您将看到特定错误是 invalid_grant。

这是我的代码:

证书和 ServiceAccountId 正确。我进行了三次检查,并且已经重新生成了证书。Google 日历 API 在 API 控制台中为用于创建服务帐户的 google 开发人员帐户打开。此帐户不属于 Google Apps 域。

我还使用指定的 AssertionFlowClient 的 ServiceAccountUser 属性对此进行了测试。我现在认为这是必需的 - 在我使用手动创建的 JWT 成功测试 CalendarService 时(请参阅下面的 OAuth 令牌的手动创建工作),当 prn 属性不包含在尝试创建令牌时,我收到 404 错误声明(即不包括 ServiceAccountUser)。

Google Apps 域配置

在 Google Apps 域中,我已授予此服务帐户访问日历的权限。

客户名称:[snip].apps.googleusercontent.com

API 范围:

已安装的 NuGet 包

  • Google.Apis(1.5.0-beta)
  • Google.Apis.Calendar.v3 (1.5.0.59-beta)
  • Google.Apis.Authentication(1.5.0-beta)

请求和响应

仔细检查,断言似乎是正确的,在这里解码:


手动创建 OAuth 令牌作品

为了确认我的设置正确,我使用 google-oauth-jwt 手动创建了一个令牌(此处:https ://github.com/extrabacon/google-oauth-jwt )。我能够使用上面代码中使用的相同属性成功创建令牌。一旦我创建了令牌并在自定义 IAuthenticator 中使用它,我就可以成功地从目标 Google Apps 域中的用户日历中检索事件。因此,如果您想知道,可以使用服务帐户访问日历!

这是 IAuthenticator 实现,它只是添加了 Authorization 标头:

0 投票
2 回答
899 浏览

asp.net-mvc - 续订 Azure ACS 颁发的 JWT

我们已将 Azure ACS 配置为发出有效期为 15 分钟的 JWT。一旦用户登录到 Web 应用程序 (MVC),用户将使用令牌访问另一台服务器 (WebAPI) 上的资源。然后,WebAPI 服务器将验证该令牌。

那么,有没有办法在不中断用户在 Web 应用程序上的工作的情况下以某种方式更新 JWT?我们不想弹出一个窗口并要求用户再次登录。

谢谢!

0 投票
2 回答
606 浏览

model-view-controller - 未调用自定义 JwtSecurityTokenHandler

我有一个使用 Azure Active Directory 进行身份验证的 .NET MVC 应用程序。

我正在尝试添加一个自定义 JWTSecurityTokenHandler 来验证一个控制台应用程序,该应用程序对该应用程序执行一些基本的 GET 请求。但是,每个请求都会被重定向到 Azure AD 登录页面,而不是传递给 JWT 处理程序(我的处理程序中的断点和日志记录语句没有被命中)。有任何想法吗?

网络配置:

0 投票
2 回答
3100 浏览

java - 通过独立应用程序在 Java 中使用 JWT 发出刷新令牌请求 - 不是 Web 应用程序

我有一个关于使用 JWT 为 Google Analytics 获取刷新令牌的问题。

请参考以下运行良好的示例代码,我可以获取 Analytics 对象,使用它我可以访问 Analytics 数据。

如果我调用credentialGA.getAccessToken()它会返回一个字符串。但是调用 credentialGA.getRefreshToken() 它总是返回 null。现在按照俗话说,如果我必须使用此 Analytics 对象进行进一步调用,我需要拥有刷新令牌,使用它我可以再次创建 GoogleCredential 对象以获取 Analytics 对象。

所以我按照https://developers.google.com/accounts/docs/OAuth2ServiceAccount中提到的步骤创建了一个 JWT 。然后,此 JWT 将用于进行刷新令牌调用。此链接上共享的示例解释了如何通过 servlet/jsp/http 使其成为可能。 https://code.google.com/p/gwdg-java/source/browse/src/java/com/google/iapsample/?r=a52c4e72381b1fc959053e3a1fc8c585ae2d7112

是否有任何示例代码可以解释使用 Java Standalone 应用程序使用 JWT 实现刷新令牌调用的相同任务。

提前致谢。

问候, 普拉塔梅什

生成 JWT 的代码:

然后将此 JWT 字符串复制并在另一个程序员中用于请求刷新令牌,如下所示:

0 投票
1 回答
10671 浏览

java - 在 Java 中创建 JSON Web 令牌

我正在尝试创建一个 JSON Web 令牌,以便使用它通过 Google Analytics API 访问进行刷新令牌调用。我采取了服务帐户的方法。

按照这种方法,我需要:

  1. 创建服务帐户
  2. 使用 Google Analytics 帐户添加为 Analytics 应用程序创建的电子邮件地址。
  3. 下载私钥文件(.p12)
  4. 使用此私钥和电子邮件地址构建 JWT,随后将用于对 google auth 服务器进行 HTTP POST 调用以获取刷新令牌。

我不确定我创建 JWT 的方法是否正确。Google Code 站点上提供的示例JWT_Handler.java讨论了创建带有声明部分和请求有效负载的 JWT,但缺少标头和签名部分。这与 google 为刷新令牌创建 JWT 的指南相混淆,其中 JWT 涉及三个部分:

  1. 智威汤逊标头
  2. 智威汤逊索赔
  3. 签名

这三个部分都是 Base64Url 编码的。我尝试了以下代码:

0 投票
0 回答
2874 浏览

c# - 用nuget添加了JWT,但是为什么错误列表仍然说jwt在当前上下文中不存在?

编辑:因此,如果我删除引用并右键单击添加引用并将其添加回来。它显示在对象浏览器中并且能够解析命名空间。如果我构建项目或构建解决方案,尽管它从对象浏览器中消失并且错误再次出现。

我正在尝试将 ZenDesk 集成到我们当前的软件中,以帮助技术支持跟踪他们的票证。为此,我需要使用来自 github 的一些简单的 C# 代码来设置 SSO,以生成 JSON Web Token。

该项目位于 Visual Studio 2010 中,代码需要 JWT 才能运行,我从 NuGet 安装。

无论出于何种原因,尽管名称空间不会在代码中解析。

我在这里得到两个错误:

它只是说,当前上下文中不存在名称“JWT”。这是一个单一的项目解决方案,所以一切都在一个地方。我也无法在对象浏览器中查看 JWT.dll。即使我尝试使用 using 指令:

还是解决不了。

版本为 JWT 1.3.2 版本。

知道为什么这不能解决吗?

这是完整的代码:

0 投票
1 回答
30402 浏览

node.js - 如何在节点应用程序中解码 google OAuth 2.0 JWT (OpenID Connect)?

我在这里尝试使用 google OAuth 在我的 node express 应用程序中对用户进行身份验证时遇到了很多麻烦。我可以成功执行 OAuth,它返回如下响应:

这一切都是有道理的,但我一生都无法弄清楚如何解码 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:使用谷歌的 url 将证书放入我的 express 应用程序的最佳方法是什么?2:我怎么知道什么时候需要引入它的新版本?3:似乎为 noVerify (jwt.decode 中的第三个参数)传递 true 是一个糟糕的主意。如果不通过它,我怎样才能让它工作?看起来 jwt-simple 可能期待 hs256 并且令牌正在使用 rs256。

再说一次,我在这方面非常缺乏经验,所以我可能离这里很远。

* 更新 * 感谢 Nat 的帮助,我得以完成这项工作!我想我尝试了每一个 JWT 和 JWS 节点模块。我最终得到的结果如下:我发现我看到的所有模块都没有达到我想要的开箱即用的效果。我创建了以下用于解码 id_token 的 jwt 解码辅助方法,因此我可以从标题中获取孩子。

我正在使用此解码来确定是否需要从以下位置获取新的公共证书:https ://www.googleapis.com/oauth2/v1/certs

然后我使用该公共证书和 node-jws ( https://github.com/brianloveswords/node-jws ) jws.verify(id_token, cert) 来验证签名!

万岁!再次感谢您在回复中提供的额外解释。这在帮助我理解我什至试图做的事情方面大有帮助。希望这对其他人也有帮助。

0 投票
3 回答
39127 浏览

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

如何结合本地护照以在成功认证时返回 JWT 令牌?

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

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

如果没有,我该如何退回令牌?

0 投票
1 回答
388 浏览

c# - Silverlight 中的 JWT 令牌

我是单点登录身份验证的新手

我有一个 MVC4 基础网站,它正在处理JWT 令牌身份验证。在这两者之间,我们必须实现一个 silverlight 5 应用程序,

我如何在 Silverlight 应用程序中读取该 JWT 令牌以及如何在 silverlight 中验证用户身份,如果用户单击从 silverlight 应用程序注销或 Web 应用程序用户必须从两个应用程序注销

如果你能提供一个例子,那将是很大的帮助。

提前致谢