我需要配置Sping Boot 服务器,以使用AWS Cognito用户池对Web用户和REST客户端进行身份验证:
1.使用ReachJS前端的交互式/Web用户应重定向到Cognito进行身份验证,并在验证用户的凭据后重定向回来。
1.其他直接使用服务器REST API的机器应该从Cognito获得一个令牌,并将其作为Authorization: Bearer ...
头发送到我的服务器。
问题是:
1.如何配置spring以使用Cognito进行身份验证
1.如何使spring同时支持这两种不同类型的身份验证
1条答案
按热度按时间os8fio9y1#
概述
让我们从术语开始:
1.在OAuth2/OIDC中,通过将交互式/Web用户重定向到IDP来对交互式/Web用户进行身份验证称为“授权代码授予流程.”
1.将JWT令牌发送到REST API的客户端称为“客户端凭据流”。
Spring的
spring-security-oauth2-client
模块负责“授权代码授予流”,spring-security-oauth2-resource-server
模块负责“客户端凭证流”。为了同时使用这两个流/方法,我们需要告诉spring如何确定传入的HTTP请求使用哪种身份验证方法,正如https://stackoverflow.com/a/64752665/2692895中所解释的,这可以通过查找
Authorization: bearer ...
头来完成:1.如果请求包含
Authorization
头,则假定它是REST客户机并使用“客户机凭据流”。1.否则,它是一个交互式用户,如果尚未进行身份验证,则重定向到Cognito。
依赖项
我使用的是Spring Boot2.6.6(Spring5.6.2)。
外部配置-
application.yaml
Spring安全配置
交互式/Web用户身份验证:
REST客户端身份验证:
Cognito配置说明