首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用OAuth2应用程序密钥进行OAuth2 JWT签名

使用OAuth2应用程序密钥进行OAuth2 JWT签名
EN

Security用户
提问于 2016-01-05 20:00:46
回答 1查看 1.1K关注 0票数 3

摘要(抱歉,这是一口):

我希望通过OAuth2和JWT为后端系统对系统授权提供便利,方法是使用JWT 'aud‘param指定特定于应用程序的资源(通过JWT授权授予请求向授权服务器),然后使用注册的OAuth2应用程序的OAuth2密钥对OAuth2进行授权服务器签名(或加密),该密钥保存由'aud’param指定的资源,以便被请求令牌的资源服务器能够使用其OAuth2应用程序密钥验证令牌。

摘要:

我有一个关于OAuth2和JWT后端系统对系统授权的问题.

  • 给定资源服务器RA
  • 和资源服务器RB
  • 和授权服务器作为
  • RA和RB是用AS注册的OAuth2应用程序。

我们希望利用JWT的OAuth2规范来实现以下目标:

  1. RA从AS请求JWT
  2. 作为对RA的响应,使用JWT
  3. RA使用JWT从RB请求资源。
  4. RB使用资源数据响应RA (而不必调用AS)

问题:

目标是RB具有独立于AS验证JWT的能力。也就是说,RB必须有一种方法来验证RA在请求中发送的JWT。由于发布了由RA发送的JWT,那么AS和RB必须有一个共享的秘密。

在所有资源服务器和授权服务器之间共享一个秘密以用于JWT签名和/或加密,这将是糟糕的安全实践。该解决方案将绕开OAuth2 (授权委托)规范,该规范已经非常努力地试图减轻由大量分布式对称密钥等引起的安全问题。

提案:

我的粗略建议是解决以下问题:

  1. RA使用JWT授权授权请求JWT,并在'aud‘param中指定RB中的一个资源(https://www.rfc-editor.org/rfc/rfc7523#page-6,参见’3‘)。
  2. 作为带有JWT的响应,使用RB应用程序的密钥签名/加密(可以根据'aud‘param的URI识别要使用的应用程序机密)
  3. RA使用JWT请求RB中的资源。
  4. RB使用OAuth2密钥验证签名/加密的JWT。

我的问题:

这个提议在这里有意义吗?是否有一个更加简单的实现仍然可以满足我的目标并停留在OAuth2规范中?这是否误用了“aud”JWT param?

非常感谢你阅读了这篇文章,也感谢你的帮助。

EN

回答 1

Security用户

发布于 2016-01-06 05:46:08

在这种情况下,添加到OAuth2 (https://www.rfc-editor.org/rfc/rfc7662)中的新内省服务将是有用的。它允许您的RB验证RA根据AS转发的访问令牌( JWT)。

这破坏了您的请求,即RB和AS之间没有通信。但这不应该是一个问题,因为这些服务已经相互信任。在RA和RB之间不存在全局已知的对称密钥或隐式信任。

把它插入到你的溪流中:

  1. RA从AS请求JWT
  2. 作为对RA的响应,使用JWT
  3. RA使用JWT从RB请求资源。
  4. RB针对AS/introspection服务验证JWT
  5. RB用资源数据响应RA
票数 1
EN
页面原文内容由Security提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://security.stackexchange.com/questions/109832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档