Accelerated Fribirdz!
세상은 고칠 것 투성이 - 프리버즈

BLOG main image



PHP용 OpenID 라이브러리인 Simple OpenID는 파일 1개로만 이루어진 "인증전용" Consumer 라이브러리이다. Jan Rain의 라이브러리나 기타 다른 라이브러리보다 설정과 사용이 편리해, 많은 사람들이 사용하는 라이브러리 중 하나다.

나는 주로 Jan Rain의 라이브러리를 사용했었는데, 이번 OpenID 이벤트의 관리자 페이지에서는 Simple OpenID 를 사용했다. 그런데, 이 라이브러리에는 버그가 있었다. 글쎄, 어떻게 보면 버그가 아니라고 할 수도 있겠지만...

어쨋든, Simple OpenID를 사용하면, 간혹 델리게이션된 URL에서 OpenID를 찾지 못할 때가 있다. 즉, claimed ID에서 verified ID를 가져오지 못한다. 라이브러리를 디버깅해보니, "사소한[!]" 문제가 있었다.

아래는 class.openid.php의 HTML2OpenIDServer 함수이다.

뭔가 이상하지 않는가?

사용자가 제출한 OpenID URL에서 openid 정보를 가져오기 위해 위와 같은 정규표현식을 사용했는데, 여기에서는 rel="openid.server", href=" ", rel="openid.delegate", ...와 같이 속성을 쌍따옴표(")로 감쌌다고 가정하고 있다. 하지만, 사용자들이 모두 표준에 맞추어 쌍따옴표로 감싼다는 보장이 어디 있겠는가?

내 블로그(텍스트큐브)의 OpenID 플러그인에서도 다음과 같이 홑따옴표로 델리게이션 정보를 표기하고 있었다.

델리게이션을 사용하는 많은 사람들이 텍스트큐브를 사용할텐데, 에러를 종종 겪었을 거 같다. 요 부분은 텍스트큐브 측에 수정을 요청하였다. 티켓으로 올라갔으니, 1.6에서는 해결되리라 보인다.

그리고, 돌아가도록 정규표현식을 아래와 같이 (무식하게) 바꿨다.

결과는? 내 블로그에서도 델리게이션이 잘 된다.

혹시나 Simple OpenID를 사용하시는 분은, 위 함수를 바꿔주시면 잘 돌아갈 것이다.

Simple OpenID에서도 OpenID Spec. v2.0용 라이브러리를 발표했는데, 소스를 받아보니 다음과 같이 수정을 했더라. 근데, href는 여전히 쌍따옴표(")로 감쌌다고 가정하고 있다. -.-;;


PS : 소스코드 깔끔하게 나오게 하기 힘들다 T_T 뭔가 엉키거나 인덴테이션이 조금씩 엉키네. 컴퓨터는 역시 어려워 -_-;;
2008/02/19 22:23 2008/02/19 22:23

OpenID 관계자들의 저녁식사 자리에서 revu의 SteveHan님이 말씀하신 작은 아이디어가 발전해서 "오픈아이디로 함께하는 인터넷 여행" 이라는 제법 큰 공동 이벤트가 열렸다.

처음에는 "각 서비스에 로그인해서 도장을 받는다. 다 받으면 선물을 준다." 라는 간단한 아이디어로 시작했지만, 다섯 회사의 담당자들이 모여서 의견을 조율,보강, 결정해 나가는 과정은 생각보다 간단하지 않았다.

이번 이벤트를 통해 조금이라도 더 많은 사람들에게 오픈아이디의 개념과 편리함을 알리는 것이 가장 큰 목표였지만, 오픈아이디 관계사들이 처음부터 끝까지 함께 이벤트를 만들어나갔다는 것 역시 큰 소득이다.

이벤트를 준비하면서 오픈아이디의 장점을 또 한번 느낄 수 있었다. openidevent라는 그룹 오픈ID를 만들고, 담당자들을 추가했다. 관련 정보, 의견, 회의록 등은 스프링노트 그룹노트를 통해 공유했다. 그룹노트에 접근해야 하는 사람이 있다면, 그룹 오픈ID에 오픈ID를 추가하면 간단히 추가할 수 있었다. 이벤트 관리/현황툴의 로그인 역시 그룹ID 목록을 사용했다. 덕분에 별도의 가입이나 관리 없이, 오픈아이디를 통해 로그인하고 사용할 수 있었다. 1

5개 참가사 모두 "오픈아이디 활성화"를 위해 자율적(?)으로 모였기에, 기획, 개발, 홍보, 디자인 등 모든 것을 내부에서 역할 분담을 통해 해결해 나갔다.

즉, 이벤트 페이지 개발은 오픈마루와 안철수연구소에서 맡았고, 이벤트 페이지와 경품(우산)의 디자인은 더블트랙과 나우온플레이에서 해주셨다. 레뷰는 경품 선정과 배송을 맡았고, 다음에서는 운영서버와 다음 Top 페이지의 배너 지원을 해주셨다.

거의 매주 이루어진 미팅은 논현동 레뷰 & 나우온플레이, 양재 다음, 여의도 안랩, 분당 오픈마루 사무실 등에서 번갈아가며 이루어졌는데, 이 또한 재미있는 경험이였다.

5개 사의 9개 서비스에서 릴레이로 일관되게 진행되는 이벤트를 만드는 과정은 쉽지 않았다. "로그인하고, 도장을 찍는다." 는 이벤트의 기본 개념은 여전히 간단하다. 하지만, 모두 OpenID 표준을 지키고 있긴 했지만, 조금씩 미진하거나 다른, 또는 틀린 부분도 있었다.

테스트 과정에서 여러 사의 OP들로 각각의 서비스들에 대해 다양한 시나리오를 만들고 테스트를 해나갔는데, 서비스 또는 OpenID 발급서비스에서 각 서비스들의 문제점, 버그, 충돌점들이 발견되었다. 이를 해결해나가면서, 숨어있던 버그를 고치기도 했고, 국내 OpenID 서비스들간의 형식(?)을 맞추기도 했으니, 이것도 큰 의의가 있지 않나 싶다. (여전히 버그는 잠재해 있어서, 잠을 편히 잘 수가 없다. ㅠ_ㅠ)

처음에는 작게 시작한 이벤트이지만, 이벤트는 그런대로 성공적으로 흘러가고 있는거 같다. 모두의 바램대로 "처음에는 작게 시작한 이벤트지만, 이후에도 더 많은 RP(OpenID로 로그인할 수 있는 서비스 업체)들이 계속해서 참여하는 2차, 3차 이벤트가 진행되었으면 좋겠다."

나도 오픈마루의 nainu님과 함께 이벤트 페이지 개발을 담당했는데, 생각했던 것보다 업무량이 훨씬 늘어나서 고생을 하긴 했지만, 근래에 한 일 중 가장 보람 있는 일 중 하나로 기억될 듯 싶다.

이벤트 페이지는 http://openid.daum.net/event :)

  1. 글을 쓰다가 든 생각인데, 당시 관리페이지의 관리자 인증을 몇십분만에 급히 만드느라 별 생각없이, 그룹ID 목록만 가져와서 사용했다.  (어짜피 몇십줄 이내로 짜긴 했지만) 그렇지 않고 그룹ID API를 사용하면 5줄 이내로 끝낼 수 있었고, 관리/추가 역시 훨씬 간단했을텐데.. 하는 생각이 든다. 라인 수가 문제가 아니라, 중복과 관리가 문제다. (몇주만 사용할 페이지라 크게 생각치 않았던 내 잘못이다.) DRY(Don't repeat yourself) 원칙을 위배했다 흑.  역시.. 생각을 안하면 손발이 고생한다.
2008/02/18 20:39 2008/02/18 20:39



프리버즈’s Blog is powered by Tattertools.com / Original WP theme by John Wrana / tattertools skin by yuno fb  ab