2007년 09월 05일
OpenID와 CardSpace의 결합
title; OpenID Information Cards 1.0 - Draft 01
link; https://openidcards.sxip.com/spec/openid-infocards.html
OpenID와 CardSpace의 호환 방안을 다룬 스펙이 공개되었습니다. 기존에 제시된 방안은 OpenID 프로바이더에 로그인 할 때, CardSpace를 사용하는 것이었습니다. 긴밀하게 연동한다기 보다는, OpenID 문제로 제시된 phishing 공격을 막기 위한 한가지 선택방안 수준이었죠.
이번에 공개된 스펙은 조금 틀립니다. OpenID 토큰 내용을 포함하는 InfoCard 스키마를 정의하고, CardSpace가 saml 토큰을 얻는 것처럼 OpenID 토큰을 얻게 됩니다. CardSpace가 완전히 OpenID를 하나의 인증 토큰으로 받아들인 것이죠.
2. 저는 간단하게 Card 이름과, 제 ID/PW를 넣고 카드를 발급받았습니다. 이걸로 openidcards.sxip.com이라는 OP에 가입 절차를 완료한 것이더군요. 데모라서 번거로운 가입 절차는 생략한 가봅니다. 'Download Card'를 누르면 crd 포맷의 카드를 발급받습니다. 이 카드를 CardSpace같은 IS에 등록해서 사용하면 됩니다.
3. 이제 RP 사이트로 이동했습니다. OpenID용 InfoCard를 지원한다는 아이콘이 보입니다.
4. 아이콘을 누르면 CardSpace가 구동합니다. SSL 인증서에 있는 사이트 정보를 보여주고, 카드 제출 여부를 물어봅니다. 저는 카드 제출 버튼을 눌렀습니다.
5. 적당한 카드가 없기 때문에, 2단계에서 발급받은 crd 카드를 등록했습니다.

6. 이제 방금 발급받은 카드가 보입니다. 카드를 선택하고 'preview' 버튼을 누르면 세부 정보를 볼 수 있습니다.

7. 해당 카드는 사용자가 직접 만든 카드가 아니라, 서버로부터 발급받은 카드이기 때문에 'Managed Card'라고 표시된 것을 확인하실 수 있습니다. RP에 전달할 데이터는 'OpenID Identifier'로군요. 하지만 이 정보는 카드에 있는게 아니라 서버에 로그인 되어야지만 얻을 수 있는 정보이기 때문에 지금은 보이지 않습니다. 'Retrieve' 버튼을 누르면 OP에 로그인하고 값을 확인할 수 있습니다.
8. 'Send'를 눌러 해당 카드를 RP에게 전달합니다. 하지만 RP가 요구하는 정보는 OP에 있기 때문에 한번 로그인해서 OpenID 토큰을 발급받아와야 합니다. 1단계에서 제가 OP에 등록한 ID/PW를 입력하면 됩니다.
9. OP에 로그인하고 OpenID 토큰을 발급받는 시간, 발급받은 토큰을 RP에 전달하는 시간이 수초 걸립니다.
10. 네. 성공적으로 RP에 로그인 하였습니다. RP가 요구했던 제 OpenID Identifier는 'https://openidcards.sxip.com/i/ayo'이고 OP가 발급한 OpenID 토큰이 아래에 표시되어 있습니다. <openid:OpenIDToken> 엘리먼트로 싸여있다 뿐이지, 원래 OpenID 파라미터값이 그대로 들어있습니다.

스펙을 읽기 전에 한가지 궁금한 점이 있었죠. OP와 RP간에 키 교환은 언제 할까요? 원래 OpenID 스펙에서는 OP와 RP간에 DH(Diffie-Hellman) 키교환을 하는 'association' 과정이 필요하지만, 여기서는 OpenID InfoCard를 사용합니다. 별도로 키 교환하는 과정은 없고, OpenID InfoCard에 이미 설정된 보안 key를 사용합니다. 악용될 가능성이 있겠죠? 그래서 RP는 응답 메시지를 반드시 OP와 함께 검증해야 한다고 스펙에 명시하고 있습니다.
이 스펙 또한 블로고스피어에서 많은 이슈가 되었습니다. 좋은 쪽과 나쁜 쪽이 있는데요. 다음 포스트에서 각각의 입장을 소개하겠습니다.
link; https://openidcards.sxip.com/spec/openid-infocards.html
OpenID와 CardSpace의 호환 방안을 다룬 스펙이 공개되었습니다. 기존에 제시된 방안은 OpenID 프로바이더에 로그인 할 때, CardSpace를 사용하는 것이었습니다. 긴밀하게 연동한다기 보다는, OpenID 문제로 제시된 phishing 공격을 막기 위한 한가지 선택방안 수준이었죠.
이번에 공개된 스펙은 조금 틀립니다. OpenID 토큰 내용을 포함하는 InfoCard 스키마를 정의하고, CardSpace가 saml 토큰을 얻는 것처럼 OpenID 토큰을 얻게 됩니다. CardSpace가 완전히 OpenID를 하나의 인증 토큰으로 받아들인 것이죠.
- 사용자는 InfoCard를 지원하는 OP(OpenID Provider)로부터 OpenID용 InfoCard를 발급받는다.
- 사용자는 OpenID RP(Relying Party)로 이동한다.
- 사용자는 RP에게 OpenID 토큰을 제출하는 페이지로 이동한다.
- IS(Identity Selector)는 RP의 로그인 페이지에서 "application/x-informationCard" <OBJECT> 태그를 인식하고, OpenID 토큰을 얻기 위해 구동한다.
- 사용자는 로그인에 쓸 OpenID InfoCard를 선택한다.
- IS는 해당 InfoCard를 발급한 OP의 STS(Security Token Service)로 토큰 요청 메시지(Request Security Token (RST))를 보낸다.
- OS는 OpenID 토큰이 포함된 인증 응답 메시지를 만들고 토큰 응답 메시지(Request Security Token Response (RSTR))를 생성한다.
- OP는 토큰 응답 메시지를 IS에게 반환한다.
- IS는 RP에게 토큰 응답 메시지를 POST한다.
- RP는 OpenID 토큰을 해석한다. 추가로 OpenID 스펙에 명시된 것과 같은 서명 검증 절차를 OP와 직접 수행한다.
현재 이 스펙은 sxip에서 데모 사이트를 구현해 두었습니다. 그래서 실제로 구동되는지 한번 시험해 보았습니다.
1. 우선 CardSpace에서 사용할 OpenID 토큰을 발급받습니다. 특이하게 Higgins가 관련되어 있더군요. Higgins는 Eclipse 재단에서 관리중인 Identity Selector이며, 올해 6월에 개최된 Catalyst 컨퍼런스에서 InfoCard 호환성 데모를 수행했기 때문에 InfoCard 표준을 준용합니다.





6. 이제 방금 발급받은 카드가 보입니다. 카드를 선택하고 'preview' 버튼을 누르면 세부 정보를 볼 수 있습니다.

7. 해당 카드는 사용자가 직접 만든 카드가 아니라, 서버로부터 발급받은 카드이기 때문에 'Managed Card'라고 표시된 것을 확인하실 수 있습니다. RP에 전달할 데이터는 'OpenID Identifier'로군요. 하지만 이 정보는 카드에 있는게 아니라 서버에 로그인 되어야지만 얻을 수 있는 정보이기 때문에 지금은 보이지 않습니다. 'Retrieve' 버튼을 누르면 OP에 로그인하고 값을 확인할 수 있습니다.




스펙을 읽기 전에 한가지 궁금한 점이 있었죠. OP와 RP간에 키 교환은 언제 할까요? 원래 OpenID 스펙에서는 OP와 RP간에 DH(Diffie-Hellman) 키교환을 하는 'association' 과정이 필요하지만, 여기서는 OpenID InfoCard를 사용합니다. 별도로 키 교환하는 과정은 없고, OpenID InfoCard에 이미 설정된 보안 key를 사용합니다. 악용될 가능성이 있겠죠? 그래서 RP는 응답 메시지를 반드시 OP와 함께 검증해야 한다고 스펙에 명시하고 있습니다.
이 스펙 또한 블로고스피어에서 많은 이슈가 되었습니다. 좋은 쪽과 나쁜 쪽이 있는데요. 다음 포스트에서 각각의 입장을 소개하겠습니다.
레퍼런스
[1] http://appliedlife.blogspot.com/2007/08/openid-and-cardspace-pleasure-and-pain.html
[2] http://blogs.sun.com/racingsnake/entry/gerry_beuchelt_on_openid_cardspace
[3] http://idlogger.wordpress.com/2007/08/27/interesting-combination-of-openid-and-information-cards/
[4] http://talk.bmc.com/blogs/blog-bohren/jeff-bohren/openid-inforcard-combo
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
- openid의 보안문제 by S_H_Kim
- 더 안전한 OpenID를 위한 팁 by S_H_Kim
- OpenID가 제공하는 일관적인 사용자 경험(User eXperience) by S_H_Kim
- AOL의 OpenID WhiteList 정책. 그리고 idtail의 발빠른 행보 by S_H_Kim
- 오픈아이디(OpenID)가 무엇인가요? by crew
# by | 2007/09/05 11:11 | 기타 ID 동향 | 트랙백




