[Java]Spring Security(With TDD) JWT 라이브러리 활용해서 간편하게 구현하기

도입 지난 포스팅 [Java]Spring Security WebMVC 기본 구조 [Java]Spring Security 예외처리, 캐싱, 로깅 [Java]Spring Security 인증(Authentication)과 인가(Authorization) [Java]Spring Security(With TDD) 기본 인증 및 인가 구현하기 [Java]Spring Security(With TDD) JWT 직접 구현하기 저번 시간에는 JWT의 인증 필터를 직접 구현해서 인증 로직을 완성했습니다. 이번 시간에는 Spring에서 제공하는 oauth2-resource-server 라이브러리를 통해 동일한 인증 로직을 구현해보겠습니다. 설계 요구사항 분석 요구 사항은 지난 포스트와 동일합니다. 로그인 실패 시 jwt를 발행하지 않는다. 정상 로그인 시 jwt를 발행한다.(Happy Case) 잘못된 jwt로 인증할 수 없다. 권한이 부족한 jwt에 인가할 수 없다. 정상적인 jwt로 특정 권한의 api를 사용할 수 있다.(Happy Case) 통합 테스트 통합 테스트도 지난 시간에 사용한 것을 그대로 사용하겠습니다. ...

2024. 12. 14. · 6 분 · 1146 단어 · Leaf

[Java]Spring Security(With TDD) JWT 직접 구현하기

도입 지난 포스팅 [Java]Spring Security WebMVC 기본 구조 [Java]Spring Security 예외처리, 캐싱, 로깅 [Java]Spring Security 인증(Authentication)과 인가(Authorization) [Java]Spring Security(With TDD) 기본 인증 및 인가 구현하기 지금까지 Spring Security의 기본 개념을 학습하고, 기본 인증 및 인가를 구현했습니다. 이번 시간에는 JWT의 기본 개념을 익히고, 프로젝트의 인증 및 인가 로직에 활용해보겠습니다. JWT JWT는 JSON Web Token의 준말로 RFC 7519 명세에 정의된 토큰입니다. 위 명세에 따르면, JWT는 다음과 같이 정의할 수 있습니다. JSON Web Token (JWT)는 두 당사자 간에 전송되는 클레임(claims)을 표현하기 위한 간결하고 URL에 안전한 수단입니다. JWT의 클레임은 JSON 객체로 인코딩되며, 이는 JSON Web Signature (JWS) 구조의 페이로드(payload)로 사용되거나 JSON Web Encryption (JWE) 구조의 평문(plaintext)으로 사용됩니다. 이를 통해 클레임은 디지털 서명되거나 메시지 인증 코드(Message Authentication Code, MAC)를 사용하여 무결성이 보호되거나 암호화될 수 있습니다. ...

2024. 12. 9. · 13 분 · 2729 단어 · Leaf

[Java]Spring Security(With TDD) 기본 인증 및 인가 구현하기

도입 지난 포스팅 [Java]Spring Security WebMVC 기본 구조 [Java]Spring Security 예외처리, 캐싱, 로깅 [Java]Spring Security 인증(Authentication)과 인가(Authorization) 지금까지 Spring Security의 핵심 개념에 대해 알아보았습니다. 이번 시간에는 TDD1로 실제 프로젝트를 생성하고 인증 및 인가 로직을 구현해보겠습니다. 프로젝트 생성 1. Springboot Project Setup Spring 프로젝트 생성 페이지에서 다음과 같이 세팅 및 4개의 의존성을 추가해줍니다. 2. 디렉터리 구조 생성 패키지는 다음과 같이 생성하겠습니다. api 클라이언트와의 통신 인터페이스입니다. 컨트롤러 클래스를 포함시킬 예정입니다. config Spring Security를 포함한 각종 설정 클래스를 포함시킬 예정입니다. 3. 기본 로그인 페이지 생성 Spring Security 의존성을 추가 후 JwtApplication.class의 Main 메서드를 실행한 뒤, 브라우저를 통해 http://localhost:8080에 접속하면 다음과 같이 기본적으로 로그인 페이지를 제공합니다. ...

2024. 12. 5. · 5 분 · 1018 단어 · Leaf

[Java]Spring Security 인증(Authentication)과 인가(Authorization)

도입 지난 포스팅 [Java]Spring Security WebMVC 기본 구조 [Java]Spring Security 예외처리, 캐싱, 로깅 Spring Security의 WebMVC와 기타 기능들에 이어 다양한 기능을 지원하는 인가 로직에 대해 알아보겠습니다. 이전의 포스팅들과 이번 포스팅까지 제대로 이해한다면, 기본적인 Spring Security의 기능들을 사용하는데 큰 어려움이 없으실 겁니다. 인증과 인가 너무 추상적이지만 Spring Security를 이해하는데 중요한 개념이므로 짚고 넘어가겠습니다. 인증(Authentication) : 데이터나 시스템의 접근 권한을 가졌는지 검증하는 것입니다. 인가(Authorization) : 특정 리소스의 접근 권한을 가졌는지 확인하여 허용 또는 거부하는 것입니다. 즉, 인증은 로그인하는 행위 그 자체인 반면, 인가는 로그인한 사용자의 권한을 확인해서 접근 제어를 하는 것입니다. ...

2024. 11. 29. · 5 분 · 970 단어 · Leaf