나는 스프링 보안을 사용하고 사용자 (사용자 이름 & 암호)와 표준 폼 인증을 가진 사이트를 가지고있다. 사용자가 OAuth2 보안 API를 사용하기 위해 계정에 연결된 클라이언트 ID 및 클라이언트 비밀번호를 생성하도록 허용합니다. 스프링 보안 oauth2 - OAuth2 보안 주체로부터 커스텀 데이터 얻기
내가 해제, 특정 범위 설정 등의 API 액세스 내가 사용를 사용자 이름과 암호를 사용자가 API 자격 증명을 파괴하지 않고 자신의 비밀번호 등을 변경할 수 있도록 API에 대한 별도의 클라이언트 ID & 클라이언트 비밀번호를 사용하지 spring-security-oauth2 (provider)는 나머지 API를 보호하기 위해 클라이언트 인증 정보 흐름을 허용했습니다. 나는 클라이언트 id와 secret가 검사되도록 api에 대한 클라이언트 인증을 설정했다.
별도의 응용 프로그램에서 클라이언트 ID와 클라이언트 비밀 번호를 사용하여 액세스 토큰을 검색하고이를 API와 함께 사용하기 시작합니다. 대부분의 경우 클라이언트 역할과 범위를 기반으로하는 간단한 @PreAuthorize 식을 사용하며 올바르게 작동하는 것으로 보입니다. 위의 모든
내가 기본 사용자로부터 몇 가지 세부 사항을 기반으로 좀 더 복잡한 규칙을 구현하기 위해 필요로하는 곳에 내가 지금 그러나 몇 가지 API 엔드 포인트가 ...
그러나 잘 작동하는 표시 -이 경우 클라이언트 ID와 암호를 생성 한 사용자.
간단한 예로, 사용자가 다를 수있는 특정 유형의 새 "메시지"를 게시 할 수있는 엔드 포인트가있는 메시징 응용 프로그램을 고려해보십시오. 나는 각 사용자와 각 유형에 대해 허용 된 수신자 테이블을 가지고 있으며 게시 된 메시지의 수신자가 해당 유형의 허용 된 수신자와 일치하는지 확인하려고합니다. (사용자가 허용하는 수신자 데이터는 대개 크지 않고 거의 변경되지 않으므로 액세스 토큰을 생성 할 때 복사본을 저장해야합니다.)
나는이 끝점에서 주체를 얻으며 이것이 OAuth2Authentication 포함 :
- userAuthentication - null - 이것은 클라이언트 자격 증명 흐름에 예상됩니다.
- clientAuthentication이 채워집니다 및 authorizationParameters가 부여 유형을 포함하고 나는 사용자와 내가 필요한 세부 사항을 조회 할 수 clientAuthentication.authorizationParameters에서 클라이언트 ID를 사용할 수있는 가정
CLIENT_ID하지만 각 몇 쿼리 것 api는 부끄럽지 않습니다.
나는 OAuth2Authentication (Principal) 객체 (또는 그것을 확장하는 것)에서 나중에 얻을 수 있도록 몇 가지 추가 세부 사항을 추가 할 수있는 액세스 토큰을 부여하는 동안 Spring OAuth2 라이브러리에 좋은 장소/방법이 있다고 생각하겠다. ?)
또는 이와 같은 문제에 전적으로 더 나은 접근 방법이 있습니까?
Thx!
사용해야합니까? 그 안에 모든 유용한 정보를 담고있는 토큰입니다. – kaqqao