2024.01.06 - [웹/Spring vue 웹 개발] - JWT(json web token) 개발하며 이해하기
JWT(json web token) 개발하며 이해하기
JWT 구조 이해헤더(Header): 토큰의 타입 (주로 JWT)과 사용된 해싱 알고리즘 (예: HMAC, SHA256, RSA)을 명시합니다.페이로드(Payload): 토큰에 담을 클레임(claims)을 포함합니다. 클레임은 토큰 사용자에 대
kwaksh2319.tistory.com
이번에 jwt 토큰을 개발하면서 swagger에 간단히 적용해봤습니다.
package kr.co.kshproject.webDemo.Common;
import io.swagger.v3.oas.models.Components;
import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.oas.models.media.StringSchema;
import io.swagger.v3.oas.models.security.SecurityRequirement;
import io.swagger.v3.oas.models.security.SecurityScheme;
import io.swagger.v3.oas.models.servers.Server;
import org.springdoc.core.GroupedOpenApi;
import org.springdoc.core.customizers.OpenApiCustomiser;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
import java.util.ArrayList;
import java.util.List;
@Configuration
public class SwaggerConfig {
@Bean
public SecurityScheme customSecurityScheme() {
return new SecurityScheme()
.type(SecurityScheme.Type.HTTP)
.scheme("bearer")
.bearerFormat("JWT")
.in(SecurityScheme.In.HEADER)
.name(HttpHeaders.AUTHORIZATION);
}
@Bean
public GroupedOpenApi commonApi() {
return GroupedOpenApi.builder()
.group("api")
.addOpenApiCustomiser(serverCustomizer())
.packagesToScan("kr.co.kshproject.webDemo")
.pathsToMatch("/**")
.build();
}
@Bean
public OpenApiCustomiser serverCustomizer() {
return openApi -> {
// 기존 Components 객체에 접근
Components components = openApi.getComponents();
if (components == null) components = new Components();
// ErrorResult 스키마 추가
components.addSchemas("ErrorResult", new Schema<>()
.type("object")
.addProperty("message", new StringSchema())
.addProperty("errorCode", new StringSchema()));
// SecurityScheme 추가
openApi.addSecurityItem(new SecurityRequirement().addList("bearerAuth")); // 엔드포인트 전부 적용
components.addSecuritySchemes("bearerAuth", customSecurityScheme()); // swagger auth 버튼
openApi.components(components);
List<Server> servers=new ArrayList<>();
servers.add(new Server().url("http://localhost:8080").description("for local usages"));
openApi.setServers(servers);
};
}
}
'웹 > Spring vue 웹 개발' 카테고리의 다른 글
간단한 주식 사이트 만들어보기01 (3) | 2024.10.15 |
---|---|
웹소켓 통신 인터페이스 만들기 (2) | 2024.10.09 |
jenkins 연결 작업 02 - cpu 이용률 문제 ㅠ (0) | 2024.01.21 |
jenkins 연결 작업 01 (0) | 2024.01.13 |
JWT(json web token) 개발하며 이해하기 (0) | 2024.01.06 |