[swagger3] swagger-ui에서 bearer token이 적용 안되는 문제 해결

vector13·2022년 11월 10일
2

문제 상황 설명

서비스를 bearer token 으로 인증하고 있는데,
swagger ui에 들어가면 Autuorization 이 활성화 되긴 하지만 (Login 후 받은) bearer 토큰을 넣어도 활성화가 안되고 token이 NULL로 서버에 들어간다.
결과가 빨리 필요한 사람은 액션4로!

목표

포스트 맨처럼 header 에 Key:Authroization, value: Bearer token 날라가게 만들기

액션 1 apiKey메소드에 두번쨰 인자 Bearer 로 만들기

결과 : authorize 로 login 했을 떄 api 메소드들에 자물쇠가 생김

액션 2 : build.gradle 에 추가

implementation 'io.springfox:springfox-boot-starter:3.0.0' 만 있었는데 여기에

implementation 'io.springfox:springfox-swagger-ui:3.0.0' 추가


Authorize 로그인전 과 후


여전히 날라가지 않는다.

결과 ; Curl 명령어에 Authorization 은 있으나 목표하는 것처럼 Bearer type 토큰이 안감

액션 3 Bearer 로 도배해보기


SecurityReference 의 reference 와 api key에 도배함

결과 : Curl 에 bearer 가 포함되긴 함!

정확한 목표를 다잡기 위해서 포스트맨이 날리는 명령어를 Curl 로 봐보자

포스트맨 > Send 옆에 있는 code 클릭

목표는

curl --location --request GET 'localhost:8080/posting/post/173/1' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxNzMiLCJpc3MiOiJhcHAiLCJpYXQiOjE2NjgwNzIwOTksImV4cCI6MTY3NTg0ODA5OX0.ew5jsEguHlmoPIdavWBX_1rkX-fQDp_gq5MTei5ejis'

그리고 지금 상황은

curl -X GET "http://localhost:8080/posting/post/173/1" -H "accept: */*" -H "Bearer: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxNzMiLCJpc3MiOiJhcHAiLCJpYXQiOjE2NjgwODUyNTYsImV4cCI6MTY3NTg2MTI1Nn0.05WUcoocEjfYQZSNt0oq-jB2i3Y2vg-X9ZVb7zZANlE"

비교 해보면 포스트맨은 헤더에 'Authorization: Bearer 로 보내고 있는 반면에 스웨거는 현재 Bearer:로 보내고 있음

그렇다면 : (콜론) 앞에는 Authorization로 변경하고 뒤를 Bearer 로 변경할 방법을 찾아야한다

액션 4 이게 되나..?

구글 이거저거 찾아보다가 어느 한 github issue 에 달린 댓글 중 한개 ..

아니 Authorization 에 토큰만 넣는게 아니라 bearer 를 입력하면 된다고?

겠냐?

겠냐...????
겠냐고 ....

어?


되네…?

떙큐 ShvaykaD..! 감사감사 큰절

결론 : 이후에 어떻게 사용해야하는가

이전처럼 swaggerui 페이지에들어가서 Authorization 을 눌러서 Login에서 받은 토큰을 바로 입력 X
앞에 Bearer 넣기 (띄어쓰기까지!)

토큰을 붙여넣고

앞에 “Bearer “ (띄어쓰기 조심!) 을 하면 된다

휴.. 이거때문에 개발할 때 jwt 없이 개발했었는데 이번엔 상용 서비스에 들어가서 jwt가 필요했다.

이전에 못 풀었던 문제를 해결해서 마음이 굉장히 상쾌하다!!! 후!!

profile
HelloWorld! 같은 실수를 반복하지 말기위해 적어두자..

2개의 댓글

comment-user-thumbnail
2023년 2월 28일

감사합니다 덕분에 해결했습니다 혹시 "Bearer "를 안치고 토큰값만 넣는 방법은 없을까요?

1개의 답글

관련 채용 정보