OAuth (Open Authorization) 란 정확히 무엇입니까?
OAuth (Open Authorization) 란 정확히 무엇입니까?
정보를 수집했습니다
그러나 나는 배우고 더 알고 싶습니다. 수명주기에 대한 정보를 찾고 있습니다. 대부분의 소셜 네트워크가이 개방형 프로토콜에 의존하는 이유는 무엇입니까?
다양한 기술 (예 : ASP.NET)을 사용하면 가까운 시일 내에 사실이 될까요?
OAuth (Open Authorization) 란 정확히 무엇입니까?
OAuth를 사용 하면 리소스 소유자 (예 : Facebook)가 타사 (예 : 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)은 스택 오버 플로우 (oAuth Client) 사이에 링크가 없기 때문에 전혀 알지 못합니다. 따라서 첫 번째 단계는 페이스 북 개발자 사이트에 stackoverflow를 등록하는 것 입니다. 개발자가 앱 이름, 웹 사이트, 로고, 리디렉션 URL (중요한 것)과 같은 앱 정보를 페이스 북에 제공해야하는 경우 수동으로 수행됩니다. 그런 다음 stackoverflow가 성공적으로 등록되고 페이스 북에서 클라이언트 ID, 클라이언트 비밀 등을 얻었으며 OAUTH로 실행되고 있습니다 .
2.Now when stackoverflow's user clicks login with fb button. Stackoverflow requests facebook with ClientId(fb use it to recognize the client) and redirectUrl(fb will return back to this url after success).Thus the user gets redirected to facebook login page. This is the best part user(owner) is not giving thier facebook credential to stackoverflow.
- After Owner allow Stackoverflow to access the information. Then Facebook redirects back to stackoverflow, along with authcode using the redirectUrl provided at step 2.
- Then Stackoverflow contacts with facebook along with the obtained authcode to make sure everything is okay.
- Only then facebook will give access token to stackoverflow. Then access token is used by stackoverflow to retrive owner's information without using password. This is the whole motive of oAuth, where acutal credentails in never exposed to third party applications.
For More:
Simply put OAuth is a way for applications to gain credentials to your information without directly getting your user login information to some website. For example if you write an application on your own website and want it to use data from a user's facebook account, you can use OAuth to get a token via a callback url and then use that token to make calls to the facebook API to get their use data until the token expires. Websites rely on it because it allows programmers to access their data without the user having to directly disclose their information and spread their credentials around online but still provide a level of protection to the data. Will it become the de facto method of authorization? Perhaps, it's been gaining a lot of support recently from Twitter, Facebook, and the likes where other programmers want to build applications around user data.
Oauth is definitely gaining momentum and becoming popular among enterprise APIs as well. In the app and data driven world, Enterprises are exposing APIs more and more to the outer world in line with Google, Facebook, twitter. With this development a 3 way triangle of authentication gets formed
1) API provider- Any enterprise which exposes their assets by API, say Amazon,Target etc 2) Developer - The one who build mobile/other apps over this APIs 3) The end user- The end user of the service provided by the - say registered/guest users of Amazon
Now this develops a situation related to security - (I am listing few of these complexities) 1) You as an end user wants to allow the developer to access APIs on behalf of you. 2) The API provider has to authenticate the developer and the end user 3) The end user should be able to grant and revoke the permissions for the consent they have given 4) The developer can have varying level of trust with the API provider, in which the level of permissions given to her is different
The Oauth is an authorization framework which tries to solve the above mentioned problem in a standard way. With the prominence of APIs and Apps this problem will become more and more relevant and any standard which tries to solve it - be it ouath or any other - will be something to care about as an API provider/developer and even end user!
OAuth(Open Authorization) is an open standard for access granting/deligation protocol. It used as a way for Internet users to grant websites or applications access to their information on other websites but without giving them the passwords. It does not deal with authentication.
Or
OAuth 2.0 is a protocol that allows a user to grant limited access to their resources on one site, to another site, without having to expose their credentials.
Analogy 1: Many luxury cars today come with a valet key. It is a special key you give the parking attendant and unlike your regular key, will not allow the car to drive more than a mile or two. Some valet keys will not open the trunk, while others will block access to your onboard cell phone address book. Regardless of what restrictions the valet key imposes, the idea is very clever. You give someone limited access to your car with a special key, while using your regular key to unlock everything. src from auth0
Analogy 2: Assume, we want to fill an application form for a bank account. Here Oauth works as, instead of filling the form by applicant, bank can fill the form using Adhaar or passport.
Here the following three entities are involved:
- Applicant i.e. Owner
- Bank Account is OAuth Client, they need information
- Adhaar/Passport ID is OAuth Provider
OAuth is all about delegating Authorization (choosing someone who can do Authorization for you). Note that Authentication and Authorization are different things. OAuth is Authorization (Access control), and if you want to implement Authentication (ID verification) also, OpenID protocol can be used on top of OAuth.
All big companies like Facebook, Google, Github,... use this kind of authentication/authorization nowadays. For example, I just signed in on this website using my Google account, this means Stackoverflow doesn't know my password, it receives the allowance from Google where my password (hashed obviously) is saved. This gives a lot of benefits, one of them is; In the near future you won't have to make several accounts on every website. One website (which you trust most) can be used to login to all other websites. So you'll only have to remember one password.
OAuth
happened when we sign up SO account with Facebook/ Google button.
- Application (SO) redirecting user to the provider's authorization URL. ( Displaying a web page asking the user if he or she wishes to grant the application access to read and update their data).
- User agree to grant the application process.
- Service provider redirects user back to application (SO), passing authorization code as parameter.
- SO exchanges the code for an access grant.
Source : OAuth1 service providers
OAuth is an open standard for authorization, commonly used as a way for Internet users to log into third party websites using their Microsoft, Google, Facebook or Twitter accounts without exposing their password.
OAuth is a protocol that is used from Resource Owner(facebook, google, tweeter, microsoft live and so on) to provide a needed information, or to provide a permission for write success to third party system(your site for example). Most likely without OAuth protocol the credentials should be available for the third part systems which will be inappropriate way of communication between those systems.
참고 URL : https://stackoverflow.com/questions/4201431/what-exactly-is-oauth-open-authorization
'IT story' 카테고리의 다른 글
우분투에 Node.js 설치 (0) | 2020.05.10 |
---|---|
파이썬리스트 빼기 연산 (0) | 2020.05.10 |
파이썬 설치시 $ PATH에 허용되는 C 컴파일러가 없습니다. (0) | 2020.05.10 |
C에서 참조로 전달 (0) | 2020.05.10 |
Wordle과 같은 단어 구름을 구현하는 알고리즘 (0) | 2020.05.10 |