我是否需要一个spring Boot oauth2授权服务器来生成一个定制的JWT和一个JWKS端点?

rbl8hiat  于 2022-11-21  发布在  Spring
关注(0)|答案(1)|浏览(169)

我 会 感激 任何 人 可以 帮助 我 引导 自己 到 一 个 最 好 的 或 最 简单 的 方法 。
我 需要 使用 JWT 令牌 在 我 的 应用 程序 和 合作 伙伴 之间 进行 通信
步骤 如下 :
1.用户 已 在 MyApp 中 使用 另 一 个 用户 凭据 解决 方案 进行 身份 验证

  1. MyApp 应 生成 一 个 包含 某些 用户 信息 ( 如 订阅 ID ) 的 JWT 标记
  2. MyApp 使用 JWT 标记 重 定向 到 合作 伙伴 URL
    1.合作 伙伴 使用 公钥 ( 必须 在 JWKS 端点 中 公开 ) 来 验证 jwt 令牌 是否 由 我 的 应用 程序 颁发 。
    • 我 的 主要 疑虑 如下 : * *

a . 我 是否 需要 使用 spring oauth2 授权 服务 器 , 或者 我 可以 只 使用 某些 spring 安全 组件 来 生成 令牌 并 公开 jwks 端点 ? b . 如果 我 使用 spring oauth2 授权 服务 器 , 我 如何 自 定义/oauth2/token 以 接收 用户 信息 来 生成 令牌 ? c . 如果 我 使用 spring oauth2 授权 服务 器 ,我 怎样 才能 使 我 的 公钥 成为 根 ? d . 如果 我 只 使用 Spring 安全 组件 , 您 能 分享 一些 教程 来 生成 JWT 吗 ? e . 如果 我 只 使用 Spring 安全 组件 , 在 端点 中 生成 jwks 信息 是否 简单 ?

    • 关于 a ) 项 * *

不 需要 像 客户 端 凭证 流 那样 的 授权 服务 器 , 我 的 应用 程序 可以 通过 它 所 拥有 的 来 生成 JWT 令牌 , 我 使用 spring 授权 服务 器 只是 为了 获得 生成 令牌 的 所有 结构 的 好处 。 利用 spring 引导 结构 是否 真 的 有 必要 或 最 好 的 方法 , 或者 使用 一些 spring 安全 组件 来 生成 令牌 是否 最 简单 ?

    • 关于 b ) 项 * *

如果 最 好 的 决定 是 使用 SpringOauth2 授权 服务 器 , 我 的 想法 是 使用/oauth2/token 和 客户 端 凭据 ,但 问题 是 , 如果 POST/oauth2/token 请求 中 没有 用户 信息 , 如何 生成 包含 一些 用户 特定 信息 的 JWT 令牌 ? 是否 可以 定制 授权 服务 器 请求 , 以 在 主体 或 头 中 接收 所 需 的 信息 ?我 在 谷歌 上 搜索 了 一下 , 似乎 这 是 可能 的 。 我 只是 想 确认 一下 , 这样 做 是 可以 的 。

    • 关于 c ) 项 * *

在 spring oauth2 授权 服务 器 中 , 是否 可以 在 不 停机 的 情况 下 轮换 公钥 ?
该 进程 是否 只是 生成 一 个 新 的 jks , 在 服务 器 指向 的 路径 中 更改 它 , 并 在 授权 服务 器 中 像 POST/refresh 一样 调用 ?

niwlg2el

niwlg2el1#

JWT是签名的,您必须公开公钥,所以是的,使用授权服务器来发布令牌并公开密钥。
您可以使用任何OAuth2授权服务器,但是OIDC实现对于其他参与者来说更容易使用。
Spring-security authorization-server的内置功能非常有限。在选择之前,你应该看看其他的解决方案。有很多解决方案,要么是内部部署(比如Keycloak),要么是SaaS(比如Auth 0,或者如果你在云中托管,你的云提供商建议的任何解决方案)。
OAuth2与内部安全性相比有很多优点(这可能是您的合作伙伴要求使用OAuth2的原因)。我建议您将所有安全性都切换到OAuth2。一旦您选择了授权服务器并将其配置为使用现有用户数据库,请配置:

相关问题