2013-12-20 2 views
14

Omniauth와 OAuth2에 대해 많이 읽었으며 Omniauth가 OAuth를 사용하는 방법에 대해 많이 읽었지만 각각의 목적이 무엇인지 이해하지 못합니다. 내가 Omniauth없이, OAuth를 사용하고있는 경우OAuth2와 Omniauth의 차이점

예를 들어, 나는 Omniauth와 내가 다시

@auth [ 'omniauth.params']

과 PARAMS를 전송받을 수 있다는 것을 알고 있지만, , 나는 똑같이 할 수 있니?

내 실제 문제는 Omniauth가 끝나고 OAuth가 시작되는 Omniauth와 OAuth가 불가능한 Omniauth로 무엇을 할 수 있는지에 대한 차이점을 이해하지 못한다는 것입니다.

+2

Fran,이 질문을 작성한 방식으로 내가 Rails를 사용하고 있다고 생각하게 만듭니다. 그게 사실이야? – pjmorse

+0

예, 레일 애플리케이션이었습니다. 늦은 응답보다 결코 늦지 : D –

답변

19

이 답변에서는 레일스 (또는 다른 랙 기반 프레임 워크)를 사용하고 있다고 가정합니다. Omniauth가 그 점을 이해하지 못했기 때문입니다.

OAuth2로 시작하십시오. OAuth는 다른 사이트에서 인증을 사용하여 한 사이트에서 사용자를 인증하는 시스템입니다. OAuth 자체는 이것이 관리되는 시스템을 설명하지만 사이트가이를 수행하는 데 사용하는 코드를 지정하지 않습니다. 예를 들어, PHP 기반 사이트는 Ruby 기반 사이트를 공급자로 사용할 수 있으며 공급자의 현장에서 일어나는 일을 알 필요가 없습니다.

Omniauth가 제공되는 곳입니다. Omniauth 랙 기반 사이트에서 분산 인증을 지원하기위한 패키지입니다. OAuth2는 하나의 프로토콜을 처리하기 위해 지원하며 OAuth2 사양의 Ruby 구현 인 OAuth2라는 클래스를 통합합니다. Omniauth는 OAuth2를 둘러싼 래퍼 (wrapper)로 생각할 수 있습니다. OAuth2는 프로토콜을 너무 많이 신경 쓰지 않고 프로토콜의 세부 사항을 처리합니다.

은 Omniauth를 사용하지 않고 OAuth2 gem/class를 사용할 수 있으며 OAuth2를 통한 인증의 특성을 직접 처리하지만 그 이유는 확실하지 않습니다.

OAuth가 불가능한 Omniauth로 할 수있는 일은 대부분 OAuth가 아닌 다른 OAuth 서비스로 인증하는 것입니다. Omniauth는 Stack Exchange 등의 인증을 위해 커뮤니티에서 만든 "전략"을 사용할 수 있습니다.).

+3

이것은 실제로 올바르지 않습니다. OAuth는 "사이트 간 인증 공유 프로토콜"이 아니며 "두 사이트가 사용자를 인증하기 위해 취하는 일련의 단계를 설명하지"않습니다. 이는 주로 "자원 소유자"가 타사 응용 프로그램이 자원을 대신하여 액세스하도록 허용하는 권한 부여에 대한 것입니다. 리소스는 리소스 소유자가 누구인지에 대한 정보를 제공하는 계정이 될 수 있지만 응용 프로그램은 리소스에 대해 실제로 알지 못할 수 있습니다. –

+1

설명해 주셔서 감사합니다. 나는 약간의 편집을했다. "프로토콜"은 합리적인 단어인가? – pjmorse

+0

예, 분명히 말할 수 있습니다. [OAuth2 사양] (http://tools.ietf.org/html/rfc6749#section-1.2)도이를 사용합니다. 그것은 단지 인증 프로토콜이 아닙니다. [OpenID Connect] (http://openid.net/connect/)는 OAuth2를 기반으로 인증 및 ID 관련 기능을 제공합니다. –

관련 문제