2016년 4월 4일 월요일

cURL로 cookie를 다루는 법

http://stackoverflow.com/questions/22252226/passport-local-strategy-and-curl

레거시 소스를 보다보면 인증 관련해서 cookie를 사용하는 경우가 있는데

가령 REST 서버인 경우

curl -H "Content-Type: application/json" -X POST -d '{"email": "aaa@bbb.com", "pw": "cccc"}' "http://localhost/login"

이렇게 로그인이 성공이 했더라도


curl -H "Content-Type: application/json" -X GET -d '' "http://localhost/accounts/"

이런 식으로 했을 때 쿠키를 사용한다면 당연히 인증 오류가 날 것이다.

curl의 --cookie-jar 와 --cookie 옵션을 사용해서 cookie를 저장하고 꺼내쓰자.
각각 옵션 뒤엔 저장하고 꺼내쓸 파일이름을 임의로 지정하면 된다.

위의 과정을 다시 수정해서 적용하면

curl -H --cookie-jar jarfile "Content-Type: application/json" -X POST -d '{"email": "aaa@bbb.com", "pw": "cccc"}' "http://localhost/login"


curl -H --cookie jarfile "Content-Type: application/json" -X GET -d '' "http://localhost/accounts/"

이렇게 사용하면 된다.
물론 새로 만든다면 OAuth 같은 방식을 사용하는 것이 좋다.