2017-05-08 1 views
0

OAuth2.0에 대한 나의 이해는 서버 AUTHORIZATION_SERVER가 타사 클라이언트 응용 프로그램 인 CLIENT를 인증하는 데 필요한 워크 플로를 관리하여 서버가 소유 한 리소스 인 RESOURCE_SERVER를 사용자, RESOURCE_OWNER. 을 조율하여 자원 소유자를 대신하거나,타사 응용 프로그램이 없을 때 OAuth2.0을 사용할 수 있습니까?

의 OAuth 2.0 인증 프로토콜은 HTTP 서비스에 대한 제한된 액세스를 얻기 위해 타사 응용 프로그램 수 있습니다 :

는 OAuth를 사양 https://tools.ietf.org/html/draft-ietf-oauth-v2-17에서 가져옵니다 리소스 소유자와 HTTP 서비스 사이의 승인 상호 작용을 허용하거나 타사 응용 프로그램이 자체적으로 액세스 권한을 얻도록 허용합니다.

OAuth를 구현할 수있는 권한 흐름 자체가 명확하며 (일부 앱이 Facebook 사용자 계정에 부분적으로 액세스하는 것과 같은) 많은 사례가 있습니다.

  1. 사용자가하려고 : 이제

    , 나는 OAuth를에 의해 지정된 하나 (관련없는 타사 응용 프로그램)보다 간단한 흐름을 몇 가지 애플 리케이션을위한 권한 부여 서버를 구현하기 위해 노력하고있어 APP에 액세스하십시오.

  2. APP는이 질문의 범위를 벗어난 사용자를 인증합니다.

  3. APP는 AUTHORIZATION_SERVER에 대해 사용자를 인증합니다.

일부 검색을 수행 한 후에 여러 가지 응용 프로그램이 매우 유사한 사용 사례에 대해 OAuth를 사용하는 것으로 나타났습니다.

  1. 는 위의 예제의 OAuth에 대한 올바른 사용 사례입니다 :

    그래서 여기 내가 가지고있는 질문은?

예에서 APP는 두 개의 OAuth 역할 (CLIENT 및 RESOURCE_SERVER)을 재생합니다. OAuth에서 CLIENT는 리소스에 직접 액세스 할 수 없습니다. 대신 RESOURCE_SERVER는 AUTHORIZATION_SERVER에 의해 RESOURCE_OWNDER 사용자의 동작에 성공적으로 권한 부여 된 후 CLIENT에 대한 리소스를 검색합니다.

다른 말로하면이 APP의 이중 역할이 CLIENT/RESOURCE_SERVER입니까? 이 시나리오에 존재하지 않는 추가 역할을 관리하는 데 필요한 추가 복잡성 이외의 다른 결과를 초래합니까?

  1. 내가 실험 한 OAuth 인증 서버는 Keycloak입니다. 위에서 언급 한 유스 케이스를 감안할 때, Keycloak이 좋은 선택이라고 생각하십니까?

다른 후보를 추천 하시겠습니까?

배경 : 내 모든 응용 프로그램은 Java 기반이며 필요한 권한 부여 정책은 하이브리드 (역할/권한 기반 및 정책 기반) 여야합니다.

답변

0

내가 이해하는 내용 Oauth2 : 사용자에게 자신의 이름으로 된 앱에 데이터를 요청하도록 허용하는 타사 앱이 있습니다. 제 3 자 앱이 여기에 웹 페이지, 모바일 애플리케이션 등을 할 수있다

  1. OAuth2를 OAuth를 좋아하지만, 대신에 다른 암호화 솔루션의 SSL을 사용하여 보안 protocole 함께,이 response를 참조하십시오 그래서 그래, 당신 경우 귀하의 응용 프로그램을 OAuth와 함께 작동 시키려면 OAuth2와 함께 작동해야합니다.

  2. 자신 protocole으로 OAuth2를 구현하는 대신 기존의 lib 디렉토리를 사용하지 마십시오 : 응용 프로그램에서 separatly/업데이트를 쉽게 교체 :

  3. 시작 별도의 서버에이 OAuth2를 코드 등, 업데이트, 더 신뢰할 코드

편집 : 내가 준 response 당신은 또한 당신이 :) 이해하는 데 도움이 멋진 다이어그램 기능

EDIT2 : 아프리카 단결기구에 대해 별도의 서버를 사용하는 다른 이유 th2 및 귀하의 응용 프로그램은 언젠가 여러 개의 데이터 소스 (다중 API)를 가지고 있지만 처음에는 OAuth 코드가 삽입 된 곳이 필요하지 않습니다. 별도의 서버에두면 OAuth2 경로가 더 좋고 안정적입니다.

1

(로컬) LDAP 서버 또는 데이터베이스에 필요한 인증 정보 유형을 쿼리하는 것이 더 좋습니다. OAuth는 앱 인증을 피하기 위해 특별히 고안되었습니다.

관련 문제