2014-03-03 7 views
0

나는 과거에 ASP.NET WebSecurity Membership과 WebAPI를 구현했지만 결코 동시에 사용할 필요가 없었습니다.웹 API 인증 시나리오

이제 새 사이트를 만들고 클라이언트에 등록 또는 로그인 방문자가 필요하지 않습니다. 따라서 회원이 없을 것입니다.

그러나 클라이언트는 WebAPI를 통해 데이터를 검색 할 수 있기를 원합니다. 그러나이 데이터는 민감 할 수 있으며 우리가 사용자 또는 해커에게 보여주기를 바라는 것이 아니므로 클라이언트로부터 API 요청을 할 수 있도록 내 클라이언트와 클라이언트 만 권한을 부여하는 방법은 무엇입니까? (WinForms 데스크톱 앱, 모바일 앱 등)?

+0

내가 – Dimitri

+0

감사에게 apiKey에 같은 GUID에 @Dimitri을 전달하여, 당 요청을 할 거라고, 당신은 더 작은 비트를하시기 바랍니다 정교한 수 있을까? – uSeRnAmEhAhAhAhAhA

+0

이렇게하는 방법은 다양합니다. 어떤 종류의 제약이 있습니까? 사용자를 계속 유지하려면 장치 당 또는 응용 프로그램 설치마다 일종의 인증이 필요합니다. 귀하의 '고객'은 지금부터 일부 인증을 거치는 것에 불리한가? 아마도 API 키를 사용하여 API에 액세스 할 수 있지만 안전하지는 않습니다. 누군가가 쉽게 열쇠를 냄새 맡을 수있었습니다. 공개/비공개 키 조합을 사용할 수도 있지만 설정하기가 다소 어렵습니다. 그것은 당신이 필요로하는 보안 수준과 그것을 얻기 위해 무엇을 기꺼이 하느냐에 달려 있습니다. –

답변

1

내 공개 API에 구현 된 것과 비슷한 점이 있는데, 일부 메소드는 관리자 만 호출 할 수 있습니다.

관리 방법 서명에는 이전에 관리자 사용자에게 할당 한 고유 식별자 문자열을 허용하는 문자열 매개 변수가 포함됩니다.

그런 다음 API 키가 관리자에게 속한 경우 모든 메소드 호출에서 확인하고 권한이없는 경우 예외를 던지거나 그렇지 않은 경우 데이터를 사용하여 호출에 응답합니다.

예 방법 :

public decimal GetCompanyBalance(string APIKey, int CompanyId) 
{ 
    if(!UserManager.GetByAPIKey(APIKey).IsAdmin){ 
     throw new UnauthorizedException(); 
    } 

    return Company.GetBalance(CompanyId); 
} 
+0

감사합니다 @Dimitri, 이것은 큰 도움이되었습니다. – uSeRnAmEhAhAhAhAhA