2013-03-01 11 views
2

<context> 나는 어제 좌절감을 느꼈고 동료 동료들에 의해 신속하게 (그리고 적절하게) 닫히고 삭제 된 불꽃 질문을 게시했다. 야후! 표준 PlaceFinder API 끝점을 해제하고 유료 서비스로 대체했습니다. 그것이 나를 좌절시키는 부분은 아니지만 OAuth를 요구하도록 액세스 모델을 변경 한 것은 대부분 사실이었습니다.Yahoo! PlaceFinder에 OAuth의 적절한 사용 사례가 있습니까?

당신이, OAuth를 사용자를위한 더 의존 API의의 중단 된에 눈을 떼지 않았다, 그것을 빨아 내 질문의 클로저 중 하나의 효과에 어떤 댓글을 달았습니다. 나는 그들이 먼저 API는 지난 해 10 월/11 월에 다시 중단 발표 때 다시 깨진 링크를 가지고 야후를 비난하여 내 API 관찰의 사실을 주장 할 수 있지만

, 나는 그것을 시도하는 것이 더 생산적 일 것이라고 생각 이것을 지적인 질문으로 바꾸십시오. </context>

OAuth를 사용했습니다. 나는 OAuth를 좋아한다. 사용자 인증을하고 응용 프로그램의 사인 온을 단순화 할뿐만 아니라 다른 응용 프로그램에서 해당 사용자의 데이터에 액세스 할 수있는 권한을 요청할 수 있습니다. 그러나 PlaceFinder 데이터는 비공개 사용자 데이터가 아닙니다. 그것은 모든 사람들이 공유 할 수있는 알려진 지명과 글로벌 식별자 (WOE ID)입니다.

오늘 아침에 야후! BOSS GEO가 내 신용 카드 정보를 테스트하고 OAuth API 소비자를 자극하여 테스트 해 보았습니다. 나는 예전에 사용했던 DotNetOpenAuth으로 시작했습니다. Yahoo!의 OAuth guide을 읽고 Yahoo!의 OAuth 6.1, 6.2 및 6.3 끝점 URL이 모두 포함 된 DotNetOpenAuth.OAuth.ServiceProviderDescription 인스턴스를 만들었습니다. 그런 다음 DotNetOpenAuth.OAuth.WebConsumer을 사용하여 PlaceFinder API를 사용하고 Yahoo!에 돈을 지불하는 방법을 알아 내려고 노력했습니다.

하지만 작동하지 않았습니다. 나는 많은인지 부조화를 극복해야했고, 결국 널리 사용되고 널리 사용되는 DotNetOpenAuth 라이브러리의 한계 또는 OAuth의 오용 가능성을 극복해야했습니다. BOSS documentationBOSS GEO documentation과 별개임을 깨닫고 C# code sample that worked to consume Yahoo!'s PlaceFinder API을 발견했을 때 나는 불협화음이 어디에서 왔는지를 발견했습니다.

Yahoo!의 PlaceFinder API는 OAuth를 사용하지만 API의 끝점 또는 데이터를 가져 오기 위해 액세스 토큰이 필요하지 않습니다. PlaceFinder 요청을 보내면 타임 스탬프, 논스 및 서명 과 함께 앱의 모든 정보 (고객 키 및 비밀번호)를 PlaceFinder 끝점에 전송합니다. 과거에 OAuth를 사용했을 때 이러한 요소는 6.1 엔드 포인트로 전송되어 요청 토큰을 받았습니다. 그런 다음이를 사용하여 사용자를 인증 (6.2)하고 액세스 토큰 (6.3)을 얻어 추가 요청을 할 수 있습니다.

DotNetOpenAuth의 한계는 내가 지금까지 극복 할 수 없기 때문에 내가 무지하고 잘못하고있는 경우 여기 말해주세요. sample C# code on Yahoo!'s site에서 DotNetOpenAuth를 사용하고 있지 않습니다. 대신 그들은 nonce, 타임 스탬프 및 서명을 생성하는 데 사용할 수있는 OAuthBase 클래스가 있습니다. 그러나 은 액세스 토큰 및 암호에 대해 빈 문자열을 보냅니다. DotNetOpenAuth를 사용하여이 작업을 시도했지만 null 또는 빈 액세스 토큰을 사용하여 요청을 구성 할 수는 없습니다.

그래서 질문 : OAuth 표준을 부적절하게 사용합니까? 그렇지 않은 경우 DotNetOpenAuth 라이브러리에 RequestToken (6.1) 이외의 엔드 포인트에 권한이없는 요청을 보낼 수 없게하는 제한이 있습니까? 이 두 가지에 대한 대답이 아니오 인 경우 DotNetOpenAuth를 사용하여 액세스 토큰이나 암호를 보내지 않고도 PlaceFinder 데이터를 요청할 수 있습니까?

답변

0

위대한 질문입니다. 내가 OAuth는이 두 가지 이점 번 BOSS에 가입 한 후 여러 서비스에 대한 해당 키를 사용할 수 있기 때문에

  1. 와 BOSS 개발자를 제공합니다 생각, 보스 팀에 토큰을 필요로 더 많은 서비스를 제공 할 수있는 유연성을하고 싶어 미래. get a go에서 oAuth를 시작하는 것은 유연성을 허용했습니다.

  2. 팀에서는 네트워크 통신 중에 키가 스니핑되지 않도록하고 싶었습니다. 요청이 서명되고 실제 키가 전달되지 않으므로 스니핑이 발생하지 않도록 할 수 있습니다.

DotNetOpenAuth에서 질문에 관해서는 BOSS Y! 그룹 (http://tech.groups.yahoo.com/group/ysearchboss/) 우리는 당신에게 조언 할 수있는 C#, VB.Net로 작성한 많은 사람들이 있기 때문에. 실제로 그것은 VB.Net oAuth 라이브러리 (http://oauth.googlecode.com/svn/code/vbnet/oAuth.vb)에 약간의 문제가 있음이 잘 알려져 있습니다.

+1

1)처럼 이전 URL의 적절한 자리에 야후는에서 바로 OAuth를 시작하지 않았다 가자. 그들은 그것으로 전환했다. 2.) Plain HTTPS는 서명 된 요청보다 간단하게이를 해결할 수있었습니다. 3.) ysearchboss 그룹에 게시하고 응답을받지 못했습니다. 4.) 귀하의 대답을 듣고 나는 실제로 이것이 oAuth를 적절하게 사용하지 못한다는 것입니다. 그게 당신이 말하는거야? – danludwig

0

yahoo에서 사용하는 두 가지 유형의 oAth가 ​​있습니다. 하나는 열쇠가 필요 하나는 그렇지 않습니다. 일반적인 API를 사용하지 않는 것이 좋을 것입니다. 그냥 보안 프로토콜 HTTP를 추가 : // -> https : //로 다음 장소/공공/

https://somePartOfURL/public/otherPartOfURL