OAuth (Open Authorization) 란 정확히 무엇입니까?
정보를 수집했습니다
그러나 나는 배우고 더 알고 싶습니다. 수명주기에 대한 정보를 찾고 있습니다. 대부분의 소셜 네트워크가이 개방형 프로토콜에 의존하는 이유는 무엇입니까?
다양한 기술 (예 : ASP.NET)을 통해 가까운 시일 내에 실제로 적용됩니까?
답변
OAuth (Open Authorization) 란 정확히 무엇입니까?
OAuth를 사용 하면 리소스 소유자 (예 : 사용자) 가 타사 (예 : Facebook 응용 프로그램)에게 정보 (예 : 친구 목록 )에 대한 액세스 권한을 부여 한다는 것을 리소스 공급자 (예 : Facebook)에 알릴 수 있습니다 .
당신이 그것을 분명히 읽었다면, 나는 당신의 혼란을 이해할 것입니다. 이제 또 다른 소셜 네트워크에 참여하는 구체적인 예를 들어 봅시다!
기존 Gmail 계정이 있다고 가정합니다. LinkedIn에 가입하기로 결정했습니다. 많은 친구들을 수동으로 추가하는 것은 번거롭고 오류가 발생하기 쉽습니다. 초대를 위해 반쯤 지체되거나 이메일 주소에 오타를 삽입 할 수 있습니다. 따라서 결국 계정을 만들지 않으려는 유혹을받을 수 있습니다.
이러한 상황에 직면 한 링크드 인은 컴퓨터가 지루하고 오류가 발생하기 쉬운 작업에 훨씬 효율적이고 효과적이기 때문에 친구 목록을 자동으로 추가하는 프로그램을 작성하는 Good Idea (TM)를 보유하고 있습니다. 이제 네트워크 가입이 매우 쉬워 졌으므로 그러한 제안을 거부 할 수있는 방법 이 없습니다 .
이 연락처 목록을 교환하기위한 API가 없으면 LinkedIn 사용자 이름과 비밀번호를 Gmail 계정에 제공해야하므로 너무 많은 권한 을 부여해야합니다 .
이곳에서 OAuth가 제공됩니다. GMail이 OAuth 프로토콜을 지원하는 경우 LinkedIn은 GMail 연락처 목록에 액세스 할 수있는 권한을 부여하도록 요청할 수 있습니다.
OAuth는 다음을 허용합니다.
- 다른 액세스 수준 : 읽기 전용 VS 읽기 / 쓰기 이를 통해 사용자 목록에 대한 액세스 권한 또는 양방향 액세스 권한을 부여하여 새로운 LinkedIn 친구를 Gmail 연락처와 자동으로 동기화 할 수 있습니다.
- 액세스 세분성 : 연락처 정보 (사용자 이름, 전자 메일, 생년월일 등) 또는 전체 친구 목록, 일정 및 기타 정보에 대한 액세스 권한을 부여하도록 결정할 수 있습니다.
- 리소스 공급자의 응용 프로그램에서 액세스를 관리 할 수 있습니다. 타사 응용 프로그램에서 액세스를 취소하는 메커니즘을 제공하지 않으면 정보에 액세스 할 수있는 응용 프로그램이 붙어있는 것입니다. OAuth를 사용하면 언제든지 액세스 권한을 취소 할 수 있습니다.
가까운 시일 내에 사실상의 표준이 될 것인가?
글쎄, OAuth는 중요한 발전이지만 사람들이 올바르게 사용하지 않으면 문제를 해결하지 못합니다. 예를 들어, 리소스 공급자가 한 번에 모든 리소스에 단일 읽기 / 쓰기 액세스 수준 만 제공하고 액세스 관리를위한 메커니즘을 제공하지 않으면 아무 의미가 없습니다. 즉, OAuth는 인증뿐만 아니라 인증 기능을 제공하는 프레임 워크입니다.
실제로는 소셜 네트워크 모델에 매우 적합합니다. 타사 “플러그인”을 허용하려는 소셜 네트워크에 특히 인기가 있습니다. 이것은 리소스에 대한 액세스가 본질적으로 필요하고 본질적으로 신뢰할 수없는 영역입니다 (즉, 해당 응용 프로그램에 대한 품질 관리가 거의 또는 전혀 없음).
나는 야생에서 다른 많은 용도를 보지 못했습니다. 기술적으로는 사용할 수 있지만 은행 기록에 자동으로 액세스하는 온라인 금융 자문 회사를 모르겠습니다 .
답변
oAuth 란 무엇입니까?
OAuth는 단순히 비밀번호를 노출하지 않고 사용자 데이터에 액세스하기위한 타사 응용 프로그램의 인증을 처리하는 보안 인증 프로토콜입니다. 예. (많은 웹 사이트에서 fb, gPlus, twitter로 로그인)이 프로토콜 하에서 작동합니다.
관련 당사자
관련 당사자를 알면 프로토콜이 더 쉬워집니다. 기본적으로 oAuth 제공자, oAuth 클라이언트 및 소유자의 세 당사자가 있습니다.
- oAuth 클라이언트 (자격 증명에 액세스하려는 응용 프로그램)
- oAuth 공급자 (예 : 페이스 북, 트위터 …)
- 소유자 (페이스 북, Twitter .. 계정이있는 사람)
작동 원리
웹 사이트 (스택 오버 플로우)가 페이스 북 기능으로 로그인을 추가 해야하는 시나리오를 가정했습니다. 따라서 페이스 북은 oAuth 공급자이고 stackoverflow는 oAuth 클라이언트입니다.
-
이 단계는 앱 개발자가 수행합니다 . 맨 처음에 페이스 북 (oAuth Provider)은 이들 사이에 링크가 없기 때문에 stackoverflow (oAuth Client)에 대해 전혀 알지 못합니다. 따라서 첫 번째 단계는 페이스 북 개발자 사이트에 stackoverflow를 등록하는 것 입니다. 개발자가 앱 이름, 웹 사이트, 로고, 리디렉션 URL (중요한 것)과 같은 앱 정보를 페이스 북에 제공해야하는 경우 수동으로 수행됩니다. 그런 다음 stackoverflow가 성공적으로 등록되고 페이스 북에서 클라이언트 ID, 클라이언트 비밀 등을 얻었으며 OAUTH로 시작되어 실행 중입니다 .
2. 이제 stackoverflow 사용자가 fb 버튼으로 로그인을 클릭하면 . Stackoverflow는 ClientId (fb를 사용하여 클라이언트를 인식하는 데 사용)와 redirectUrl (fb는 성공한 후이 URL로 다시 반환 됨)로 페이스 북을 요청합니다. 따라서 사용자는 페이스 북 로그인 페이지로 리디렉션됩니다. 이것은 사용자 (소유자)가 스택 오버 플로우에 대한 페이스 북 자격 증명을 제공하지 않는 가장 좋은 부분 입니다.
- 소유자 후 Stackoverflow가 정보에 액세스하도록 허용하십시오 . 이어서 한국어 리디렉션은 함께 유래로 다시 AUTHCODE 2 단계에서 제공된 redirectUrl을 사용.
- 그런 다음 Stackoverflow는 얻은 인증 코드와 함께 페이스 북과 접촉하여 모든 것이 정상 인지 확인합니다.
- 그런 다음에야 페이스 북은 stackoverflow에 액세스 토큰 을 제공 합니다 . 그런 다음 비밀번호를 사용하지 않고 소유자의 정보를 검색하기 위해 stackoverflow에서 액세스 토큰 을 사용합니다. 이것은 oAuth의 전체 동기입니다.
이상:
답변
간단히 말해 OAuth는 응용 프로그램이 사용자 로그인 정보를 일부 웹 사이트로 직접 가져 오지 않고도 정보에 대한 자격 증명을 얻는 방법입니다. 예를 들어, 자신의 웹 사이트에서 응용 프로그램을 작성하고 사용자의 페이스 북 계정에서 데이터를 사용하려는 경우 OAuth를 사용하여 콜백 URL을 통해 토큰을 얻은 다음 해당 토큰을 사용하여 페이스 북 API를 호출하여 토큰이 만료 될 때까지 데이터를 사용하십시오. 웹 사이트는 프로그래머가 정보를 직접 공개하지 않고 자격 증명을 온라인에 퍼뜨릴 필요없이 데이터에 액세스 할 수 있지만 데이터에 대한 보호 수준을 제공하기 때문에 웹 사이트에 의존합니다. 사실상의 승인 방법이됩니까? 아마도 최근 트위터, 페이스 북,
답변
Oauth는 분명히 추진력을 얻고 있으며 엔터프라이즈 API에서도 인기를 얻고 있습니다. 앱 및 데이터 중심 세계에서 기업은 Google, Facebook, Twitter에 따라 점점 더 많은 API를 외부 세계에 노출하고 있습니다. 이 개발로 3 가지 인증 삼각형이 형성됩니다.
1) API 공급자-API, Amazon, Target 등의 자산으로 자산을 노출하는 모든 기업 2) 개발자-이 API를 통해 모바일 / 기타 앱을 구축하는 회사 3) 최종 사용자-제공 한 서비스의 최종 사용자- 아마존의 등록 / 게스트 사용자 말
이제 이것은 보안과 관련된 상황을 개발합니다-(이러한 복잡성을 거의 나열하지 않습니다.) 1) 최종 사용자로서 개발자가 귀하를 대신하여 개발자가 API에 액세스하도록 허용하려고합니다. 2) API 공급자는 개발자와 최종 사용자를 인증해야합니다. 3) 최종 사용자는 자신이 제공 한 동의에 대한 권한을 부여하고 취소 할 수 있어야합니다. 4) 개발자는 API 공급자와 다양한 신뢰 수준을 가질 수 있습니다. 그녀에게 부여 된 권한 수준이 다릅니다
Oauth는 위에서 언급 한 문제를 표준 방식으로 해결하려고하는 인증 프레임 워크입니다. API와 앱이 눈에 띄게됨에 따라이 문제는 점점 더 관련성이 높아지고 그것을 해결하려는 표준 (ouath 또는 기타)이 API 제공 업체 / 개발자, 심지어 최종 사용자로서 관심을 가질만한 것이 될 것입니다!
답변
OAuth ( O pen Auth orization)는 액세스 부여 / 관리 프로토콜에 대한 공개 표준입니다. 인터넷 사용자가 웹 사이트 또는 응용 프로그램에 다른 웹 사이트의 정보에 대한 액세스 권한을 부여하지만 암호는 제공하지 않는 방법으로 사용되었습니다. 인증을 다루지 않습니다 .
또는
OAuth 2.0 은 사용자가 자격 증명을 노출하지 않고도 한 사이트에서 다른 사이트로 리소스에 대한 액세스 권한을 제한 할 수있는 프로토콜입니다.
-
유추 1 : 오늘날 많은 고급 자동차에는 주차 대행 키가 제공됩니다. 그것은 당신이 주차 승무원에게주는 특수 키이며 일반 키와 달리 자동차가 1 마일 이상 운전하는 것을 허용하지 않습니다. 일부 발렛 키는 트렁크를 열지 않지만 다른 발렛 키는 내장 휴대 전화 주소록에 대한 액세스를 차단합니다. 발렛 키가 어떤 제한을 부과하는지에 관계없이 아이디어는 매우 영리합니다. 일반 키를 사용하여 모든 것을 잠금 해제하는 동안 누군가에게 특수 키를 사용하여 차에 제한적으로 액세스 할 수 있습니다. auth0의 src
-
유추 2 : 은행 계좌 신청서를 작성한다고 가정합니다. 여기서 Oauth는 신청자가 양식을 작성하는 대신 은행이 Adhaar 또는 여권을 사용하여 양식을 작성하는 방식으로 작동합니다.
여기에는 다음 세 가지 엔티티가 관련됩니다.
- 신청자 즉 소유자
- 은행 계좌는 OAuth 고객이며 정보가 필요합니다
- Adhaar / 여권 ID는 OAuth 공급자입니다
답변
OAuth는 권한 위임에 관한 것입니다 (권한을 부여 할 수있는 사람 선택). 인증과 권한은 서로 다릅니다. OAuth는 권한 부여 (액세스 제어)이며 인증 (ID 확인)도 구현하려는 경우 OAuth 위에 OpenID 프로토콜을 사용할 수 있습니다.
Facebook, Google, Github와 같은 모든 대기업은 오늘날 이러한 종류의 인증 / 권한을 사용합니다. 예를 들어, 방금 Google 계정을 사용하여이 웹 사이트에 로그인했습니다. 즉, Stackoverflow가 내 비밀번호를 알 수 없다는 것을 의미합니다. 비밀번호는 Google에서 내 비밀번호 (분명히 해시 됨)가 저장되는 곳에서 수당을받습니다. 이것은 많은 이점을 제공합니다. 그중 하나가 있습니다. 가까운 시일 내에 모든 웹 사이트에서 여러 계정을 만들 필요는 없습니다. 하나의 웹 사이트 (가장 신뢰하는 사이트)를 사용하여 다른 모든 웹 사이트에 로그인 할 수 있습니다. 따라서 하나의 비밀번호 만 기억하면됩니다.
답변
OAuth
Facebook / Google 버튼으로 SO 계정을 등록 할 때 발생했습니다.
- 응용 프로그램 (SO)이 사용자를 공급자의 권한 부여 URL로 리디렉션합니다. (데이터를 읽고 업데이트 할 수있는 응용 프로그램 액세스 권한을 사용자에게 부여할지 묻는 웹 페이지 표시).
- 사용자는 신청 절차 승인에 동의합니다.
- 서비스 공급자는 인증 코드를 매개 변수로 전달하여 사용자를 다시 응용 프로그램 (SO)으로 리디렉션합니다.
- SO는 코드를 액세스 권한 부여로 교환합니다.
출처 : OAuth1 서비스 제공 업체