Posted
Filed under 프로그래밍/PHP

요즘 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));

2013/08/31 16:06 2013/08/31 16:06