Presentation is loading. Please wait.

Presentation is loading. Please wait.

Oauth 인증 기술.

Similar presentations


Presentation on theme: "Oauth 인증 기술."— Presentation transcript:

1 Oauth 인증 기술

2 Oauth Oauth는 OpenAPI로 개발된 표준 인증 방식으로,
각종 애플리케이션에서 사용자 인증을 거칠떄 활용될수 있습니다. Oauthrk 사용되기 전에는 인증방식의 표준이 없었기 떄문에 기존의 기본인증인 아이디와 비밀번호를 사용하였는데, 이는 보안상 취약한 구조입니다. 기본인증이 아닐 경우는 각 애플리케이션들이 각자의 개발한 회사의 방법대로 사용자를 확인하였는데 예를 들어 구글의 AuthSub, AOL의 OpenAuth, 야후의 BBAuth, 아마존 웹서비스 API 등이 있습니다. Oauth는 이렇게 제각각인 인증방식을 표준화한 인증방식입니다 Oauth를 이용하면 이 인증을 공유하는 애플리케이션끼리는 별도의 인증이 필요없으므로 여러 애플리케이션을 통합하여 사용하는것이 가능하게 됩니다.

3 Oauth 용어 서비스 프로바이더(Service Provider) – OPENAPI를 제공하는 서비스를 말합니다.
컨수머(Consumer) – API를 사용하여 개발된 애플리케이션 서비스를 말합니다. 사용자(users) – 서비스 프로바이더 혹은(그리고) 컨수머를 사용하는 이를 말합니다. 보호된 자원(protected Resources) – 서비스 프로바이더에 존재하는 데이터를 의미합니다. 컨수머 개발자(Consumer Developer) – 컨수머를 개발하는 개인 혹은 단체 컨수머 키(Consumer Key) – 서비스 프로바이더에게 컨수머 자신임을 인증하기 위한 키 컨수머 시크릿(Consumer Secret) – 컨수머의 컨수머 키 소유권한이 있는지 인증하기 위한 키 토큰(Tokens) – 컨수머에서 서비스 프로바이더에 있는 사용자의 보호된 자원에 접근하기 위해 사용되는 사용자의 인증정보.

4 Oauth 용어 리퀘스트 토큰(Request Token) : 컨수머가 사용자에게 접근권환을 획득하는 과정에서 사용하는 값이며, 이것은 차후 액세스 토큰으로 교환됩니다. 리퀘스트 토큰 시크릿(Request Token Secret) : 리퀘스트토큰이 사용자의 것임을 인증하기 위한 값입니다. 액세스 토큰(Access Token) : 컨수머가 사용자의 서비스 프로바이더를 통해서가 아닌 컨수머를 통해서 보호된 자원에 접근할 수 있는 권한을 받기 위한 값입니다. 액세스 토큰 시크릿(Access Token Secret) : 액세스토큰이 사용자의 것임을 인증하기 위한 값입니다.

5 흐름도 A; Consumer가 Request Token 요청
B; Service Provider가 Request Token 발급 C; Consumer는 사용자를 Service Provider로 이동, 사용자를 인증하고 토큰 발급을 확인함 D; Service Provider는 사용자를 Consumer로 이동 E; Consumer는 Access Token 요청 F; Service Provider는 Consumer의 신원과 Request Token 확인, Access Token 발급 G; Consumer는 Access Token으로 사용자 정보에 접근

6 다음 OAuth OAuth를 사용하기 위해서는 "Consumer Key" 와 "Consumer Secret"을 발급 받아야 합니다. 컨슈머 키와 컨슈머 시크릿은 인증에 자주 사용하는 내용임으로 util 클래스를 만들어 따로 관리 하고 다음과 같이 OauthUtil 클래스에 발급 받은 consumer key 와 consumer secret을 상수로 선언합니다. 아래의 URL들은 Oauth인증에 사용할 URL이기 때문에 이또한 Util class에 저장해 둡니다 .

7 다음 OAuth Oauth 인증 Oauth인증은 크게 다음과 같은 단계로 이루어 집니다. 1) 컨슈머 키와 컨슈머 시크릿을 통해서 리퀘스트 토큰을 얻습니다. 2) 획득한 리퀘스트 토큰을 통해 다음 로그인 창으로 이동하여 로그인을 합니다. 3) 로그인이 완료된 후에 컨슈머 등록시에 입력하였던 callback URL로 oauth_verifier를 가지고 이동합니다. 4) 이때 callback URL에서 oauth_verifier를 획득한후 Access Token URL로 요청하면 access token과 access token secret을 받아 옵니다. .

8 다음 OAuth index.jsp OAuthConsumer consumer = new DefaultOAuthConsumer(OauthUtil._CONSUMER_KEY, OauthUtil._CONSUMER_SECRET); OAuthProvider provider = new DefaultOAuthProvider (OauthUtil._REQUEST_TOKEN_URL, OauthUtil._ACCESS_TOKEN_URL, OauthUtil._AUTHORIZE_URL); //consumer 객체와 consumer 등록시 등록했던 callback URL을 입력 String oauthURL = provider.retrieveRequestToken (consumer, " //생성된 consumer객체와 provider객체를 세션에 저장한다. session.setAttribute("consumer", consumer); session.setAttribute("provider", provider); //Daum login 창으로 Redirect response.sendRedirect (oauthURL); .

9 다음 OAuth 로그인후 callback URL로 페이지가 이동하게 됩니다. Callback URL로 이동할때 AccessToken을 얻기 위해서 필요한 oauth_verifier를 parameter로 전달하게 되는데 이 parameter를 받아 AccessToken과 AccessTokenSecret을 생성해 주면 됩니다. 이렇게 발급 받은 AccessToken 과 AccessTokenSecret은 인증시(로그인) 매번 바뀌지 않고 계속 일정한 값을 유지합니다. 그렇기 때문에 한번 발급 받은 AccessToken과 AccessTokenSecret을 DB에 저장하거나 프로그램 상의 상수 값으로 고정시켜 로그인 과정없이 API를 사용할 수 있습니다. 간단한 컨수머 .

10 다음 OAuth . //parameter로 전달된 oauth_verifier를 저장
String oauthVerifier = request.getParameter("oauth_verifier"); OAuthConsumer consumer = (DefaultOAuthConsumer)session.getAttribute("consumer"); OAuthProvider provider = (DefaultOAuthProvider)session.getAttribute("provider"); if(oauthVerifier != null) { //파라미터로 전달된 oauth_verifier를 통해서 access Token을 생성합니다. provider.retrieveAccessToken(consumer, oauthVerifier.trim()); //getToken() method로 생성된 accessToken을 가져오고, //getTokenSecret() method로 accessTokenSecret을 가져와 session에 저장 session.setAttribute("accessToken", consumer.getToken()); session.setAttribute("accessTokenSecret", consumer.getTokenSecret()); } .


Download ppt "Oauth 인증 기술."

Similar presentations


Ads by Google