SlideShare ist ein Scribd-Unternehmen logo
1 von 11
OAuth ( Open Authentuication )
OAuth프로토콜 등장
OAuth프로토콜 ‘누구’ Data 요청 클라이언트 애플리케이션 ( 컨수머) 서비스 프로바이더(프로그램) 사용자 정보 사용자정보 1. 데이터를 요청하는 ‘너’는 누구냐? 2. ‘누구’의 데이터를 요청하는가? 3. 그 ‘누구’의 허락은 받았나?
OAuth관련자
OAuth관련 키
OAuth인증 프로세스( 웹애플리케이션) * Naeyo : 클라이언트 애플리케이션 * 트위터: 서비스 프로바이더
OAuth인증 프로세스( 웹애플리케이션) OAuth.aspx 0. UI 페이지에서 “트위터 연결” 버튼을 클릭하면 “Oauth.aspx” 페이지가 호출된다.  1. 설정 파일에 ConsumerKey와 ConsumerSecret를 저장해놓은 정보를 읽어온다. string consumerKey = ConfigurationManager.AppSettings["ConsumerKey"]; string consumerSecret = ConfigurationManager.AppSettings["ConsumerSecret"];  2. ConsumerKey , ConsumerSecret값을 이용해서 Request token을 트위터로부터 구한다.  Twitterizer라이브러리의 GetRequestToken()을호출해서 Request token을 구한다. 메소드호출시, 트위터로부터호출받을 페이지 TokenData.aspx에 대한 주소( 콜백URL) 를 함께 넘긴다.  OAuthTokenResponseort =  OAuthUtility.GetRequestToken( consumerKey,  consumerSecret,  addr+ "TokenData.aspx?user=" + user + "&TweetUse=" + exist); GetRequestToken()은 내부적으로 https://api.twitter.com/oauth/request_token호출을 수행한다. 반환값OAuthTokenResponse의Token 속성을 통해서 Request token값을 구한다. 3. 2.단계에서 구한 Request token을 이용해서, 트위터를 향해서 엔드 유저가 ID/PWD를 입력할 수 있는 트위터로그인창을 띄울 수 있도록 한다.  Uri uri = OAuthUtility.BuildAuthorizationUri(ort.Token); Response.Redirect(uri.AbsoluteUri); Twitterizer라이브러리의 BuildAuthorizationUrl() 메소드는https://twitter.com/oauth/Authorize에 대한 호출을 수행한다. 트위터로 넘겨지는 파라미터: ConsumerKey, ConsumerSecret, Reqeust  token 임시키( Request token) 발급받기 사용자 계정 정보 입력받기 사용자 인증키( Access key ) 발급받기
OAuth인증 프로세스( 웹애플리케이션) https://twitter.com/oauth/authorize?oauth_token=yDwlnvhZqgJ69E3EUvxz3ZOpMlS0Ia2TGTZRna0 트위터는 이 요청을 받게 되면, 엔드 유저 로그인 창을 띄운다.  트위터 인증 수행  사용자가 입력한 트위터 계정 정보( id / pwd )를 이용해서 인증 처리를 수행한다. 컨슈머로부터건네받은컨슈머 정보( Consumerkey, ConsumerSecret), 임시 요청키(Request token) 를 이용해서 트위터내부적으로 엔드 유저에 대한 연결 정보를 업데이트 한다.  트위터는 인증을 수행하고 나면 컨슈머에서 보낸 콜백 페이지( TokenData.aspx )를 호출한다.  임시키( Request token) 발급받기 사용자 계정 정보 입력받기 사용자 인증키( Access key ) 발급받기
OAuth인증 프로세스( 웹애플리케이션) TokenData.aspx 트위터로부터건네받은 인자 조회 string requestToken = Request.QueryString["oauth_token"]; string accessVerifier = Request.QueryString["oauth_verifier"]; 2. 트위터로 다시 Access token을 조회한다.   OAuthTokenResponseaccessTokenResponse = OAuthUtility.GetAccessToken(consumerKey, consumerSecret, requestToken, accessVerifier); 반환받은OAuthToekenResponse객체의 속성.Token, .TokenSecret을 통해서 Access token/ secret 값을 구할 수 있다.  임시키( Request token) 발급받기 사용자 계정 정보 입력받기 사용자 인증키( Access key ) 발급받기
트위터 업데이트 트위터와 연결 설정 후 트위터의 오픈 API를  이용해서 글을 올리는 작업 1. DB에 저장한 사용자의 AccessToken,AccessTokenSecret를  가져온다. DataTabledtOauthInfo= _TweetMgmtBsl.SelectUserOAuthInfo(userId, serviceName); 2. Twitterizer의 토큰 객체 OAuthTokens생성 OAuthTokensauthToken = new OAuthTokens(); //DB값 조회 authToken.AccessToken = dtOauthInfo.Rows[0]["OAUTH_TOKEN"].ToString(); authToken.AccessTokenSecret = dtOauthInfo.Rows[0]["OAUTH_SECRET"].ToString(); //웹 애플리케이션 설정 파일 조회 authToken.ConsumerKey = ConfigurationManager.AppSettings["ConsumerKey"]; authToken.ConsumerSecret = ConfigurationManager.AppSettings["ConsumerSecret"]; 3. Twitterizer의 TwitterStatus.Update() 메소드를 호출해서 트위터에 새로운 글을 올린다. TwitterResponse<TwitterStatus> tss = TwitterStatus.Update(authToken, text); 임시키( Request token) 발급받기 사용자 계정 정보 입력받기 사용자 인증키( Access key ) 발급받기 트위터에 글쓰기
OAuth인증 프로세스

Weitere ähnliche Inhalte

Andere mochten auch

OAuth - GDG Korea Women 2014 첫 스터디
OAuth - GDG Korea Women 2014 첫 스터디OAuth - GDG Korea Women 2014 첫 스터디
OAuth - GDG Korea Women 2014 첫 스터디Jua Alice Kim
 
OAuth 2.0 and OpenId Connect
OAuth 2.0 and OpenId ConnectOAuth 2.0 and OpenId Connect
OAuth 2.0 and OpenId ConnectSaran Doraiswamy
 
Opensource realm soscon
Opensource realm sosconOpensource realm soscon
Opensource realm sosconMinwoo Park
 
당신의 인생에 오픈소스를 더하라 - OSCON 발표자 뒷담화
당신의 인생에 오픈소스를 더하라 - OSCON 발표자 뒷담화당신의 인생에 오픈소스를 더하라 - OSCON 발표자 뒷담화
당신의 인생에 오픈소스를 더하라 - OSCON 발표자 뒷담화Minwoo Park
 
Token, token... From SAML to OIDC
Token, token... From SAML to OIDCToken, token... From SAML to OIDC
Token, token... From SAML to OIDCShiu-Fun Poon
 
컨퍼런스는 무엇으로 하는가: 스폰서쉽에 대해
컨퍼런스는 무엇으로 하는가: 스폰서쉽에 대해컨퍼런스는 무엇으로 하는가: 스폰서쉽에 대해
컨퍼런스는 무엇으로 하는가: 스폰서쉽에 대해Minwoo Park
 
Daum 로그인 API (함태윤)
Daum 로그인 API (함태윤)Daum 로그인 API (함태윤)
Daum 로그인 API (함태윤)Daum DNA
 
Daum OAuth 2.0
Daum OAuth 2.0Daum OAuth 2.0
Daum OAuth 2.0Daum DNA
 
Openid & Oauth: An Introduction
Openid & Oauth: An IntroductionOpenid & Oauth: An Introduction
Openid & Oauth: An IntroductionSteve Ivy
 
Mit 2014 introduction to open id connect and o-auth 2
Mit 2014   introduction to open id connect and o-auth 2Mit 2014   introduction to open id connect and o-auth 2
Mit 2014 introduction to open id connect and o-auth 2Justin Richer
 
OpenID overview
OpenID overviewOpenID overview
OpenID overviewRock Kang
 
[Hello world 오픈 세미나]oauth
[Hello world 오픈 세미나]oauth[Hello world 오픈 세미나]oauth
[Hello world 오픈 세미나]oauthNAVER D2
 
Building an SSO platform in php (Zendcon 2010)
Building an SSO platform in php (Zendcon 2010)Building an SSO platform in php (Zendcon 2010)
Building an SSO platform in php (Zendcon 2010)Ivo Jansch
 
111 n grinder-deview_day1_track1_session_1_ver_2
111 n grinder-deview_day1_track1_session_1_ver_2111 n grinder-deview_day1_track1_session_1_ver_2
111 n grinder-deview_day1_track1_session_1_ver_2NAVER D2
 
Implementing OAuth with PHP
Implementing OAuth with PHPImplementing OAuth with PHP
Implementing OAuth with PHPLorna Mitchell
 
SAML Protocol Overview
SAML Protocol OverviewSAML Protocol Overview
SAML Protocol OverviewMike Schwartz
 
OAuth - Don’t Throw the Baby Out with the Bathwater
OAuth - Don’t Throw the Baby Out with the Bathwater OAuth - Don’t Throw the Baby Out with the Bathwater
OAuth - Don’t Throw the Baby Out with the Bathwater Apigee | Google Cloud
 

Andere mochten auch (20)

OpenID and OAuth
OpenID and OAuthOpenID and OAuth
OpenID and OAuth
 
OAuth - GDG Korea Women 2014 첫 스터디
OAuth - GDG Korea Women 2014 첫 스터디OAuth - GDG Korea Women 2014 첫 스터디
OAuth - GDG Korea Women 2014 첫 스터디
 
OAuth 2.0 and OpenId Connect
OAuth 2.0 and OpenId ConnectOAuth 2.0 and OpenId Connect
OAuth 2.0 and OpenId Connect
 
Opensource realm soscon
Opensource realm sosconOpensource realm soscon
Opensource realm soscon
 
당신의 인생에 오픈소스를 더하라 - OSCON 발표자 뒷담화
당신의 인생에 오픈소스를 더하라 - OSCON 발표자 뒷담화당신의 인생에 오픈소스를 더하라 - OSCON 발표자 뒷담화
당신의 인생에 오픈소스를 더하라 - OSCON 발표자 뒷담화
 
Token, token... From SAML to OIDC
Token, token... From SAML to OIDCToken, token... From SAML to OIDC
Token, token... From SAML to OIDC
 
컨퍼런스는 무엇으로 하는가: 스폰서쉽에 대해
컨퍼런스는 무엇으로 하는가: 스폰서쉽에 대해컨퍼런스는 무엇으로 하는가: 스폰서쉽에 대해
컨퍼런스는 무엇으로 하는가: 스폰서쉽에 대해
 
Analyzing OAuth
Analyzing OAuthAnalyzing OAuth
Analyzing OAuth
 
Daum 로그인 API (함태윤)
Daum 로그인 API (함태윤)Daum 로그인 API (함태윤)
Daum 로그인 API (함태윤)
 
learn-python
learn-pythonlearn-python
learn-python
 
Daum OAuth 2.0
Daum OAuth 2.0Daum OAuth 2.0
Daum OAuth 2.0
 
Openid & Oauth: An Introduction
Openid & Oauth: An IntroductionOpenid & Oauth: An Introduction
Openid & Oauth: An Introduction
 
Mit 2014 introduction to open id connect and o-auth 2
Mit 2014   introduction to open id connect and o-auth 2Mit 2014   introduction to open id connect and o-auth 2
Mit 2014 introduction to open id connect and o-auth 2
 
OpenID overview
OpenID overviewOpenID overview
OpenID overview
 
[Hello world 오픈 세미나]oauth
[Hello world 오픈 세미나]oauth[Hello world 오픈 세미나]oauth
[Hello world 오픈 세미나]oauth
 
Building an SSO platform in php (Zendcon 2010)
Building an SSO platform in php (Zendcon 2010)Building an SSO platform in php (Zendcon 2010)
Building an SSO platform in php (Zendcon 2010)
 
111 n grinder-deview_day1_track1_session_1_ver_2
111 n grinder-deview_day1_track1_session_1_ver_2111 n grinder-deview_day1_track1_session_1_ver_2
111 n grinder-deview_day1_track1_session_1_ver_2
 
Implementing OAuth with PHP
Implementing OAuth with PHPImplementing OAuth with PHP
Implementing OAuth with PHP
 
SAML Protocol Overview
SAML Protocol OverviewSAML Protocol Overview
SAML Protocol Overview
 
OAuth - Don’t Throw the Baby Out with the Bathwater
OAuth - Don’t Throw the Baby Out with the Bathwater OAuth - Don’t Throw the Baby Out with the Bathwater
OAuth - Don’t Throw the Baby Out with the Bathwater
 

Ähnlich wie OAuth

안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API 안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API Gosu Ok
 
Open api개발을 위한 자료1
Open api개발을 위한 자료1Open api개발을 위한 자료1
Open api개발을 위한 자료1도성 김
 
Week7. sso and oauth
Week7. sso and oauthWeek7. sso and oauth
Week7. sso and oauthHansolJang5
 
SNS API분석 : OAuth 분석
SNS API분석 : OAuth 분석SNS API분석 : OAuth 분석
SNS API분석 : OAuth 분석jw Yoon
 
.NET에서 Twitter 프로그래밍
.NET에서 Twitter 프로그래밍.NET에서 Twitter 프로그래밍
.NET에서 Twitter 프로그래밍흥배 최
 
Clova extension에서 OAuth 계정 연동 구현
Clova extension에서 OAuth 계정 연동 구현Clova extension에서 OAuth 계정 연동 구현
Clova extension에서 OAuth 계정 연동 구현Gosu Ok
 
모바일게임 플랫폼 쉽게 개발하기 :: 박선용 :: Gaming on AWS 2016
모바일게임 플랫폼 쉽게 개발하기 :: 박선용 :: Gaming on AWS 2016모바일게임 플랫폼 쉽게 개발하기 :: 박선용 :: Gaming on AWS 2016
모바일게임 플랫폼 쉽게 개발하기 :: 박선용 :: Gaming on AWS 2016Amazon Web Services Korea
 
웹프로그래밍 트랙소개
웹프로그래밍 트랙소개웹프로그래밍 트랙소개
웹프로그래밍 트랙소개지수 윤
 

Ähnlich wie OAuth (9)

안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API 안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
안드로이드 OAuth 1.0a, 2.0 구현 - Naver, Google API
 
Open api개발을 위한 자료1
Open api개발을 위한 자료1Open api개발을 위한 자료1
Open api개발을 위한 자료1
 
Week7. sso and oauth
Week7. sso and oauthWeek7. sso and oauth
Week7. sso and oauth
 
SNS API분석 : OAuth 분석
SNS API분석 : OAuth 분석SNS API분석 : OAuth 분석
SNS API분석 : OAuth 분석
 
.NET에서 Twitter 프로그래밍
.NET에서 Twitter 프로그래밍.NET에서 Twitter 프로그래밍
.NET에서 Twitter 프로그래밍
 
Passkey
PasskeyPasskey
Passkey
 
Clova extension에서 OAuth 계정 연동 구현
Clova extension에서 OAuth 계정 연동 구현Clova extension에서 OAuth 계정 연동 구현
Clova extension에서 OAuth 계정 연동 구현
 
모바일게임 플랫폼 쉽게 개발하기 :: 박선용 :: Gaming on AWS 2016
모바일게임 플랫폼 쉽게 개발하기 :: 박선용 :: Gaming on AWS 2016모바일게임 플랫폼 쉽게 개발하기 :: 박선용 :: Gaming on AWS 2016
모바일게임 플랫폼 쉽게 개발하기 :: 박선용 :: Gaming on AWS 2016
 
웹프로그래밍 트랙소개
웹프로그래밍 트랙소개웹프로그래밍 트랙소개
웹프로그래밍 트랙소개
 

Mehr von InGuen Hwang

01. 워크샵 행복과 아이교육 01
01. 워크샵   행복과 아이교육 0101. 워크샵   행복과 아이교육 01
01. 워크샵 행복과 아이교육 01InGuen Hwang
 
02. 워크샵 아이 교육 big picture 01
02. 워크샵   아이 교육 big picture 0102. 워크샵   아이 교육 big picture 01
02. 워크샵 아이 교육 big picture 01InGuen Hwang
 
행복과 자녀 교육
행복과 자녀 교육행복과 자녀 교육
행복과 자녀 교육InGuen Hwang
 
네트워크와 보안
네트워크와 보안네트워크와 보안
네트워크와 보안InGuen Hwang
 
01. kpi기반의 정량적 성능 평가 체계 구축
01. kpi기반의 정량적 성능 평가 체계 구축01. kpi기반의 정량적 성능 평가 체계 구축
01. kpi기반의 정량적 성능 평가 체계 구축InGuen Hwang
 
01.windows 보안(접근제어모델 리뷰) 2016.05.25
01.windows 보안(접근제어모델 리뷰)   2016.05.2501.windows 보안(접근제어모델 리뷰)   2016.05.25
01.windows 보안(접근제어모델 리뷰) 2016.05.25InGuen Hwang
 
윈도우 클라이언트 자동 업데이트 설정
윈도우 클라이언트 자동 업데이트 설정윈도우 클라이언트 자동 업데이트 설정
윈도우 클라이언트 자동 업데이트 설정InGuen Hwang
 
노트북 응답 속도 문제 덤프 추출테스트 이력
노트북 응답 속도 문제 덤프 추출테스트 이력노트북 응답 속도 문제 덤프 추출테스트 이력
노트북 응답 속도 문제 덤프 추출테스트 이력InGuen Hwang
 
.net 웹어플리케이션 예외정보 노출 방지
.net 웹어플리케이션 예외정보 노출 방지.net 웹어플리케이션 예외정보 노출 방지
.net 웹어플리케이션 예외정보 노출 방지InGuen Hwang
 
05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크InGuen Hwang
 
04. it정보화전략-어플리케이션 아키텍처
04. it정보화전략-어플리케이션 아키텍처04. it정보화전략-어플리케이션 아키텍처
04. it정보화전략-어플리케이션 아키텍처InGuen Hwang
 
03. it정보화전략-솔루션 도입
03. it정보화전략-솔루션 도입03. it정보화전략-솔루션 도입
03. it정보화전략-솔루션 도입InGuen Hwang
 
02. it정보화전략-보안 아키텍처 도입
02. it정보화전략-보안 아키텍처 도입02. it정보화전략-보안 아키텍처 도입
02. it정보화전략-보안 아키텍처 도입InGuen Hwang
 
01. it정보화전략-it 기술기반 도입 계획
01. it정보화전략-it 기술기반 도입 계획01. it정보화전략-it 기술기반 도입 계획
01. it정보화전략-it 기술기반 도입 계획InGuen Hwang
 
00. it정보화전략-들어가기
00. it정보화전략-들어가기00. it정보화전략-들어가기
00. it정보화전략-들어가기InGuen Hwang
 
Sha 2 기반 인증서 업그레이드 이해
Sha 2 기반 인증서 업그레이드 이해Sha 2 기반 인증서 업그레이드 이해
Sha 2 기반 인증서 업그레이드 이해InGuen Hwang
 
IT전략계획-04.보안 아키텍처
IT전략계획-04.보안 아키텍처IT전략계획-04.보안 아키텍처
IT전략계획-04.보안 아키텍처InGuen Hwang
 
IT전략계획- 03.IT 도입계획
IT전략계획- 03.IT 도입계획IT전략계획- 03.IT 도입계획
IT전략계획- 03.IT 도입계획InGuen Hwang
 
IT전략계획- 02.정보전략계획(isp)
IT전략계획- 02.정보전략계획(isp)IT전략계획- 02.정보전략계획(isp)
IT전략계획- 02.정보전략계획(isp)InGuen Hwang
 

Mehr von InGuen Hwang (20)

01. 워크샵 행복과 아이교육 01
01. 워크샵   행복과 아이교육 0101. 워크샵   행복과 아이교육 01
01. 워크샵 행복과 아이교육 01
 
02. 워크샵 아이 교육 big picture 01
02. 워크샵   아이 교육 big picture 0102. 워크샵   아이 교육 big picture 01
02. 워크샵 아이 교육 big picture 01
 
행복과 자녀 교육
행복과 자녀 교육행복과 자녀 교육
행복과 자녀 교육
 
암호화
암호화암호화
암호화
 
네트워크와 보안
네트워크와 보안네트워크와 보안
네트워크와 보안
 
01. kpi기반의 정량적 성능 평가 체계 구축
01. kpi기반의 정량적 성능 평가 체계 구축01. kpi기반의 정량적 성능 평가 체계 구축
01. kpi기반의 정량적 성능 평가 체계 구축
 
01.windows 보안(접근제어모델 리뷰) 2016.05.25
01.windows 보안(접근제어모델 리뷰)   2016.05.2501.windows 보안(접근제어모델 리뷰)   2016.05.25
01.windows 보안(접근제어모델 리뷰) 2016.05.25
 
윈도우 클라이언트 자동 업데이트 설정
윈도우 클라이언트 자동 업데이트 설정윈도우 클라이언트 자동 업데이트 설정
윈도우 클라이언트 자동 업데이트 설정
 
노트북 응답 속도 문제 덤프 추출테스트 이력
노트북 응답 속도 문제 덤프 추출테스트 이력노트북 응답 속도 문제 덤프 추출테스트 이력
노트북 응답 속도 문제 덤프 추출테스트 이력
 
.net 웹어플리케이션 예외정보 노출 방지
.net 웹어플리케이션 예외정보 노출 방지.net 웹어플리케이션 예외정보 노출 방지
.net 웹어플리케이션 예외정보 노출 방지
 
05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크05. it정보화전략-어플리케이션 프레임워크
05. it정보화전략-어플리케이션 프레임워크
 
04. it정보화전략-어플리케이션 아키텍처
04. it정보화전략-어플리케이션 아키텍처04. it정보화전략-어플리케이션 아키텍처
04. it정보화전략-어플리케이션 아키텍처
 
03. it정보화전략-솔루션 도입
03. it정보화전략-솔루션 도입03. it정보화전략-솔루션 도입
03. it정보화전략-솔루션 도입
 
02. it정보화전략-보안 아키텍처 도입
02. it정보화전략-보안 아키텍처 도입02. it정보화전략-보안 아키텍처 도입
02. it정보화전략-보안 아키텍처 도입
 
01. it정보화전략-it 기술기반 도입 계획
01. it정보화전략-it 기술기반 도입 계획01. it정보화전략-it 기술기반 도입 계획
01. it정보화전략-it 기술기반 도입 계획
 
00. it정보화전략-들어가기
00. it정보화전략-들어가기00. it정보화전략-들어가기
00. it정보화전략-들어가기
 
Sha 2 기반 인증서 업그레이드 이해
Sha 2 기반 인증서 업그레이드 이해Sha 2 기반 인증서 업그레이드 이해
Sha 2 기반 인증서 업그레이드 이해
 
IT전략계획-04.보안 아키텍처
IT전략계획-04.보안 아키텍처IT전략계획-04.보안 아키텍처
IT전략계획-04.보안 아키텍처
 
IT전략계획- 03.IT 도입계획
IT전략계획- 03.IT 도입계획IT전략계획- 03.IT 도입계획
IT전략계획- 03.IT 도입계획
 
IT전략계획- 02.정보전략계획(isp)
IT전략계획- 02.정보전략계획(isp)IT전략계획- 02.정보전략계획(isp)
IT전략계획- 02.정보전략계획(isp)
 

OAuth

  • 1. OAuth ( Open Authentuication )
  • 3. OAuth프로토콜 ‘누구’ Data 요청 클라이언트 애플리케이션 ( 컨수머) 서비스 프로바이더(프로그램) 사용자 정보 사용자정보 1. 데이터를 요청하는 ‘너’는 누구냐? 2. ‘누구’의 데이터를 요청하는가? 3. 그 ‘누구’의 허락은 받았나?
  • 6. OAuth인증 프로세스( 웹애플리케이션) * Naeyo : 클라이언트 애플리케이션 * 트위터: 서비스 프로바이더
  • 7. OAuth인증 프로세스( 웹애플리케이션) OAuth.aspx 0. UI 페이지에서 “트위터 연결” 버튼을 클릭하면 “Oauth.aspx” 페이지가 호출된다. 1. 설정 파일에 ConsumerKey와 ConsumerSecret를 저장해놓은 정보를 읽어온다. string consumerKey = ConfigurationManager.AppSettings["ConsumerKey"]; string consumerSecret = ConfigurationManager.AppSettings["ConsumerSecret"]; 2. ConsumerKey , ConsumerSecret값을 이용해서 Request token을 트위터로부터 구한다. Twitterizer라이브러리의 GetRequestToken()을호출해서 Request token을 구한다. 메소드호출시, 트위터로부터호출받을 페이지 TokenData.aspx에 대한 주소( 콜백URL) 를 함께 넘긴다. OAuthTokenResponseort = OAuthUtility.GetRequestToken( consumerKey, consumerSecret, addr+ "TokenData.aspx?user=" + user + "&TweetUse=" + exist); GetRequestToken()은 내부적으로 https://api.twitter.com/oauth/request_token호출을 수행한다. 반환값OAuthTokenResponse의Token 속성을 통해서 Request token값을 구한다. 3. 2.단계에서 구한 Request token을 이용해서, 트위터를 향해서 엔드 유저가 ID/PWD를 입력할 수 있는 트위터로그인창을 띄울 수 있도록 한다. Uri uri = OAuthUtility.BuildAuthorizationUri(ort.Token); Response.Redirect(uri.AbsoluteUri); Twitterizer라이브러리의 BuildAuthorizationUrl() 메소드는https://twitter.com/oauth/Authorize에 대한 호출을 수행한다. 트위터로 넘겨지는 파라미터: ConsumerKey, ConsumerSecret, Reqeust token 임시키( Request token) 발급받기 사용자 계정 정보 입력받기 사용자 인증키( Access key ) 발급받기
  • 8. OAuth인증 프로세스( 웹애플리케이션) https://twitter.com/oauth/authorize?oauth_token=yDwlnvhZqgJ69E3EUvxz3ZOpMlS0Ia2TGTZRna0 트위터는 이 요청을 받게 되면, 엔드 유저 로그인 창을 띄운다. 트위터 인증 수행 사용자가 입력한 트위터 계정 정보( id / pwd )를 이용해서 인증 처리를 수행한다. 컨슈머로부터건네받은컨슈머 정보( Consumerkey, ConsumerSecret), 임시 요청키(Request token) 를 이용해서 트위터내부적으로 엔드 유저에 대한 연결 정보를 업데이트 한다. 트위터는 인증을 수행하고 나면 컨슈머에서 보낸 콜백 페이지( TokenData.aspx )를 호출한다. 임시키( Request token) 발급받기 사용자 계정 정보 입력받기 사용자 인증키( Access key ) 발급받기
  • 9. OAuth인증 프로세스( 웹애플리케이션) TokenData.aspx 트위터로부터건네받은 인자 조회 string requestToken = Request.QueryString["oauth_token"]; string accessVerifier = Request.QueryString["oauth_verifier"]; 2. 트위터로 다시 Access token을 조회한다. OAuthTokenResponseaccessTokenResponse = OAuthUtility.GetAccessToken(consumerKey, consumerSecret, requestToken, accessVerifier); 반환받은OAuthToekenResponse객체의 속성.Token, .TokenSecret을 통해서 Access token/ secret 값을 구할 수 있다. 임시키( Request token) 발급받기 사용자 계정 정보 입력받기 사용자 인증키( Access key ) 발급받기
  • 10. 트위터 업데이트 트위터와 연결 설정 후 트위터의 오픈 API를 이용해서 글을 올리는 작업 1. DB에 저장한 사용자의 AccessToken,AccessTokenSecret를 가져온다. DataTabledtOauthInfo= _TweetMgmtBsl.SelectUserOAuthInfo(userId, serviceName); 2. Twitterizer의 토큰 객체 OAuthTokens생성 OAuthTokensauthToken = new OAuthTokens(); //DB값 조회 authToken.AccessToken = dtOauthInfo.Rows[0]["OAUTH_TOKEN"].ToString(); authToken.AccessTokenSecret = dtOauthInfo.Rows[0]["OAUTH_SECRET"].ToString(); //웹 애플리케이션 설정 파일 조회 authToken.ConsumerKey = ConfigurationManager.AppSettings["ConsumerKey"]; authToken.ConsumerSecret = ConfigurationManager.AppSettings["ConsumerSecret"]; 3. Twitterizer의 TwitterStatus.Update() 메소드를 호출해서 트위터에 새로운 글을 올린다. TwitterResponse<TwitterStatus> tss = TwitterStatus.Update(authToken, text); 임시키( Request token) 발급받기 사용자 계정 정보 입력받기 사용자 인증키( Access key ) 발급받기 트위터에 글쓰기