2014-05-20 1 views
4

나는 나머지 API로 응용 프로그램 작업을 시작하려고합니다. 나는 능숙을 원합니다. 불행하게도이 아이디어에는 한 가지 문제가 있습니다. 정규 사용자를위한 oAuth 인증을 허용하는 방법에 대한 신뢰할 수있는 정보원을 찾을 수 없습니다.사용자를위한 숙지와 oAuth

각도 앱과 기본 모바일 앱에 액세스 권한을 제공해야합니다 (나중에 타사 웹 앱을 사용할 수 있음). 내가 찾은 모든 리소스는이 응용 프로그램을 사용하는 특정 사용자가 아닌 특정 클라이언트 응용 프로그램에 대한 API 액세스 권한 부여에 관한 것입니다. 두 가지 인증 방법을 구현하고 싶지 않습니다. 따라서이 문제를 능숙하게 해결할 수있는 방법이 있다면 유용 할 것입니다.

이 접근 방법에 대한 제안 사항이 있습니까? 나는 모든 등록 된 사용자에 대해 클라이언트 ID와 비밀을 생성 할 수 있다는 것을 알고 있지만,이 솔기는 다소 엉터리 솔루션이며 사용자 정보를 저장하기위한 데이터베이스 스키마가 이미 있습니다.

답변

8

"비밀번호"부여 유형을 찾으실 수 있습니다. 이 시나리오에서는 사용자와 암호를 등록한 다음 "로그인"화면을 표시합니다. 이 로그인 화면에는 다음과 같은 정보가 보내드립니다 :

  • 이름을
  • 비밀번호
  • CLIENT_ID -이 응용 프로그램에 대한 OAuth2를 클라이언트 ID (가 아닌 사용자 ID!)입니다
  • "grant_type" "password"

이 시나리오에서는 client_secret을 제공하지 않습니다. 사용자 자격 증명 시나리오의 경우 사용자 자격 증명의 유효성이 검사 된 후 서버는 client_id가이 부여 유형을 지원하는지 확인합니다.

사용자가 성공적인 자격 증명을 제공하면 OAuth2 엔드 포인트는 토큰, TTL 및 refresh_token을 반환합니다 (TTL이 만료되기 전에 보내면 토큰 집합이 새로 제공됩니다).

여기에서 Authorization 헤더의 토큰 인 "Authorization : Bearer"를 보냅니다. Apigility는 각 요청에 대해 이것을 선택하고 토큰의 유효성을 검사합니다.

유효성 검사는 사용자 이름의 일부로 사용자 이름을 반환합니다. 즉, 나중에 ZF \ Mvc \ Identity를 쿼리하여 사용자 별 ACL 어설 션을 수행 할 수 있습니다.

더 많은 방향이 필요하면 우편 목록 (http://bit.ly/apigility-users)에 나를 찔러 넣으십시오.

+0

password granttype은 실제로 클라이언트 예제를 필요로합니다. 이 사람은 암시 적 부여 유형을 원할 수 있습니다. http://bshaffer.github.io/oauth2-server-php-docs/grant-types/user-credentials/ – Erik

+1

데이터베이스에서 client_secret null을 그대로두고 API 호출. – Agustincl

관련 문제