基本身份验证+ JWT与Oauth2

时间:2020-10-17 04:23:46

标签: java spring-boot security spring-security

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

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

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

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

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

非常感谢您的建议。

3 个答案:

答案 0 :(得分:1)

如果我理解正确,您正在使用不带OAuth2的JWT?

实现Oauth2与Gateway + Basic相比有什么优势 Auth + JWT?

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

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

具有OAuth2授权服务器可让您将某些第三方应用程序与您的安全性集成在一起(仅当它们支持OAuth2 / OpenId时)。如果是(或将会是)您的情况,那么您应该考虑在应用程序中使用OAuth2。

您当前的设置(基本身份验证+ JWT)可能存在一些安全问题。如果我理解正确,那么您是在“授权”标头中发送用户凭证(用户名+密码)并将其替换为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(将特权管理到系统的其他部分),然后从网关中删除它们。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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