2010-07-19 2 views
19

우리는 API를 사용하여 웹 사이트를 운영하는 수많은 고객을 보유하고 있습니다.OAuth : 액세스 토큰 및 비밀번호 저장

인증 된 API 호출을 만들기 위해 OAuth 사용에 관한 대화를 시작했습니다. 우리는 두 가지 및 세 가지 다리가있는 흐름을 갖습니다.

3-legged flow의 경우 액세스 토큰과 암호를 저장하는 방법에 대한 합의가 아직 없습니다.

이 문제에 대한 일반적인 접근 방법은 클라이언트가 자신의 DB에 액세스 토큰과 암호를 저장하는 것이지만 클라이언트가 코드 변경 및 구현 문제를 다루지 않으므로 문제가되지 않습니다. 우리가 고려하고있는

다른 옵션 :

1) 세션을 저장 쿠키

2)에 토큰 및 비밀 액세스 저장.

나는 이것들 중 어느 것이 좋은 아이디어인지 확신 할 수 없다. 누구든지 어떤 제안이 있습니까?

감사합니다.

+0

나는이 :(액세스 토큰의 경우와 마찬가지로 보안상의 이유로 세션/쿠키를 사용하는 것이 개인적으로 두려워 –

답변

13

"서비스 공급자", "소비자"및 "사용자"유형의 설치에 대해 이야기하고 있다고 가정합니다. 고객 (고객)이 변경을 거부하는 경우 3 각형 oAuth를 구현할 수 있는지 여부는 알 수 없습니다.

세션과 쿠키가 토큰을 저장하는 데는 효과가 있지만 문제는 소비자가 아닌 고객 (고객)이 쿠키를 저장해야한다는 것입니다. API에 대한 호출이 백엔드에서 발생하므로 해당 범위 내에서 사용할 수있는 실제 세션이나 쿠키가 없습니다. 자바 스크립트 호출 만하는 경우에는 작동하지만 어쨌든 일반적으로 호출은 크로스 도메인 스크립팅 문제가 발생하지 않도록 프록시를 통해 수행됩니다.

토큰이 세션 또는 쿠키에 저장되어 있으면 "임시"키가되며 세션 또는 쿠키가 만료되면 사용자가 다시 인증해야합니다. 그러나 oAuth 스펙이있는 한 사용자가 다시 인증하는 것을 신경 쓰지 않는 한 아무 문제가 없습니다.

당신은 제이슨들이 인증에 필요한 토큰을 저장하지 않을 경우 소비자 응용 프로그램이 인증 된 요청을하는 것이 불가능 언급 한 바와 같이 Sample app for .NET written using MVC 5 Razor engine

1

참조 할 수 있습니다 - 그들이 원하는 방식으로 저장할 수 있지만,이 방정식의 일부입니다. 파일 시스템, memcache, 데이터베이스, 메모리가 될 수 있습니다.

이러한 쿠키를 저장하는 데 사용하는 유일한 방법은 소비자 응용 프로그램에서 사용자의 브라우저에 쿠키로 토큰 권한 정보를 설정하고 사용자가 요청할 때마다 소비자에게 다시 보내도록하는 것입니다. 그러나 이것은 불합리한 것으로 보입니다 먼저 소비자 응용 프로그램이이를 처리하기 위해 코드를 변경해야하며 두 번째로 토큰과 토큰 비밀 키가 네트워크와 사용자의 브라우저에서 중복으로 이동합니다. 사용자가 직접 결정하면 보안 구멍이 될 수 있습니다 해킹하지.

0

나는 3 각형 oauth를 구현할 때 동일한 문제가있었습니다. 액세스 토큰을 저장하기 위해 Google 데이터 스토어를 사용하여 Google App Engine &에 내 애플리케이션을 온라인으로 가져 왔습니다.

그러나 & 데이터를 저장하는 데 할당량은 here입니다. 그것은 Google App Engine을 사용하는 동안 유일한 제한입니다! 쿠키의 액세스 토큰과 비밀 저장

0

1)

은 당신의 클라이언트가 인터넷 카페에서 고려하고 그가 명확 쿠키와 다음 사람의 사본이 정보를 나던 후 무슨 일이?

내가 DB 또는 PHP 세션에 가고 싶어

관련 문제