written by kaspyx([email protected])
OAuth2.0 지원 모델
저번시간에 OAuth2.0에대해 간단한 개념을 다루어보았는데요, 이번에는 OAuth2.0 작동 방식 2가지에 대해 다루어보겠습니다. 첫번째는 비신뢰클라이언트 모델 이고 두번째는 신뢰 클라이언트 모델 대표적으로 이 2가지로 정의 내릴수 있겠습니다. 여기서 지원 모델이란 클라이언트 app이 인증을 하는 방식이라고 보면될거같네요
두가지 모델 비슷하긴하지만 가장 큰 차이점은 APP의 Credential(Client Secret)을 안전하게 보관할수있는 별도의 저장공간이 있느냐로 설명할수있습니다.
물론 2가지 외에 다른 방법도 있긴하지만 이종류가 제일 많이 사용된다고하네요
간단한 개념은 OAuth2.0 기본개념을 참조해주세요!!
OAuth2.0 용어 몇가지
App Credential
App Credential 이란 OAuth2.0과 연동할 App을 인증해주는 비밀번호 같은 정보라고 보시면 됩니다. 예를들어 facebook과 연동하는 shopping App이 있다면 facebook에서는 App ID와 App Secret의 두개의 정보를 발급해주게 되고 이정보를 가지고 facebook에서는 App을 신뢰하여 로그인 연동 등의 기능을 지원해주게되는 겁니다.클라이언트 앱 (Client App)
클라이언트 App이란 사용자라고 해깔리수도 있겠지만 OAuth2.0과 연동을 하는 App을 말하는 겁니다.
앞절에서 shopping App은 클라이언트 App이 되는것이고, OAuth2.0 서버는 facebook 서버가 되는것이죠인증과 인가
앞절에서 간략히 설명하였지만 OAuth2.0을 두가지의 절차를 가지는데 shopping App에서 facebook으로 로그인 하기나 facebook 친구 목록등에 접근하기위해서는 facebook으로 ID/PWD을 통해 인증을 하고 클라이언트 App은 사용자의 인증 정보와 Client App의 Credential 정보로 어떤것을 할수있는지 권한을 위임 받는것이죠액세스 토큰(Access Token)
액세스 토큰이란 OAuth2.0에서 최종 발급한 인증 값이라고 보면됩니다. 최종적으로는 이 키값을 발급해주게되고 이걸 통해 클라이언트 App에서 facebook의 친구목록을 가져오거나, 로그인 제공 등의 기능을 사용할수 있죠. 한번 발급된 Access Token은 유효시간이 존재하며, 유효시간 내에 사용하면 3번의 과정을 거치지않고 사용할수 있는 장점이 있습니다. 물론 보안적으로 이슈가 될수있으니 안전하게 보관하는것이 좋겠죠.
두가지의 모델 비교
비교대상 | 비신뢰 클라이언트 모델 | 신뢰 클라이언트 모델 |
---|---|---|
복잡성 | 구현이 단순하다 | 구현이 복잡하다. 기밀데이터를 안전하게 보관할 서버가 필요 |
처리 | 클라언트 사이드 워크 플로우 | 서버사이드 워크 플로우 |
보안성 | 보안성이 더 낮다. 키가 브라우저에 직접 전달되어, 탈취될 가능성이 높다. | 더 안전하다. 브루우저에 키를 노출하지 않기 때문에 키가 노출될 가능성이 적다. |
구현 방법 | 암시적 그랜트(implict grant) | 인가 코드 그랜트 (code grant) |
지속시간 | 짧아야한다. | 장시간 접근이 가능해도 된다. |
종류 | 사용자에서 바로 돌아가는 stand alone HTML 자바스크립트 기반 App 등 | 클라이언트 - 서버 모델 |
참조
OAuth2.0 마스터, 에이콘 출판사
Congratulations @kaspyx! You have completed the following achievement on Steemit and have been rewarded with new badge(s) :
Award for the number of upvotes received
Click on the badge to view your Board of Honor.
If you no longer want to receive notifications, reply to this comment with the word
STOP
To support your work, I also upvoted your post!
Do not miss the last post from @steemitboard:
SteemitBoard and the Veterans on Steemit - The First Community Badge.
Congratulations @kaspyx! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Vote for @Steemitboard as a witness to get one more award and increased upvotes!