我浏览了许多文章和文章,但是没有找到针对我必须实施的简单解决方案。
平台:带有嵌入式Tomcat的Spring Boot 2.x.x(Spring Security 5.x.x)
解决方案::REST服务消耗了许多客户端应用程序和许多最终用户。
我必须实现一个REST端点/api/search
,许多客户端应用程序都可以访问该端点。例如,Web应用程序APP-X(角度),Web应用程序APP-Y(jQuery / Bootstrap)和移动应用程序APP-Z(IOS)。这三个客户都是独立的实体(技术角度和业务角度)。
因此,我必须使用一次性令牌对上述应用程序进行身份验证。因此,我计划通过启用@EnableAuthorizationServer
和@EnableResourceServer
来使用Spring OAuth2。我将为每个应用程序客户端生成一个令牌,当他们与我的REST服务连接时可以使用它。 这种方法正确吗?
除了应用程序客户端系统以外,还具有为最终用户注册和登录功能的功能。我的端点(/api/search
)也可以访问匿名用户和以ROLE_REGUSER
角色注册的用户。并且通过安全上下文,我需要像通常的用户身份验证一样访问用户详细信息。
这是我被卡住的地方。如何使用Spring Security 5.x.x(Spring Boot 2.x.x)一起处理以下几点。
I。客户端应用程序和最终用户身份验证。
二。允许匿名用户和同一端点的注册用户访问。
我已附上一张小图来详细说明上述情况。
谢谢
答案 0 :(得分:0)
当我将Spring Security版本升级到5.2时,我找到了一个解决方案。
在5.2版中,它们已折旧@EnableAuthorizationServer
和@EnableResourceServer
。因此,我不得不与支持auth2的外部授权提供者一起迁移。我选择了AWS Cognito,并使用用户池选项满足了以上要求。
优点是,资源服务器可以验证与相同用户池相关的任何访问令牌。