웹 API 기반 프로젝트에서 OAuth 토큰 기반 인증을 사용하고 있습니다.웹 api에서이 보안 위반을 처리하는 방법
사용자가 인증되면 다음과 같이 액세스 토큰이 생성됩니다.
{"access_token":"FFz_DC6zzEDD4mGOCk9172ijj3sGxCUWnk-tGanm9wGk76hMB8sHI8ImeWtdUKHHGNXv465ZSlbb-3fr_hr9DqUHc9Dm9OBI7XjJhdjdOpAGAGSFOpE0Y17LCEWTjCmEZotuf42Mpgl81ewoS7OlnH4b5w4PrtzJbIBpSAMoWObziL_U3mTkeFKvWrcWOfvlSCvhhBA9Dc3UTXv3HiHKWQk0T3-pvVy7ZuW2oac-IIuaq_GYaVkIZh7s9-YjX9KAL2Z9yfrPrVOQXZe_5OcNd7nS3tdT5odchEAiuWRYQ6t7Tfb2si4T6VdAe73OYefE0se1FeQsxbOiNaLyF8OwBqymEUzEG8tEHJ-cejVbhPw","token_type":"bearer","expires_in":1799,"as:client_id":"","user":"1","role":"1",".issued":"Thu, 16 Feb 2017 09:37:44 GMT",".expires":"Thu, 16 Feb 2017 10:07:44 GMT"}
아래는 api 방법 중 하나입니다.
[Authorize]
[HttpGet]
[Route("{userId}/{type}/")]
public IHttpResponse GetCustomerDetails(int userId, string type)
{
//my api stuff
}
나는 api를 테스트하기 위해 우편 배달부를 사용하고 있습니다. 매개 변수를 전달할 때
http://localhost:50684/api/customer/1/gold
--along the access token in token in header--
원하는 json을 반환합니다.
그러나 동일한 토큰 &을 사용하여 고객 id = 2를 전달하면 다른 고객 (id = 2)에 액세스 할 수 있습니다.
http://localhost:50684/api/customer/2/gold
--Access token in header--
생성 된 액세스 토큰이 id = 1 인 사용자에게 유효하므로 id = 2 인 사용자에게 리소스에 액세스 할 수 없어야합니다.
이 보안 위반을 어떻게 방지합니까?
도움/제안을 높이 평가했습니다.
감사합니다.
왜냐하면 당신은'토큰 '을 데이터베이스 안에두고 각 사용자에게 그것을 할당하지 않기 때문입니다. u는 토큰을 생성 된 것으로 만 비교하고 안전한 유지를 위해 데이터베이스에 보내야합니다. – Valkyrie