오픈마루에서 서비스중인 레몬펜이 joins.com의 18대총선 사이트에 들어갔습니다.
오픈마루 서비스 중에서는 처음으로 제한적 본인확인제를 적용해야 하는 서비스이기도 한데요.
본인확인을 해야하는 컨슈머(RP)에서 개별적으로 본인확인을 할 수도 있겠지만, 개별 컨슈머(RP)마다 주민번호를 입력하는 것이 오픈아이디의 본래 취지에도 맞지 않을 뿐더러, 여러 사이트에 주민번호가 저장되는 것 또한 개인 정보 보호에 옳지 않은 것 같아서 본인 확인 여부를 IDP에서 제공하는 형태를 고민하게 되었습니다.
본인확인 프로토콜은 IDP에서 본인확인을 반드시 수행하는 것을 보장하는 것이 아니라, IDP가 본인확인을 수행한 뒤, 본인확인 여부를 컨슈머(RP)에게 전달하는 방법입니다. 따라서 컨슈머(RP)는 신뢰할 수 있는 IDP 목록을 별도로 관리할 필요가 있습니다.
아래는 프로토콜 스펙입니다. sreg에 필드하나를 추가하는 방법도 고민을 해보았습니다만, 아무래도 전달되는 필드가 추후에 추가될 가능성이 큰데다, sreg나 2.0의 ax(attribute exchange)처럼 어떤 속성값을 요청한다는 의미보다는 본인확인을 수행해라는 명령의 성격이 강해서 단순하지만 별도의 name space로 분리하게 되었습니다.
프로토콜 스펙
- Request parameters
아래 request parameter는 오픈아이디 인증 요청(checkid_immediate 또는 checkid_setup)시 전달되어야 한다.- openid.ns.kren
value : http://spec.openid.or.kr/extensions/kren/1.0 (openid spec 2.0에서만 사용)
- openid.kren.request
value : verify
실명확인을 강제하는 request
반드시 실명확인을 수행해야함 (정상적인 상황에서는 Response가 항상 T[true]가 됨)value : retrieve
현재 해당 openid가 실명확인지 되었는지 여부만 리턴
실명확인을 하지 않은 ID의 경우 실명확인 없이 Response를 F[false]로 리턴
- openid.ns.kren
- Response parameters
아래 response parameter는 OP(Identity provider)가 "openid.mode"의 값을 "id_res"로 응답할 때, 포함되어야 한다.
응답 메시지에서 "openid.signed" field에 실명확인 필드가 'openid.' 접두어 없이 (ex, kren.verified) 반드시 포함되어야 한다. "openid.sig" 필드는 반드시 kren.field 값을 포함한 서명값을 가져야한다.openid.ns.kren
value : http://spec.openid.or.kr/extensions/kren/1.0 (openid spec 2.0에서만 사용)
openid.kren.verified
value : T
실명확인이 된 경우
value : F
실명확인이 되지 않은 경우
현재는 ruby 만 샘플이 있습니다.
- requestdef do_begin
...
request = $consumer.begin(openid_url)
case request.status
when OpenID::FAILURE
...
when OpenID::SUCCESS
request.add_extension_arg('sreg','policy_url', policy_url)
request.add_extension_arg('kren','request','verify')
else
...
end
end - responsedef do_complete
...
response = $consumer.complete(@req.query)
...
verified = false
if response.status == OpenID::SUCCESS
...
kren = response.extension_response('kren')
verified = (kren['verified'] == 'T') if kren
end
...
end
트랙백 주소 :: http://blog.myid.net/trackback/58
-
Subject: myID 의 제한적 본인확인, 제한적 적용 소개
Tracked from OpenID 커뮤니티 2008/04/01 19:46 삭제OpenID 가 국내에서 실용화, 대중화 되기 위해서는 국내 실정에 맞는 몇가지 과제를 해결해야 합니다. 그중에서도, 실명제가 가장 큰 과제중 하나입니다. 당장 일 방문객 30 만 이상의 국내 대부분의 주요 사이트에서는 '제한적 본인확인제' 를 수행해야 합니다. 결국, 대중적인 사이트에 오픈아이디가 '쉽게' 적용되려면 어떤 식으로든 해결책이 마련되야 하는 것이지요. (물론, 최근에 인터넷 실명제 반대운동도 있습니다만, 정책이 변경되기 까지는, 서비스..
-
Subject: OpenID 제한적 본인확인 확장에 대한 의견
Tracked from Digital Identity Stories 2008/04/09 16:17 삭제최근 myID.net 에서 OpenID 기반에서 제한적 본인확인을 할 수 있는 기능을 개발했고, 같은 회사 (오픈마루)의 서비스인 레몬펜 - 중앙일보 총선 사이트 에 적용했습니다. http://openid.or.kr/73이전부터 많은 ...












댓글을 달아 주세요
관리자만 볼 수 있는 댓글입니다.
흐미.. 오픈아이디도 드디어 본인확인제의 도입인가요.. ;;
안녕하세요 openid.org의 오픈아이디를 쓰고 있습니다. openid.org에서 생성된 계정으로 글을 쓸려고 하니 에러가 발생하네요.
Runtime Error
Description: An application error occurred on the server. The current custom error settings for this application prevent the details of the application error from being viewed remotely (for security reasons). It could, however, be viewed by browsers running on the local server machine.
Details: To enable the details of this specific error message to be viewable on remote machines, please create a <customErrors> tag within a "web.config" configuration file located in the root directory of the current web application. This <customErrors> tag should then have its "mode" attribute set to "Off".
<!-- Web.Config Configuration File -->
<configuration>
<system.web>
<customErrors mode="Off"/>
</system.web>
</configuration>
Notes: The current error page you are seeing can be replaced by a custom error page by modifying the "defaultRedirect" attribute of the application's <customErrors> configuration tag to point to a custom error page URL.
<!-- Web.Config Configuration File -->
<configuration>
<system.web>
<customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>
</system.web>
</configuration>
그리고, myid.net의 소유주가 엔씨소프트인가요?
후이즈에서 검색해 보니 그렇게 나와서 한 번 여쭤봅니다.
박지용님 안녕하세요. myID입니다.
알려주신 내용은 저희 블로그에서 보낸는 인증요청을 openid.org에서 제대로 처리하지 못해서 발생하는 에러메시지 입니다.
원인은 openid.org에 있을 수 있지만 저희 블로그에서 사용하는 OpenID라이브러리의 결함일 수도 있겠군요.
다시한번 확인해 보고 조치하도록 하겠습니다.
알려주셔서 감사합니다. ^^;