axios 로그인 질문입니다.

조회수 649회

a서버에 회원가입/로그인 데이터가있고 b서버는 html,css,js만 사용가능한 서버가 있습니다.

b서버에서 a서버에 axios로 로그인하는 것을 만들려고 하는데 질문이 있습니다. 로그인 성공시 토큰을 jwt로 받아서 쿠키에 저장하는 방법으로 생각했었는데 검색해보니 보안에 좋은 방법이 아니라는 글이 있어서요

httponly, secure같은걸 설정해줘야 그나마 안전할 것같은데 혹시 axios로 로그인 성공시 토큰이 있는 쿠키까지 받을 수 있는 방법이 있을까요?

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • "쿠키를 받는다"는 건, 정확히 말하면, 어떤 HTTP 응답을 받는데, 그 응답의 헤더에 Set-Cookie: foo=bar가 포함돼 있다는 말입니다. 그래서 이론상으로는 그 Set-Cookie 응답헤더만 적절히 처리해서 브라우저 쿠키로 꽂을 수만 있으면 장땡입니다. (일반적인 동기식 응답의 경우 이런건 브라우저가 스마트하게 처리해 줍니다.)

    하지만 재수가 없으면(ex. CORS 제약에 걸림) 질문하신 상황과 같은 HTTP 통신 시나리오에서는 응답헤더의 그 정보에 접근을 못할 수 있습니다. "a서버", "b서버"가 나오는 걸 보면 동일출처정책에 걸릴 가능성이 높습니다.


    저라면 그냥 응답 본문에 JWT를 담아서 보내겠습니다. 그러면 그거 받아서 쿠키나 로컬스토리지 등등에 써놓고 수시로 갖다쓰는 건 별 문제가 없겠지요. httponly, secure 같은건 (오해 없이 들으시면 좋겠는데) 사실 인증토큰 자체가 충분히 튼튼하면 크게 문제되지 않습니다.

    • 이미 토큰이 1개 유효한 상황에서, 그 토큰을 그대로 복사해 다른 브라우저에서 인증을 받으려고 하면, 덜컥 인증되지 않고, 제대로 금지가 되는가?
    • 이미 토큰이 1개 발급된 상황에서, 다른 누군가가 중복으로 로그인을 하려고 하면, 새 토큰이 덜컥 튀어나오지 않고, 제대로 금지가 되는가?

    둘 다 인증서버 쪽에서 어떻게 잘 하면 되는 일이지요.

    화이팅입니다.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)