[authentication] OpenID와 OAuth의 차이점은 무엇입니까?

OpenID와 OAuth의 차이점을 이해하려고 노력하고 있습니까? 어쩌면 그들은 완전히 별개의 두 가지입니까?



답변

OpenID 는 인증에 관한 것입니다 (예 : 본인 증명), OAuth 는 인증에 관한 것입니다 (예 : 원래 인증을 처리하지 않고도 기능 / 데이터 등에 대한 액세스 권한 부여).

외부 파트너 사이트에서 OAuth를 사용하여 사용자를 다시 인증하지 않고도 보호 된 데이터에 액세스 할 수 있습니다.

블로그 게시물 ” 사용자 관점에서 OpenID와 OAuth “는 사용자 관점 에서 두 가지와 OAuth-OpenID를 비교 한 간단한 내용을 가지고 있습니다. 그것에 대해.


답변

OAuth와 OpenID를 비교하는 세 가지 방법이 있습니다.

1. 목적

OpenID는 페더레이션 인증을 위해 만들어졌습니다. 즉, 타사에서 이미 보유한 계정을 사용하여 사용자를 인증 할 수 있습니다 . 페더레이션이라는 용어는 OpenID의 핵심은 모든 공급자를 사용할 수 있다는 것입니다 (화이트리스트 제외). 사용자가 다른 계정을 사용할 수 있도록 공급자와의 거래를 미리 선택하거나 협상 할 필요가 없습니다.

OAuth는 사용자가 타사 응용 프로그램과 암호를 공유 할 필요가 없도록하기 위해 만들어졌습니다 . 실제로 OpenID 문제를 해결하기위한 방법으로 시작했습니다. 사이트에서 OpenID를 지원하는 경우 사용자에게 사이트에 비밀번호가 없기 때문에 HTTP 기본 자격 증명 (사용자 이름 및 비밀번호)을 사용하여 API를 제공 할 수 없습니다.

문제는 인증을 위해 OpenID를 분리하고 인증을 위해 OAuth를 분리하면 두 프로토콜이 모두 같은 일을 많이 수행 할 수 있다는 것입니다. 그것들은 각각 다른 구현에 의해 요구되는 다른 기능 세트를 제공하지만 본질적으로 그것들은 꽤 상호 교환 가능합니다. 기본적으로 두 프로토콜 모두 어설 션 확인 방법입니다 (OpenID는 ‘이 사람입니다’어설 션으로 제한되는 반면 OAuth는 API를 통해 지원되는 어설 션으로 교환 할 수있는 ‘액세스 토큰’을 제공합니다).

2. 특징

두 프로토콜 모두 사이트가 사용자를 다른 곳으로 리디렉션하고 확인 가능한 어설 션을 제공하는 방법을 제공합니다. OpenID는 ID 어설 션을 제공하는 반면 OAuth는 액세스 토큰 형태로보다 일반적으로 사용되며 “OAuth 제공자에게 질문하기”에 사용될 수 있습니다 . 그러나 각각 다른 기능을 지원합니다.

OpenIDOpenID 의 가장 중요한 기능은 검색 프로세스입니다. OpenID는 미리 사용하려는 각 공급자를 하드 코딩 할 필요가 없습니다. 사용자는 검색을 사용하여 인증하려는 타사 공급자를 선택할 수 있습니다. 이 검색 기능은 대부분의 웹 사용자가 얻지 못하는 식별자로 HTTP URI를 사용하는 방식이기 때문에 OpenID 문제의 대부분을 야기했습니다. 다른 기능 OpenID는 DH 교환을 사용한 임시 클라이언트 등록 지원, 최적화 된 최종 사용자 경험을위한 즉각적인 모드 및 공급자에게 다른 왕복을하지 않고 어설 션을 확인하는 방법입니다.

OAuthOAuth 의 가장 중요한 기능은 추가 요청을하는 오래 지속되는 방법을 제공하는 액세스 토큰입니다. OpenID와 달리 OAuth는 인증으로 끝나지 않지만 동일한 타사 서비스에서 제공하는 추가 리소스에 액세스하기위한 액세스 토큰을 제공합니다. 그러나 OAuth는 검색을 지원하지 않으므로 사용하려는 공급자를 미리 선택하고 하드 코딩해야합니다. 사이트를 방문하는 사용자는 식별자를 사용할 수 없으며 사용자가 미리 선택한 식별자 만 사용할 수 있습니다. 또한 OAuth에는 ID 개념이 없으므로 로그인에 사용한다는 것은 사용자 정의 매개 변수를 추가하거나 (트위터에서 수행 한대로) 현재 “로그인 한”사용자를 얻기 위해 다른 API 호출을하는 것을 의미합니다.

3. 기술 구현

두 프로토콜은 리디렉션을 사용하여 사용자 권한을 얻는 데있어 공통 아키텍처를 공유합니다. OAuth에서 사용자는 보호 된 리소스 및 OpenID에서 자신의 ID에 대한 액세스 권한을 부여합니다. 그러나 그것이 공유하는 전부입니다.

각 프로토콜은 요청 또는 응답의 진위 여부를 확인하는 데 사용되는 서명을 계산하는 방법이 다르며 각각 등록 요구 사항이 다릅니다.


답변

OpenID는 (주로) 식별 / 인증을위한 것이므로 stackoverflow.com본인은 chris.boyle.name(또는 어디에서든) 알고 있으므로 chris.boyle.name어제 소유하고 평판이 좋은 사람 일 가능성이 높습니다 .

OAuth는 사용자를 대신하여 조치를 취할 수 있도록 권한 부여 용으로 설계되어 stackoverflow.comTwitter 비밀번호를 몰라도 자동으로 트윗 할 수있는 권한을 요청할 수 있습니다.


답변

많은 사람들이 여전히 이것을 방문하므로 여기에 설명하는 매우 간단한 다이어그램이 있습니다.

OpenID_vs._pseudo-authentication_using_OAuth

무료 위키 백과


답변

OAuth

위임 authorization전용으로 만 사용됩니다. 즉, 비밀번호를 제공하지 않고 타사 서비스가 개인 데이터를 사용할 수있는 권한을 부여합니다. 또한 OAuth “세션”은 일반적으로 사용자 세션보다 오래 지속됩니다. OAuth가 인증을 허용하도록 설계되었음을 의미

즉, Flickr는 OAuth를 사용하여 타사 서비스가 깜박임 사용자 이름과 비밀번호를 제공하지 않고도 자신을 대신하여 인물 사진을 게시하고 편집 할 수 있도록합니다.

OpenID

사용 authenticate 단일 로그온 정체성. 모든 OpenID는 OpenID 제공자가 귀하의 말을 증명할 수 있도록해야합니다. 그러나 많은 사이트에서 ID 인증을 사용하여 권한을 제공합니다 (그러나 두 사이트를 분리 할 수는 있음)

즉, 하나는 공항에서 자신의 이름을 가진 사람의 이름이 자신이 사용하는 티켓임을 증명 (또는 증명)하기 위해 여권을 보여줍니다.


답변

사용자가 Facebook 또는 Twitter로 로그인하려는 경우 OAuth를 사용하십시오. 사용자가 “다른 사람이 자신의 ID를 소유하고 싶지 않기 때문에”자신의 OpenID 공급자를 실행하는 목 수염 인 경우 OpenID를 사용하십시오.


답변

  • OpenID 는 OpenID Foundation에서 제어 하는 개방형 표준 및 분산 인증 프로토콜입니다.
  • OAuth 는 액세스 위임을위한 공개 표준 입니다.
  • OIDC ( OpenID Connect ) OpenID와 OAuth의 기능을 결합하여 인증과 권한 부여를 모두 수행합니다.

OpenID 는 일부 “OpenID 공급자”, 즉 ID 공급자 (idP)가 관리 하는 고유 한 URI 형식을 취합니다 .

OAuth 는 소유권 동의 및 액세스 위임에 OAuth가 사용되는 반면 XACML은 권한 부여 정책을 정의하는 데 사용되는 XACML과 함께 사용할 수 있습니다.

OIDC 는 간단한 JWT (JSON Web Web Token)를 사용하며, OAuth 2.0 사양을 준수하는 플로우를 사용하여 얻을 수 있습니다 . OIDCOAuth 2.0 위에 구축 된 인증 계층 이므로 OAuthOIDC 와 직접 관련됩니다 .

여기에 이미지 설명을 입력하십시오

예를 들어 , Google 계정을 사용하여 Auth0 에 로그인하기로 선택한 경우 OIDC 를 사용 했습니다 . Google 인증에 성공하고 Auth0 이 귀하의 정보에 액세스 하도록 승인 하면 Google은 사용자 및 수행 된 인증에 대한 Auth0 정보를 다시 보냅니다 . 이 정보는 JSON 웹 토큰 (JWT)으로 반환됩니다 . 액세스 토큰과 요청이있을 경우 ID 토큰을 받게됩니다. 토큰 유형 : 출처 : OpenID Connect

유추 :
조직 사용 ID를 식별하기위한 목적 카드는 칩을 포함하고, 그것과 함께 직원에 대한 세부 정보를 저장하는 권한 즉, 캠퍼스 / 문 / ODC에 액세스 할 수 있습니다. ID 카드는 OIDC 역할을 하고 OAuth 역할을합니다 . 더 많은 예제 와 양식 위키