与服务用户或公共用户保护REST端点

问题描述 投票:0回答:1

我正在编写一个移动应用程序,通过REST与远程Java服务进行通信。我用https保护我的(SpringBoot)Web服务(由于数据的性质,它需要是安全的),但我的问题是我使用哪个用户/密码来保护https调用。

我在https标题中使用的用户名和密码应该是客户端(移动应用程序)和Java服务知道的服务帐户,还是应该是公共用户的用户名和密码?最简单的选择就是使用服务帐户,但这意味着移动应用程序将内置这些细节并公开发布(尽管是以编译形式)。

走另一条路并使用用户的用户名和密码意味着我必须让登录REST端点打开并且不安全(我猜这很好),但它只是让它稍微繁琐。

java rest web-services security spring-boot
1个回答
0
投票

好问题,我想你会使用基于令牌的身份验证和授权方案。首先,您应该有一个登录页面,其中客户端通过提供用户名和密码登录,该用户名和密码通过调用一些远程登录服务进行身份验证,该服务维护自己的用户存储,或者可以使用组织中的现有用户(如果有)。验证成功后,auth服务应为客户端提供有效令牌,然后不时刷新。当发送请求时,移动或Web客户端应将令牌传递给下游微服务,并且此令牌应在Authorization HTTP头内发送。

在网络上传递用户名和密码时,通常不会将其视为一个好的解决方案,这也是令牌变得方便的地方。令牌是人们用来保护休息端点的正常程序。 Yous rest端点应该拦截每个请求,并将令牌传递给auth提供程序并验证。如果令牌有效,它将允许请求,否则它应该拒绝它。

安全性是一个非常大的主题,除了令牌之外,您还拥有X.509证书来加密通过https等在线路上发送的数据。我建议你看看春季安全documentation,因为这将是一个很好的起点。 Spring Security为开发人员提供了许多钩子,可以在开箱即用的情况下使用一些合理的默认值。您可以使用JWT样式令牌,Oauth令牌和弹簧安全性也支持所有这些不同的形式。

© www.soinside.com 2019 - 2024. All rights reserved.