繁体   English   中英

基本身份验证 + JWT 与 Oauth2

[英]Basic Auth + JWT vs Oauth2

我有一个包含微服务的应用程序:网关 + 发现服务 + 微服务。 现在,我正在对 zuul 网关实施 Spring 安全性,因此在成功登录后,它会返回一个带有授权的 JWT。 因此网关充当授权和身份验证服务器。 我认为通过这种方式生态系统是安全的,因为 Gatweay 不允许对端点进行任何未经授权的访问。

我应用这个流程是因为我不想单独配置每个微服务。 这是一个单一的安全入口点。

现在,我已经阅读了 Oauth 并在演示应用程序中进行了实现,但我不正确理解 Ouath2 是否会使我的应用程序更容易或会增加不必要的复杂性。 我读到 Spring Auth Server 尚未实现,所以我想我需要使用 Okta 或 Keycloack。

实施 Oauth2 与网关 + 基本身份验证 + JWT 相比有什么优势?

作为附加说明:该应用程序由具有不同 UI 的不同应用程序组成,我将根据用户可以访问其组来区分哪些产品。

非常感谢您的建议。

如果我理解正确,您使用的是没有 OAuth2 的 JWT?

实施 Oauth2 与网关 + 基本身份验证 + JWT 相比有什么优势?

OAuth2 是一种访问委托协议,支持应用程序中的特定流程。 OAuth2 标准化了用户或其他 Web 应用程序如何获取您的令牌(例如 JWT)。 因此,在您的情况下,可以将其理解为以标准化方式生成 JWT 令牌。

有什么好处吗? 这取决于 :)

拥有 OAuth2 授权服务器使您能够将某些 3rd 方应用程序与您的安全性集成(仅当它们支持 OAuth2/OpenId 时)。 如果是(或将是)您的情况,那么您应该考虑在您的应用程序中使用 OAuth2。

您当前的设置(基本身份验证 + JWT)可能存在一些安全问题。 如果我理解正确,您是在 Authorization 标头中发送用户凭据(用户名 + 密码)并将它们交换为 JWT? 如果用户使用公共客户端(带有登录表单的网页)登录,那么您只是使用 OAuth2 + 密码授予类型的流程,这被认为是严重的安全问题( https://www.scottbrady91.com/OAuth/Why-the-Resource -Owner-Password-Credentials-Grant-Type-is-not-Authentication-nor-Suitable-for-Modern-Applications )

您应该问的问题是使用基本身份验证有哪些潜在问题以及 OAuth2 如何解决这些问题。

现在,我已经阅读了 Oauth 并在演示应用程序中进行了实现,但我不正确理解 Ouath2 是否会使我的应用程序更容易或会增加不必要的复杂性。 我读到 Spring Auth Server 尚未实现,所以我想我需要使用 Okta 或 Keycloack。

您不必使用 Okta 或 Keycloak。 您可以在 Spring ( https://docs.spring.io/spring-security-oauth2-boot/docs/current/reference/html5/ ) 中创建自己的授权服务器。 这可以被视为微服务架构中负责授权的另一项服务(例如颁发令牌)。 您可以选择在那里添加用户管理 API(管理系统其他部分的权限)并从网关中删除它们。

在微服务架构中,我强烈建议你有一个单独的 Authorization 微服务,来执行授权任务。

来到您关于 OAuth 与 JWT 的问题。 OAuth2 是一个协议,它定义了必须如何使用身份验证令牌的标准。 而 JWT 实际上是一种令牌格式。 您也可以在 OAuth2 中使用 JWT 或更标准的 SAML2 令牌格式

如果不使用 JWT,当您的系统变大时,越来越多的 Auth 检查需要由 Auth Server 处理。 使用 JWT,您可以在令牌的有效负载中导出用户详细信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM