혹시 Yahoo의 오픈아이디를 시험해 보실분들은, Textcube 1.6.x가 설치되고 OpenID가 활성화된 곳에 로그인해보시기 바랍니다. Textcube는 OpenID 2.0 스펙으로 발급된 아이디가 소비될 수 있는 발빠른 공간입니다.
2.0을 지원하는 Yahoo OpenID는 openid 쓰는 곳에 yahoo.com 만 쓰면 됩니다. 아직은 Attribute eXchange는 지원하지 않습니다.
http://coolengineer.idtail.com/이라는 아이디가 있을 때, 보통 한 페이지에 여러 섹션을 두고 그 섹션을 찾아가기 위해애 앵커라는 표현 방식으로 다음과 같이 사용할 수 있습니다.
http://coolengineer.idtail.com/#2위 URL은 모두 다른 것을나타내지만, 결국 http://coolengineer.idtail.com/ 을 가져오도록되어있습니다. 일종의 위임(delegation)이 일어나는 것으로 생각할 수 있습니다. (물론 link tag에 의한 위임은 일어나지 않습니다.)
http://coolengineer.idtail.com/#3
http://coolengineer.idtail.com/#private
http://coolengineer.idtail.com/#public
coolengineer.idtail.com#2이렇게 앞의 'http://'을 떼고, .com 뒤의 # 앞에 '/'을 빼도 되느냐하는 것입니다. 이것은 클라이언트의 URL 정규화 함수의 기능에 들어 있어야하는것입니다. php 라이브러리에서는 예상대로 잘 되는 군요. (누가 다른 클라이언트 라이브러리에서도 테스트해서 댓글을 좀. 부탁합니다.)
coolengineer.idtail.com#me2dayonly
http://coolengineer.com/#2잘 됩니다. 즉, RP에서는 다른 오픈아이디로 인식하는 것을 확인하였습니다. 하지만, 제 블로그의 경우에는, 위임을 http://coolengineer.idtail.com/ 에 하기 때문에, IdP 입장에서는 블로그 주소뒤에 #XXX가 어떤 내용인지 알 수가 없더군요. 만약, IdP에서 #을 기반으로하는 기능 확장을 고려한다면, 주소를 위임받아 로그인하는 사람들에게는 어찌할 수 없어보입니다.
The openid.return_to URL MUST descend from the openid.trust_root, or the Identity Provider SHOULD return an error. Namely, the URL scheme and port MUST match.즉, 최종적으로 신뢰한 사이트를 돌려 받을 주소(return_to)는 반드시 trust_root로 부터 만들어져야하는 것입니다. 예를 들어,
trust_root=http://www.me2day.net&return_to=http://myservice.org/openid/finish와 같은 방법으로 앞뒤를 다르게 서비스를 개설할 수 없다는 것입니다.
http://rds.yahoo.com/*-http://coolengineer.com/위와 같이 야후를 이용하여 제 홈에 오는 방법이 가능합니다. 아차!
trust_root=http://*.yahoo.com/&return_to=http://rds.yahoo.com/*-http://myservice.org/openid/finish와 같은 형식으로 하면, trust domain을 yahoo로 하고 return_to 에 씌여지는 url이 정상적으로 동작하는 것이라면, 그 앞에 http://rds.yahoo.com/*- 을 붙여주면, myservice.org 서비스에 로그인이 가능하게 됩니다.
이를 위해서는
- 사용자 인증
- 인증을 공유할 같은 도메인 혹은 그 서브 도메인의 서버들
- 각 서버들은 그 기원이 서로 다른 서비스로 운영됨.
- 각 서비스들이 요구하는 사용자 정보는 최소한으로 ID 이며, 그 외에 이메일, 이름 등이 있음.
OpenID는 하나의 사이트에 로그인할 때, 세 번의 질문을 하게 됩니다. 하나는 OpenID를 묻는 것이고, 두번째는 OpenID 자체의 소유여부를 확인하기 위한 비밀번호 등이고, 세번째는 인증정보를 전달할 도메인을 확인하고자함입니다. 대개 두번째 질문은 한 동안은 묻지 않고 유지 됩니다. 세번째도 만약 신뢰하는 사이트라면 묻지 않게 됩니다.
- 가장 공통의 인증을 위한 미들웨어 강제로 사용하는 방법이 있을 수 있고,
- 웹이라면 쿠키의 서브 도메인에 설정하는 기능을 이용하여, 전달 받은 쿠키를 공유하는 DB 질의를 통해서 접근하는 방법이 있으며
- 토큰하나를 캐시나 URL에 인코딩하여 전달한 뒤, 토큰의 진의 여부를 결정해주는 내부 서버를 두어 필요시마다 서버들간 대화를 하게 만들 수도 있고,
- 무식하게는 ID와 패스워드가 몰래몰래 네트웍을 날아다니게 만들 수 도 있습니다.`