0

전체 사이트에 SSL이있는 Asp.Net MVC 3 사이트가 있습니다. 나는 userName과 password를 받아들이는 컨트롤러에 로그인 액션을 가지고 있으며, 웹 애플리케이션 내에서 다른 액션을 호출하기위한 사용자 인 Token을 리턴한다. 액션은 내 REST API를 호출한다.Asp.Net MVC 3 보안 로그인

유효한 사용자가 내 웹 사이트에 로그인하지 않고 로그인 한 후 Fiddler를 사용하여 토큰을 추출하지 못하도록하려면 어떻게해야합니까? 그는 일부 악의적 인 물건을 해당 토큰을 사용하여 내 REST API를 호출 할 수있을 것입니다 그 후 ...

답변

1

어떻게 유효한 사용자가 사용 후 내 웹 사이트, 로그인 및 에 갈 것이라고 확신 할 수 있습니다 피들러가 토큰을 추출할까요?

수 없습니다. 하지만 이것이 사용자 인증 인증의 요점입니다. 인증을 사용하여 (사용자 이름과 비밀번호를 제공 한 후) 사용자를 식별하고 나중에 API에 액세스하는 데 사용할 토큰 (인증 쿠키)을 제공합니다.

권한을 사용하여 사용자가이 토큰으로 수행 할 수있는 작업을 제한 할 수 있습니다. 예를 들어, 당신은 단지 특정 컨트롤러 액션에 액세스 할 수있는 관리자 그룹에 속한 사용자 로그인 말할 수 있습니다 : 사용자가 로그인 한 경우에도 지금

[Authorize(Roles = "Admin")] 
public ActionResult SuperSecret() 
{ 
    ... 
} 

을 그가 할 수 없습니다 인증 토큰 민병대 관리자 그룹에 속하지 않는 한이 컨트롤러 작업에 액세스하십시오.

+0

하지만 그는 내 웹 사이트에서 TOKEN을 사용했기 때문에 API에 훨씬 더 높은 권한 (범위)을 갖게됩니다. 그래서 당신이 말하는 역할 관리자가 될 것이라고 말할 수 있습니다 ... –

+1

@RadenkoZec, 이것은 기본적으로 당신이 당신의 웹 사이트에서 권한을 구현하지 않았다는 것을 의미합니다. 인증 만 구현했습니다. 현재 사용자가 TOKEN을 가졌다면 그는 사이트에서 무엇이든 할 수 있습니다. 그리고 인증 된 사용자에게이 토큰을 제공하기 때문에 사용자가 재사용하지 못하게 할 수있는 방법은 없습니다. 사용자의 역할을 구별하려면 권한 부여를 구현해야합니다. –