spring jwt 예제

spring jwt 예제

Uncategorized -

REST API를 노출하는 스프링 MVC 베이스컨트롤러를 만듭니다. 스프링 응용 프로그램(예: application.properties)의 속성 파일에서 설정해 보겠습니다. localhost:8080/hello 스프링 보안을 사용하려면 런타임에 사용자 지정 UserDetailsService bean을 제공해야 합니다. 두 번째 문제, 누락 된 BCryptPasswordEncoder 인스턴스, 우리는 BCryptPasswordEncoder의 인스턴스를 생성하는 방법을 구현하여 해결. 이 메서드는 @Bean 주석을 사용 하 여 해야 하 고 스프링 부트AuthUpdatedApplication 클래스에 추가 합니다: Post API 를 노출 /JwtAuthenticationController를 사용 하 여 인증. POST API는 본문에 사용자 이름과 암호를 가져옵니다. 스프링 인증 관리자를 사용하여 사용자 이름과 암호를 인증합니다. 자격 증명이 유효한 경우 JWTTokenUtil을 사용하여 JWT 토큰이 만들어지고 클라이언트에 제공됩니다. 스프링 데이터 나머지는 리포지토리 인터페이스를 통해 API를 직접 노출하는 기능을 제공합니다. 우리가 확보하려고하는 RESTful 스프링 부팅 API는 작업 목록 관리자입니다. 작업 목록은 전역적으로 유지되므로 모든 사용자가 동일한 목록을 보고 상호 작용합니다. 이 응용 프로그램을 복제하고 실행하려면 다음 명령을 실행해 보겠습니다. 구성은 간단합니다, 우리는 단지 몇 가지 세부 사항을 설정해야합니다 : 위에서 설명한 바와 같이,이 클래스는 인증이 실패 할 때 HTTP 코드 401 (무단)을 반환, 기본 Spring의 리디렉션을 재정의.

이 데모는 현재 스프링 부팅에 의해 자동으로 구성된 user_db라는 MySQL 데이터베이스를 사용하고 있습니다. 다른 데이터베이스에 연결하려면 리소스 디렉터리 내의 application.yml 파일에서 연결을 지정해야 합니다. 최대 절전 모드.hbm2ddl.auto=create-drop은 배포할 때마다 삭제되고 깨끗한 데이터베이스를 만듭니다(실제 프로젝트에서 이 것을 사용하는 경우 변경할 수 있음). 프로젝트의 예는 다음과 같습니다: 클라이언트가 보안 리소스를 요청할 때 로그인 페이지로 리디렉션하여 인증 프로세스를 트리거하는 대신 REST 서버는 요청 자체에서 사용할 수 있는 데이터를 사용하여 모든 요청을 인증합니다. 이 경우. 이러한 인증이 실패하면 리디렉션은 의미가 없습니다. REST API는 단순히 HTTP 코드 401(무단) 응답을 전송하며 클라이언트는 수행할 작업을 알고 있어야 합니다. 예를 들어 브라우저는 사용자가 사용자 이름과 암호를 제공할 수 있도록 동적 div를 표시합니다. 정보 교환: JSON 웹 토큰은 당사자 간에 정보를 안전하게 전송하는 좋은 방법입니다. 예를 들어 공개/비공개 키 쌍을 사용하여 JWT에 서명할 수 있으므로 발신자가 누구인지 확인할 수 있습니다. 또한 헤더와 페이로드를 사용하여 서명이 계산되면 콘텐츠가 변조되지 않았는지 확인할 수도 있습니다.

물론 프로덕션 지원 응용 프로그램의 경우 암호 검색과 같은 몇 가지 기능이 더 필요하지만 이 문서에서는 Spring Boot 응용 프로그램에 대한 요청을 승인하기 위해 JWTS를 다루는 가장 합리적인 부분을 신비화했습니다. 스프링 보안은 메모리 내 데이터베이스와 함께 사용할 수 있는 UserDetailsService의 구체적인 구현과 함께 제공되지 않습니다.