2012-12-28 2 views
2

내가 만든 API에 대해 oauth2 솔루션을 구현 중이며 잠재적 인 불충분 한 점 (또는 적어도 필자의 이해가 부족함)으로 인해 어려움을 겪고 있습니다.oauth2가 안전하지 않습니까?

단일 토큰이 생성되어 엔드 포인트 요청의 인증 신임으로 사용되는 것이 맞습니까? 잠재적 인 무차별 공격 (brute force attack)을 막고있는 것은 무엇입니까? 공격자가 유효하고 사용되기를 희망하기 만하면 API에 토큰을 간단히 제출합니다.

나는 아마 뭔가 오해했을 것입니다. 그러나 나는 내게 그 삶이 무엇인지 알지 못합니다.

+0

모든 시스템은 어느 정도 안전하지 못합니다. 그러나 "조기 해설"에 대해 걱정할 필요는 없습니다. –

+7

솔루션을 구현하고 해킹 한 후에 만 ​​걱정할 필요가 있습니까? – Nick

답변

2

토큰은 물론 상상하기 어려워 야합니다. 예를 들어 단순 순차 정수가 될 수 없습니다. 토큰의 길이에는 제한이 없습니다. 기본적으로 두 가지 옵션이 있습니다.

1) 자신의 키를 사용하여 긴 토큰을 암호화합니다 (참고 : 은 길어야하지만 암호화는 길게하기 때문에 암시 적으로 길어질 것입니다). 이 토큰을 암호화하고 해독 할 수있는 유일한 사람이기 때문에 토큰이 실제로 사용자의 것임을 반환 할 때 확인할 수 있습니다.

2) 또한 데이터베이스에 저장되어있는 토큰을 작성하는 것이 상당히 어렵 기 때문에 데이터베이스에 토큰이 있는지 확인할 수 있습니다.

두 가지 방법을 혼합해서 사용할 수도 있습니다. 또한 토큰에 만기 시간을 추가해야합니다 (첫 번째 경우에는 임베드되거나 두 번째 경우에는 데이터베이스의 토큰을 제외).

+2

추천하는 것은 무차별 공격을 막는 것이 아닙니다. 암호화 된 또는 암호화되지 않은 토큰은 일련의 문자 및 숫자입니다. –

1

OAuth 2.0에서 Brute Force Attack까지 가장 취약한 보조금 유형 중 하나는 리소스 소유자 비밀번호 자격증 명 유형입니다. 이 경우 해커는 클라이언트 자격 증명 (clientId 및 비밀번호)에 액세스 할 수 있으며 리소스 소유자 (사용자) 자격 증명 (사용자 이름 및 비밀번호) 만 필요합니다. Java - Spring Security here에 설명되어있는 인증 구현 모델이이 문제를 피하기 위해 밝혀졌습니다.