Google API에서 웹 앱에 ClientLogin을 사용하는 것이 나쁜 생각 인 이유는 무엇입니까?

StackOverflow https://stackoverflow.com/questions/2226288

문제

오늘 방금 Google API를 집어 들기 위해 당사 사이트의 일부 사용자는 자신의 조직 YouTube 계정에 비디오를 업로드합니다. 사용자가 사용자 이름과 비밀번호를 알고 싶지는 않지만 비디오를 YouTube에 업로드하려는 경우 옵션을 제공합니다. 그들이 선택하면 확인란을 확인하고 제출 버튼을 누릅니다.

개발자 안내서에서 계속보고있는 ClientLogin은 내가하고 싶은 일을 구현하는 최선의 옵션처럼 보이는 ClientLogin이 Web Applicationon에서 사용자 인증에 좋은 아이디어가 아님을 계속보고 있습니다. "웹 애플리케이션을위한 Authsub"는 내가 구현하고 싶은 최고의 메커니즘이 아닌 것 같습니다!

무엇을 해야하는지에 대한 아이디어가 있습니까?

고맙습니다

도움이 되었습니까?

해결책

Google API 및 기타 비디오 서비스 제공 업체 API를 사용한 후 API는 인증에 대해 많은 것을 배웠습니다. OAUTH 및 AUTSUB는 Google이 사용자 계정에 타사 웹 애플리케이션을 인증하는 데 사용하는 두 가지 방법입니다.

과정은 처음에는 지저분 해 보일 수 있지만 일단 이해하면 너무 나쁘지는 않습니다. 다음 이미지는 Authsub 프로세스를 보여줍니다.

alt text

  1. 웹 애플리케이션이 사용자의 Google 서비스에 액세스 해야하는 경우 Google의 권한 부여 대리 서비스에 인증을 호출합니다.
  2. 인증 서비스는 액세스 요청 페이지를 제공하여 응답합니다. 이 Google 관리 페이지는 사용자에게 Google 서비스에 대한 액세스를 부여/거부하도록 유도합니다. 사용자는 먼저 계정에 로그인하도록 요청받을 수 있습니다.
  3. 사용자는 웹 응용 프로그램에 대한 액세스를 부여할지 거부할지 결정합니다. 사용자가 액세스를 거부하면 웹 응용 프로그램으로 돌아 가기보다는 Google 페이지로 향합니다.
  4. 사용자가 액세스 권한을 부여하는 경우, 인증 서비스는 사용자를 웹 응용 프로그램으로 다시 리디렉션합니다. 리디렉션에는 한 번 사용하기에 좋은 권한 토큰이 포함되어 있습니다. 오래된 토큰으로 교환 할 수 있습니다.
  5. 웹 애플리케이션은 권한 부여 토큰을 사용하여 사용자의 에이전트 역할을하는 요청과 함께 Google 서비스에 연락합니다.
  6. Google 서비스가 토큰을 인식하면 요청 된 데이터를 제공합니다.

http://code.google.com/apis/accounts/docs/authsub.html#authprocess

인증 요청을 요청하고 사용자가 자신의 Google 계정에 서명 할 때, 신청서가 자신의 계정에서 작업을 수행 할 수있는 권한을 부여하기 전에, 도메인이 Google에 등록되지 않은 경우 사용자는 그들이 액세스하려고하는 앱이 그들에게 등록되지 않기 때문에 그들에게주의를 기울이라고 말하는 불쾌한 빨간 상자.

구식 사용자 이름과 비밀번호에 대한 이러한 방법에 대한 장점은 다음과 같습니다.

  1. 사용자의 보안 향상 : 사용자는 사용자 이름과 비밀번호를 제공 할 필요가 없으며 Google에 로그인해야하며 추가 API 호출을 수행하는 데 사용할 액세스 토큰을 얻을 수 있습니다. 사용자는 원하는 경우 Google 내부에서 응용 프로그램에 대한 액세스를 취소 할 수 있습니다.
  2. 프로세스는 사용자에게 앱이 "합법적"이라는 확신을 줄 수 있습니다. 사용자가 Google을 통해 로그인하고 앱을 허용 해야하는 경우 도메인이 Google에 등록 된 경우 좋아 보일 수 있습니다.
  3. 토큰은 세션 토큰으로 홍보 할 수 있습니다. 즉, Google 사용자 계정에 대한 액세스를 요청해야 할 때마다 사용자에게 로그인하도록 요청할 필요가 없음을 의미합니다. 그리고 당신은 끝났습니다.
  4. 프로세스를 이해하면 사용자를 인증하는 것이 매우 간단합니다.
  5. (검증되지 않음) 사용자가 암호를 변경하면 보안 토큰을 업데이트 할 필요가 없습니다.
  6. 마지막으로 Oauth를 사용하는 경우 Vimeo와 같은 다른 웹 서비스에 쉽게 인증 할 수있는 인터페이스를 만들 수 있습니다!

이 모든 것들과 함께 사용자 계정에 연결하기 위해 사용자 이름과 암호 (ClientLogin이하는 일)를 사용하는 것이 나쁜 아이디어가되는 이유를 알아낼 수 있다고 생각합니다. 다른 인증 방법을 사용하면 동일한 작업 (요청 액세스)을 수행하고 많은 장점을 추가 할 수 있습니다.

AuthSub를 사용하여 사용자를 인증하는 방법에 대한 코드는 여기에서 찾을 수 있습니다. $ _session [ 'sessionToken']을 DB와 같은보다 영구적 인 위치에 저장하십시오.

http://code.google.com/apis/youtube/2.0/developers_guide_php.html#authsub_for_web_applications

다른 팁

ClientLogin은 응용 프로그램이 사용자의 로그인 자격 증명을 처리해야하기 때문에 선호하는 메커니즘이 아닙니다. 사용자의 신원을 세션보다 오래 설정 해야하는 경우 자격 증명을 저장해야하며 이는 이상적이지 않습니다. 서버의 타협으로 인해 Google 사용자에 대한 타협이 발생합니다. 따라서 ClientLogin은 응용 프로그램에 올바른 접근 방식이 아닙니다.

당신은 보셨습니까? Google Oauth? 비밀번호 처리 문제를 꽤 우아하게 해결하고 확립 된 표준입니다.

나는 같은 문제가 있었고 ClientLogin을 사용하게되었습니다. 사용자가 로그인 프로세스의 일부를보고 싶지 않은 경우 이렇게합니다.

AuthSub 또는 기타 인증 방법으로 더 나은 방법이 있는지 알 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top