微服务架构中SPA的身份验证

时间:2020-10-28 14:04:12

标签: spring-security architecture microservices keycloak spring-oauth2

我正在寻找一种基于Spring Boot微服务为我们的项目创建注册,身份验证和授权的最佳方法。微服务将为SPA应用程序提供其余的API,并为移动应用程序(Android和ios)提供更高版本的API。实际上,我们所有用户都在Postgres数据库中。

正如我提到的那样,SPA和移动平台将使用用户注册和身份验证,因此我更喜欢使用RESTful API。

我的想法是拥有一个auth-service,它将解析auth *动作,并为其他微服务提供公共密钥以解码和验证JWT。

实际上,我们不需要向外部服务提供授权就可以使用像Keycloak这样的OIDC提供程序吗?还是自定义身份验证是更好的选择?

1 个答案:

答案 0 :(得分:0)

如果您想将其用于OIDC支持,则不必强制使用Keycloak提供的授权功能。您可以受益于其注册,身份验证或忘记密码流以及易于配置的OAuth / OIDC功能。

关于Keycloak的另一个不错的功能是在客户端的平滑集成,它使您的代码几乎可以毫无变化地工作。我没有评估过它们的Spring适配器,但是在我参与的项目中,因为它们都是基于JEE的,并且使用了所有应用程序服务器提供的标准安全性API,所以我们确实从为应用程序服务器使用Keycloak适配器中受益。在请求到达我们的代码之前,它处理了您在问题中描述的所有逻辑,这意味着所有内容都已设置好(即令牌已经过验证/验证,并且主体和角色已经从中提取出来,我们可以通过{{1 }}或request.getPrincipal()sessionContext.getCallerPrincipal()等)。