当前位置: 首页 > 知识库问答 >
问题:

当客户端需要令牌来访问多个受众时,如何创建JWT?

刘高驰
2023-03-14

我使用OWIN/Katana OAuth 2.0授权服务器创建了AuthorizationServer。它被配置为使用JWT作为AccessTokenFormat。这里的签名凭证来自每个受众独有的受众秘密。

我想构建一个客户端,该客户端使用这个AuthorizationServer获取令牌,用于使用我构建的两个API(资源/受众)。

我看到在OAuth中没有受众的概念(JWT概念),唯一与此最接近的是范围。我可以从客户端传递多个作用域(受众),但我不明白在这种情况下如何创建JWT,因为需要多个受众才能验证生成的令牌。

感谢任何帮助或指导。

共有1个答案

刘安志
2023-03-14

您应该注意不要混淆两个不同的概念。受众声明指示访问令牌的对象。您只能将其用于在允许的受众中配置了该值的服务。

作用域限制了客户端可以对服务上的令牌执行的操作。例如,一个作用域可能允许客户端发布到您的提要,而另一个作用域则允许客户端访问您的关注者列表。

因此,您通常需要两个不同的令牌来访问两个不同的API。但这并不意味着用户需要进行两次身份验证。

身份验证在授权服务器上进行,当用户仍登录到该服务器时,不会再次提示他/她输入凭据。用户第一次尝试访问新API时,系统会提示用户同意。

 类似资料:
  • 在我最近的遭遇中,我试图实现在前端安全存储的JWT令牌。我以前的方法是在易受XSS攻击的sessionStorage中存储以及。现在,当过期时,我将调用endpoint来获取新的 之后,我们更改实现以防止XSS和CSRF。接下来,Local存储与Cookie 建议将访问令牌存储在内存中,并将刷新令牌存储在cookie中。所以从FE,我们无法访问cookie。(HTTPOnly cookie)和 现

  • 我从Spring Boot1.5.20移动到Spring Boot2.1.4。我将使用Zuul和Spring security oauth的应用程序重写为Spring cloud gateway和spring-security-oauth2-client。 我尝试创建spring云网关过滤器来添加JWT承载令牌。我写过滤器有问题。 我希望Spring cloud gateway过滤器使用JWT令牌

  • 我在应用程序中使用JWT实现OAuth 2.0,在决定将什么设置为我的aud声明时遇到了困难。用户将通过我的身份验证服务器“登录”到我的客户端,以访问我的API(资源)服务器。我希望我的令牌只对特定客户端和特定API有效。 从我的客户端登录时,我在请求中不包括它的客户端id,但在我发现的大多数实现中,aud设置为该客户端id。我倾向于在我的登录请求中包含一个customer(客户)audience

  • 在错误=我正在获取“消息”的上下文中需要帮助:“Access token validation Failure.Invalid Pavior.”, 我正在使用OAuth中的授权代码授予类型。我已经使用Azure广告策略将自定义声明映射到应用程序。因此,如果用户Scope=appid/.default,那么我将在令牌中获得一个自定义声明,并在Azure AD上对应用程序具有API权限,如user.r

  • 我想使用证书凭据将文件上载到s3。是否可以使用certifcate获取s3 bucket的客户机对象? 最初,我尝试使用下面的命令上传一个文件, 现在,我不想使用ACCESS_KEY | SECRET_KEY来创建客户机对象,因为它正在边缘设备上运行。相反,我已经生成了证书(IOT)。我想使用此证书创建客户端对象。因此,最后我有了临时访问权|密钥|秘密|会话|令牌。我想传递这些临时凭据以创建客户端

  • 用户必须在浏览器和应用程序之间手动复制粘贴“授权码”,这在Android中不是一种实用的获取访问令牌的方法。 为了找到一种新的方法,我使用Android API中的来获取访问令牌,同时使用Java API中的和来获取文件列表,如下所示, 不幸的是,当调用中的时,应用程序总是由于NetworkOnMainThreadException而崩溃。 所以我的问题是,如何通过使用访问令牌而不是在中应用授权代