2014-10-31 1 views
2

Apache CXF (버전 2.7.12)를 사용하여 RESTful 서비스를 확보하기 위해 OAuth 2.0의 클라이언트 신임 정보 흐름을 구현하려고합니다.클라이언트 자격 증명에 대한 클라이언트 비밀 정보 아파치 CXF의 OAuth 2 플로우

내 유일한 클라이언트 (현재)는 키와 비밀을 비밀로 유지할 수 있다고 믿습니다. 나는 그 주변의 고려 사항을 알고 있습니다.

제 질문은 인증 서버에 클라이언트 비밀 정보를 저장하는 방법입니다. 내 생각에 '클라이언트 비밀'은 사실 비밀 번호이므로 소금에 절여야합니다. 그러나 CXF의 AccessTokenService는 저장된 비밀과 요청에서 전달 된 값을 비교하여 String.equals() 비교만을 수행하며 다른 메커니즘을 제공 할 수있는 곳을 제공하지 않습니다.

이것은 클라이언트 해시를 평범한 텍스트로 저장해야한다는 것을 의미합니다. 이는 약간의 해킹 방법을 사용하지 않고 요청의 일반 텍스트 값과 비교하는 것입니다.

비교하기 전에 들어오는 값을 해시 할 수있는 확실한 기능이 누락 되었습니까? 아니면 클라이언트 비밀이 지나치게 신중합니까? 내가 암호로 취급 하는게 잘못한 것일까 요?

답변

0

앞으로이 질문에 직면하는 사람들을위한 일종의 대답입니다.

내 접근 방식은 SecurityContext (https://cxf.apache.org/javadoc/latest/org/apache/cxf/security/SecurityContext.html)를 수동으로 만들고 필터를 통과 할 때 메시지에 추가하는 매우 간단한 필터 (여기에 설명 된대로 : http://cxf.apache.org/docs/jax-rs-filters.html)를 만드는 것이 었습니다.

이것은 플로우가 CXF의 AccessTokenService로 계속 진행됨에 따라 이미 인증되었음을 나타냅니다.

나는 또한 CXF 메일 링리스트에 질문을했고, 개발자가 최근에 이것을 잠재적 인 문제로 인식하고 그것에 대해 조사 중이라는 것에 대해 매우 즉각 답장을 보냈습니다. 몇 시간 만에 그는 그 문제를 해결 한 변화를 저지르고 이상적인 해결책이었을 것처럼 보였습니다. 불행히도, 필자는 여전히 솔루션을 테스트 할 시간을 찾지 못했고 내 프로젝트의 다른 요구 사항에 도움이되는 약간의 유연성을 제공합니다.

관련 문제