2012-04-02 3 views
2

나는 둘 다 Symfony2로 작성된 REST API와 그 프론트 엔드를 가지고있다. 이 문서 당 내가 (해시) 패스워드, 소금과 같은 백엔드의 정보를 기반으로, 프론트 엔드에서 사용자 개체를 만들 수있는 사용자 정의 사용자 제공자를 쓴 프론트 엔드에서

: http://symfony.com/doc/current/cookbook/security/custom_provider.htmlhttp 사용자 정의 백엔드 API와 백엔드 API를 기본으로 결합

그러나, 대부분의 API 요청에 대해 HTTP 기본 인증 자격 증명이 필요합니다. 그러나 내가 아는 한 Basic에 대해 나는 일반 텍스트 비밀번호가 필요하다. 프론트 엔드 측에서 가지고 있지 않은 것은, 필자는 커스텀 사용자 프로 바이더의 해시 버전을 가지고 있습니다.

해시 된 암호 버전과 함께 HTTP 기본을 어떻게 든 사용할 수 있습니까?
가 아니면이 _username와 프론트 엔드에 로그인 폼의 _password 필드를 차단, 세션에 저장할 (즉 적절한인지 확실하지 않은,하지만 지금은 그것을 해결하는 것)

나는 후자를 시도했습니다 수 있습니다 , 'login_check'대신 자신의 URL에 로그인 폼을 게시하여 _username 및 _password 필드를 볼 수 있습니다.하지만 그 후에 '/ login-check'로 전달해야 Symfony2가 마술을하도록 할 수 있습니다. 컨트롤러를 찾을 수 없으므로 계속 실패합니다. (컨트롤러를 설정하지 않고 Sf2가 login_check 호출을 가로 채기는하지만, 문제가 생길 때가 아닙니다.)

서버에 전송하기 전에 암호를 해시 경우,

건배,

디터

+0

왜 백엔드와 프런트 엔드에 동일한 방화벽을 사용하지 않습니까? – julesbou

+0

무슨 뜻인지 자세히 설명해 주시겠습니까? 나는 내가 따라 오지 않을 것이라고 생각한다. 두 방화벽의 경우는 매우 다릅니다. 백엔드 하나는 http 기본 인증으로 구성되며 stateless이지만 프론트 엔드는 certelessly stateless가 아니며 HTTP Basic이 아닌 폼별로 인증해야합니다. – Dieter

답변

0

을 환영받을 다음이 해시 된 암호가 새 암호가 될 것입니다.

HTTP 기본 인증은 일반적으로 RESTful 인증 방법 인 으로 사용되지만 SSL을 초과해야합니다. 세션 ID로 암호화 nonce를 사용하는 경우 모든 요청에 ​​대해 SSL을 통해이 값을 전달해야합니다. 그렇지 않으면 사용자가 OWASP A9을 위반하게되며 모든 사용자가 손상 될 수 있습니다.

+0

그래서 백엔드가 아닌 프론트 엔드에서 해싱을 사용 하시겠습니까? 그래서 frontend에 sha512와 같이 그것을 해쉬하고 백엔드에 'plaintext'(실제로 sha512 해시)로 저장 하시겠습니까? 확실한 해결책이 될 수 있습니다. 전적으로 SSL에 동의합니다. 저는 꽤 큰 Owasp 팬이므로 안전하게 보관할 수 있도록 최선을 다하고 있습니다. – Dieter

+0

@Dieter 그러면 RESTful이 아닌 사용자 별 서버 측 통계를 저장하게 될 것이다. 세션 id + ssl을 사용하는 것보다 보안을 위해 REST 규칙을 어기면 보안이 훨씬 강화됩니다. – rook

+0

내가 백엔드에 데이터베이스에 저장하는 방법, 어쨌든해야 할 일 ;-) API 측에서 세션 관리와 같이 저장하지 마십시오. – Dieter

관련 문제