我有一个包含微服务的应用程序:网关+发现服务+微服务。Rigth现在,我对zuul网关实现了Spring安全性,所以在成功登录之后,它会返回一个带有授权的JWT。因此,网关充当授权和身份验证服务器。我认为这样生态系统是安全的,因为网关不允许任何未经授权的访问端点。
我之所以应用这个流,是因为我不想单独配置每个微服务。这是一个单一的安全入口点。
现在,我已经读到了Oauth,并在一个演示应用中做了一个实现,但我不能正确地理解Ouath2是否会让我的应用变得更容易,或者会增加不必要的复杂性。我读到Spring Auth Server还没有实现,所以我想我需要使用Okta或Keycloack。
实施Oauth2与网关+基本身份验证+联合小波变换的优势是什么?
作为补充说明:该应用程序由具有不同UI的不同应用程序组成,我将区分用户可以通过其组访问哪些产品。
非常感谢你的建议。
发布于 2020-10-20 23:59:53
如果我理解正确的话,您使用的是不带OAuth2的JWT?
实施Oauth2与网关+基本身份验证+ JWT相比有什么优势?
OAuth2是一种访问委派协议,支持应用程序中的特定流。OAuth2标准化您的令牌(例如JWT)是由用户或其他web应用获得的。因此,在您的例子中,它可以理解为以一种标准化的方式生成JWT令牌。
这有什么好处吗?这取决于:)
有了OAuth2授权服务器,您可以将一些第三方应用程序与您的安全集成在一起(仅当它们支持OAuth2/OpenId时)。如果是(或将是)您的情况,那么您应该考虑在您的应用程序中使用OAuth2。
您当前的设置(Basic Auth + 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如何解决这些问题。
现在,我已经读到了
,并在一个演示应用中做了一个实现,但我不能正确地理解Ouath2是否会让我的应用变得更容易,或者会增加不必要的复杂性。我读到Spring Auth Server还没有实现,所以我想我需要使用Okta或Keycloack。
您不必使用Okta或Keycloak。您可以在Spring (https://docs.spring.io/spring-security-oauth2-boot/docs/current/reference/html5/)中创建自己的授权服务器。这可以被视为微服务体系结构中负责授权(例如,颁发令牌)的另一个服务。您还可以选择添加用户管理API (管理系统其他部分的权限),并从网关中删除它们。
发布于 2020-10-17 12:44:50
在微服务架构中,我强烈建议您使用单独的授权微服务来执行授权任务。
关于OAuth和JWT的问题。OAuth2是一种定义如何使用认证令牌的标准的协议。而JWT实际上是一种令牌格式。您也可以在OAuth2或更标准的SAML2令牌格式中使用JWT
发布于 2020-10-17 12:52:52
如果不使用JWT,当系统变得很大时,越来越多的身份验证检查需要由身份验证服务器来处理。使用JWT,您可以在token的有效负载中导出用户详细信息
https://stackoverflow.com/questions/64398982
复制相似问题