我正在寻找一种最佳方法来基于Spring Boot微服务创建项目的注册,身份验证和授权。微服务将为SPA应用程序提供REST API,以后也将为移动应用程序(Android和iOS)提供。实际上,我们在Postgres数据库中拥有所有用户。
正如我所说,用户注册和身份验证将由SPA和移动平台使用,因此我更喜欢使用RESTful API。
我的想法是拥有一个身份验证服务,它将解决身份验证操作,并为其他微服务提供公共密钥以解码和验证JWT。
事实上,我们不需要为外部服务提供授权,那么使用OIDC提供程序(如Keycloak)是否有意义?或者自定义身份验证是更好的选择?
正如我所说,用户注册和身份验证将由SPA和移动平台使用,因此我更喜欢使用RESTful API。
我的想法是拥有一个身份验证服务,它将解决身份验证操作,并为其他微服务提供公共密钥以解码和验证JWT。
事实上,我们不需要为外部服务提供授权,那么使用OIDC提供程序(如Keycloak)是否有意义?或者自定义身份验证是更好的选择?
一个授权服务将解决授权*操作
,我会质疑是否明智地为授权决策创建跨服务依赖关系。每个服务可能都应该拥有自己的授权逻辑,因为这可能变得相当复杂且具有服务感知性。 - Taylorauth*
是指身份验证和授权。我肯定会选择 OIDC 内部。如果您需要支持 SSO,它很容易从 SAML 进行外观适应。我自己没有使用过 Keycloak,但是我听到了一些我信任的人的好评。我唯一鼓励您考虑的其他事情是像 Auth0 或 AWS Cognito 这样的服务。这取决于您的需求,但是少运营/托管一件事总是不错的。 - Taylor