2012-02-13 2 views
0

내 웹 사이트에 로그인 할 필요가 없습니다. 그리고 사용자가 ASP.NET MVC Controller Action Methods를 호출하는 데 걸리는 작업. 다른 회사는 현재이 종점을 호출하고 이러한 방식으로 내 API를 사용할 수 있습니다. 내 사이트에있는 사용자 만이 API에 액세스 할 수 있도록하고 싶습니다.내 사이트를 방문하는 사용자를 API 끝점으로 제한하는 방법

어떻게 달성 할 수 있습니까?

설명 추가 :

내 사이트는 consoto.com이라고 말하면됩니다. 최종 사용자가 consoto.com에있는 경우에만 내 방법을 사용하고 싶습니다. 이제 다른 회사 나 해커가 hackland.com 사이트를 구축하고 자바 스크립트에서 내 메소드를 호출하면 사용자가 consoto.com에 있지 않고 hackLand.com에 있기 때문에 실패하기를 원합니다.

요즘 많은 사이트에서는 핵심 기능에 대한 공식 API 액세스 권한을 제공합니다. 이러한 메커니즘을 구현하지 않으면 다른 사이트는 유료 API를 사용하지 않고 실제 사이트에서 사용하는 메소드를 호출 할 수있는 옵션을 갖게됩니다. hackland.com이 consoto.com에서 사용하는 방법을 사용하여 서비스 비용을 지불하지 않게되는 것은 무엇입니까?

+0

"다른 회사"와 API는 무엇을 의미합니까? 하지만 귀하의 사이트에 쿠키 또는 세션을 설정할 수 있으며 쿠키 또는 세션을 확인하십시오. 귀하의 사이트는 귀하가 거래를 완료 할 수있는 유일한 장소이기 때문에 귀하의 웹 사이트가 회사에만 국한되어 있다고 생각하지 않습니다. – davethecoder

+0

(예 : 비밀 토큰, 인증 쿠키 등)을 요구하지 않는다면, 처음에 "사이트에있는 사용자"와 "다른 회사"를 어떻게 구별 할 수 있습니까? –

+0

@ minus4 방금 더 나은 설명을 추가했습니다. 감사합니다. – Barka

답변

0

나는 100 % 이해하지 못했지만 웹 사이트의 실제 사용자에게 특정 작업 방법을 호출하는 기능을 제공하려는 것으로 보입니다. 이 경우 액션 메서드를 [ChildActionOnly]으로 꾸밀 수 있습니다. 이렇게하면 ASP는보기 코드에서 HTML.Action()으로 호출 된 동작 만 허용합니다.

컨트롤러 코드

[ChildActionOnly] 
public ActionResult someAction() 
{ 
    //return whatever you need 
} 

보기 코드 적극적으로 서버에서 작업을 호출하는 사이트를 볼 수없는 사람들을 방지해야

Html.Action("someAction") 

.

0

신뢰할 수있는 방법으로 사이트에서 인증을 요구하지 않으면 인증 된 사용자 만 서버 측 동작을 호출 할 수 있습니다.

+0

고마워요! 이것은 공통적 인 문제입니다. 스택 오버플로를보십시오. (또는 구글 자체의 경우). 그들은 로그인 할 필요가 없습니다. 따라서 기본적으로 컨트롤러 메서드를 호출하고 wala라는 사이트를 만들 수 있습니다. 사이트에서 많은 기능을 제공합니다. 시간 당 특정 IP의 조회수를 제한하겠습니까? – Barka

0

한 가지 방법은 클라이언트가 컨트롤러에 제공해야하는 일종의 시간에 민감한 토큰을 사용하는 것입니다.

  1. 는 사용자로부터 어떤 자격 증명을 받아, 자격 증명이 유효한 경우, 서버의 시계를 기반으로 해시되는 시간에 민감한 토큰을 반환 웹 서비스를 구현합니다. 자격 증명이 전송 중에 보호되도록이 서비스를 SSL을 통해 호출해야합니다.

  2. 보호 된 컨트롤러에는 현재 예상되는 다른 모든 입력과 함께이 토큰이 필요합니다. 그런 다음 토큰의 해시를 해제하여 토큰의 유효 기간을 확인합니다. 여기에서 토큰을 유효하게 할 기간을 결정하고 승인 할 시간 간격을 선택할 수 있습니다. 해시 속성을 해시하지 않거나 만료 된 토큰의 경우 오류 결과를 반환하십시오. 유효한 토큰의 경우 올바른 결과를 리턴하십시오. 토큰이 시간에 민감하지 않고 사용 카운트 시나리오를 구현할 수도 있지만 시간에 민감한 접근 방법이 더 쉽습니다.

이렇게하면 API 컨트롤러에 로그인이나 SSL이 필요하지 않습니다. 귀하의 유효한 사용자는 손으로 사용하기 전에 토큰을 얻은 다음 토큰을 사용하여 서비스에 전화하면됩니다. 다른 사람들은이 토큰을 가로 챌 수는 있지만 매우 짧은 시간 후에는 아무런 도움이되지 않습니다.

관련 문제