Rails:使用敲门对 JWT 令牌进行身份验证

Posted

技术标签:

【中文标题】Rails:使用敲门对 JWT 令牌进行身份验证【英文标题】:Rails: authenticate with JWT Token using knock 【发布时间】:2020-03-25 01:26:37 【问题描述】:

我正在尝试为我的应用构建身份验证解决方案。我使用 React 作为前端,使用 API 模式下的 Rails 作为后端。我有一个需要使用的外部身份验证解决方案。我偶然发现了 Knock for JWT 令牌管理,但我不理解文档,尤其是这部分“它必须有一个身份验证方法,类似于 has_secure_password 添加的方法。”,因为由于我的外部身份验证服务,我没有用户模型。 所以在我的脑海里,一个登录请求会发送到我的 LoginController,它将管理外部身份验证,并且在成功身份验证后,会以某种方式创建一个 JWT 令牌并将其返回到前端。 知道我是如何实现这一目标的吗?

【问题讨论】:

您没有用户模型?那你为什么需要认证服务呢? 有很多理由让服务经过身份验证,但没有用户模型。但这不是这里讨论的问题:) 【参考方案1】:

如果您使用的是外部身份验证解决方案,那么您没有登录控制器,您也不需要拥有。如果您有外部服务进行身份验证,那么很可能是 OpenID 或 OAuth2。

这里是a good explanation of the authentication flow。

您的应用程序中可能想要和需要的是一个before_action,它可以验证 Bearer 令牌是否有效。

【讨论】:

以上是关于Rails:使用敲门对 JWT 令牌进行身份验证的主要内容,如果未能解决你的问题,请参考以下文章

使用 Rails 和 React 时如何在标头中获取 JWT 令牌

Rails:在开发中禁用敲击 JWT 身份验证

如何使用 JWT for Google firebase 生成身份验证令牌?

JWT 身份验证:使用 UI 令牌对 Graphene/Django (GraphQL) 查询进行身份验证?

在 Kong API 网关中使用 .jks 密钥对 JWT 令牌进行身份验证

如何跨不同 API 对 JSON Web 令牌 (JWT) 进行身份验证?