요즘 API개발이 한창이다
많이들 사용하는 방식이 헤더에 Authorization 항목을 넣어서 인증하는 방법이다.
사용자는 해더에 아래와 같이 전송한다.
Authorization: Basic 인증코드
인증코드는 아이디와 패스워드를 :로 구분하여 base64로 인코딩후 넣는다.
Authorization: Basic bWl5dTpkbHN3bGR 이런식?
base64_encode("id:pass") 이렇게 인코딩하면 된다.
그럼 서버쪽에서는?
_SERVER["HTTP_AUTHORIZATION"] : Basic bWl5dTpkbHN3bGR
_SERVER["PHP_AUTH_USER"] : id (자동으로 디코딩 된다)
_SERVER["PHP_AUTH_PW"] : pass (자동으로 디코딩 된다)
이렇게 사용할수 있다.
한차원 높은 보안을 원한다면
base64인코딩 하기전에 token을 사용하여 openssl으로 한번 감싸서 보내도록하자
특정키로 암호화 (AES-256)
base64_encode(openssl_encrypt("id:pass", "aes-256-cbc", $key, true, str_repeat(chr(0), 16)));
복호화
openssl_decrypt(base64_decode("isZXs9diEm43k6uRBtJJRQ=="), "aes-256-cbc", $key, true, str_repeat(chr(0), 16));