2012-12-20 6 views
2

사용자를위한 몇 가지 OAuth 공급자 (Google, Facebook, Twitter, MS Live)를 사용하는 MVC 4 웹 사이트 (http://myWebsite.com)가 있습니다. 로그인 - DotNetOpenAuth 라이브러리를 사용합니다.하위 도메인의 API 보안 - OAuth 공급자를 사용하여 로그인 한 사용자

또한 하위 도메인 (http://api.myWebsite.com)에 API가 있습니다.

사용자가 레코드를 업데이트하려면 해당 레코드가 변경 될 수있는 권한이 있는지 (권한 있음) 확인해야합니다.

그렇다면 하위 도메인의 API에서 사용자를 인증하는 가장 좋은 방법은 무엇입니까?

나는 HTTP 요청 헤더의 API에 사용자의 인증 토큰을 추가 할 수 있습니다, 그리고 나는 두 가지 옵션이 생각 :

내 생각은 지금까지 다음 사항을 수반한다.

i) 웹 사이트에서 모든 사용자 권한을 검사하고 토큰을 보내 사용자에게 권한이 있는지 묻는 메소드를 만듭니다.

ii) DotNetOpenAuth dll을 API 솔루션에 추가 한 다음 API 메소드에 액세스하는 데 필요한 역할을 간단하게 꾸밀 수 있습니다. 이게 효과가 있니?

세 번째 옵션은 업데이트 된 레코드를 웹 사이트에 다시 게시하고 인증을 실행 한 다음 데이터가 API로 전송되도록 전달하지만이 경우 냄새가 나는 것으로 보입니다.

나는 분명히 여기에 명백한, 따라서 게시물이 누락되었다고 확신한다.

답변

1

사용자가 로그인하는 방법은 다른 클라이언트가 API 하위 도메인을 호출하는 방법을 완전히 직각으로 처리합니다. 이 아니요은 API에서 인증 토큰을 수락합니다. 인증으로 잘못 사용하면 큰 보안 허점이 생깁니다.

클라이언트에 API 호출 권한을 부여하려면 DotNetOpenAuth가 지원하는 OAuth 1 또는 2와 같은 인증 프로토콜이 필요합니다. DNOA OAuthAuthorizationServer 및 OAuthResourceServer 샘플을 확인하여 API에 OAuth 2 지원을 추가하기 시작하십시오.

관련 문제