History
- LiveJournal에서 처음 개발
- OpenID Foundation(비영리 재단)에서 관리
의미
- 인증 (Authentication) 수단의 일종.
- 분산형 Digital Identification System.
- 사용자들의 Digital Identity (DID)가 URL 또는 XRI로 주어짐
용어
- end user
- 자신의 Identity를 어떤 사이트에 밝히고자 하는 user
- Identifier (ID)
- end user가 자신의 OpenID로 선택한 URL/XRI
- Identity Provider (idP, i-broker)
- OpenID URL/XRI의 등록을 제공하고, OpenID 인증 및 기타 Identity Service를 제공하는 Service Provider
- relying party (RPs)
- end user의 ID를 검증하고자 하는 사이트
- Server (또는 Server Agent)
- end user의 ID를 검증해주는 Server, end user의 자체 Server(블로그 등) 또는 idP에 의해 운영되는 Server
- User Agent
- end user가 idP나 relying party에 접속할 때 사용하는 Program(브라우저 등)
장점
- OpenID를 지원하는 사이트라면, user들은 매번 새로운 계정을 만들고 관리할 필요 없이, idP가 제공하며, 신뢰하는 하나의 사이트에서만 인증
- 대부분의 SSO 구조와 달리, 특정 인증 메커니즘을 명시하지 않음, 즉 idP가 얼마나 인증 정책을 강력하게 사용하는가에 따라 민감한정보도 다룰 수 있음
동작 방식
user : Alice
relying party : example.com
idP : openid-provider.org
- user는 example.com에 로그인 시, alice.openid-provider.org 와 같은 형태(canonical form)로 id만 입력하면 로그인이 된다.
- example.com은 id정보를 이용해 ID 제공 서버 url과 식별자, 콘텐츠 유형 등을 알아낼 수 있다.
- relying party와 idP가 통신하는 두 가지 방식
- checkid_immediate
- 컴퓨터중심 방식, 두 서버간의 모든 통신이 user의 간섭 없이 진행
- relying party와 idP간에 공유되는 보안정보(associate handle)를 만들고, relying party가 보안정보를 저장.
- checkid_setup
- user가 직접 Web browser를 통해 idP Server와 통신한 후, relying party 사이트에 접속
- 웹에서 많이 사용
- 자동 처리가 불가능한 경우 사용
- user가 idP에 아직 로그인하지 않은 경우 - 비밀번호 기반 인증
- idP가 비밀번호 입력을 요청 (Cookie로 사용자 세션을 저장 가능)
- user로부터 idP를 신뢰하는지 질의
- 신뢰(허용)시 OpenID 인증 성공 (브라우저가 인증서(credentials)를 가짐
- 신뢰하지 않을 시 relying party에서 인증 실패
- relying party가 user의 credential이 idP로부터 생성된 것인지 검증
- associate handle이 있는 경우(stateful), associate handle으로 검증
- associate handle이 없는 경우(stateless), check_authentication (하나의 서버 간 요청)을 더해야 검증 가능