티스토리 뷰
이제 OAuth2 서버 중 마지막인 리소스서버를 만들어보자
1. 의존성 추가
implementation 'org.springframework.boot:spring-boot-starter-oauth2-resource-server'
implementation 'org.springframework.security:spring-security-oauth2-jose'
- 우리는 JWT 토큰을 사용하므로 'org.springframework.security:spring-security-oauth2-jose' 의존성도 추가했다
2. 토큰을 발급해 준 issuer url을 설정에 추가한다(application.yml)
spring:
security:
oauth2:
resourceserver:
jwt:
issuer-uri: http://localhost:8084
3. SecurityFilter에 리소스 설정을 추가한다
@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
http
.authorizeHttpRequests((authorize) -> authorize
.anyRequest().authenticated()
)
.oauth2ResourceServer((oauth2) -> oauth2.jwt(Customizer.withDefaults()));
return http.build();
}
이렇게 하면 리소스 서버로 동작하기 위한 설정이 모두 끝난다
리소스 서버는 Authorization: Bearer 헤더에 대해서 알아서 처리해 주는데 이에 대해서 테스트해 보자
- /users/me라는 GET API를 하나 만들었다.
- 위의 설정(anyRequest().authenticate())로 인해 /users/me는 토큰이 있어야만 접근할 수 있다
- 이를 위해서 토큰이 없이 요청했을 때와 토큰과 함께 요청했을 때를 테스트해 보자
- 테스트 도구로는 크롬 개발자 도구와 wireshark를 사용했다
토큰 없이 요청
1. Request Header

- Authorization 헤더를 보면 Bearer 뒤에 빈 값으로 요청했다
2. Response Header

- 응답 코드는 401(Unauthorized)이다
- 인증 방식 안내 헤더인 Www-Authenticate를 보면 Bearer Token 에러인 것을 볼 수 있다
토큰과 함께 요청
1. 전체 요청과 응답

2. /users/me Request message

- 중간에 Authorization 헤더를 보면 Bearer 방식으로 토큰과 함께 요청을 보냈다
3. 요청을 받은 리소스 서버는 토큰이 유효한지 확인을 해야 하는데 이 과정이 /oauth2/jwks 요청이다
4. /oauth2/jwks 요청을 받은 권한서버는 JWT를 서명에 사용한 공개키를 반환한다(81번)

- 응답으로 공개키 정보가 온 것을 볼 수 있다
5. 받은 공개키로 토큰 검증을 한 뒤 유효한 토큰이기 때문에 /users/me에 대해 응답 코드가 200으로 전송됐다 (85번)
이렇게 SpringSecurity를 사용해서 권한서버, 클라이언트서버, 리소스서버를 만들어봤다
다음엔 JWT에 우리가 원하는 정보를 넣을 수 있게 커스텀하는 방법을 알아보자
spring security 리소스 서버 공식 문서
https://docs.spring.io/spring-security/reference/servlet/oauth2/resource-server/jwt.html
OAuth 2.0 Resource Server JWT :: Spring Security
Most Resource Server support is collected into spring-security-oauth2-resource-server. However, the support for decoding and verifying JWTs is in spring-security-oauth2-jose, meaning that both are necessary in order to have a working resource server that s
docs.spring.io
1. SpringSecurity로 OAuth2 인증서버 만들기 - 1 (권한서버 만들기)
2. SpringSecurity로 OAuth2 인증서버 만들기 - 2 (클라이언트서버 만들기)
3. SpringSecurity로 OAuth2 인증서버 만들기 - 3 (리소스서버 만들기)
'Spring > Security' 카테고리의 다른 글
| SpringSecurity로 OAuth2 인증서버 만들기 - 5 (Frontend) End. (1) | 2026.06.21 |
|---|---|
| SpringSecurity로 OAuth2 인증서버 만들기 - 4 (JWT payload 커스텀) (0) | 2026.06.11 |
| SpringSecurity로 OAuth2 인증서버 만들기 - 2 (클라이언트서버 만들기) (0) | 2026.05.28 |
| SpringSecurity로 OAuth2 인증서버 만들기 - 1 (권한서버 만들기) (0) | 2026.05.23 |
| [Security] hasIpAddress 사용하기 (0) | 2024.03.09 |
- Total
- Today
- Yesterday
