2013-08-12 7 views
1

내 시스템에서 사용자 정의 사용자 공급자와 함께 Symfony Security를 ​​사용하고 있습니다. 웹 서비스를 통해 사용자에게 제공됩니다.
이 자습서 (http://symfony.com/doc/current/cookbook/security/custom_provider.html)에 따라 공급자를 구성합니다. 여기 Symfony Security/사용자 정의 사용자 제공자 : 사용자 정의 사용자 제공자에서 로그인 암호를 얻는 방법?

는 사용자를 확인하는 기능입니다 :

public function loadUserByUsername($username) 
{ 
    $userData = webServiceCheckUser($username); 
    // return an array whit user credentials 
    if ($userData) { 
     $password = $userData['password']; 
     $salt = $userData['salt']; 
     $roles = $userData['roles']; 
     $user = new WebserviceUser($username, $password, $salt, $roles); 
     return $user; 
    } 
    throw new UsernameNotFoundException(sprintf('Username "%s" does not exist.', $username)); 
} 

이 잘 작동, 기능 webServiceCheckUser() 호출 웹 사용자 이름과 서비스 및 다음 사용자의 데이터 배열을 반환합니다. 하지만 이제는 사용자 이름이 이고 사용자를 인증하기 위해 암호를 암호화해야하는 다른 웹 서비스를 통해 사용자를 확인해야합니다. 웹 서비스가 대기중인 것처럼 일반 텍스트 암호를 암호화하는 함수가 있지만 사용자 지정 사용자 공급자 클래스 내의 폼 로그인에서 사용자가 입력 한 암호를 가져올 수 없습니다. 이미 암호화 된 암호를 얻을 수 있다면 괜찮습니다. 어느 것이 든 문제를 해결합니다.

어쨌든이 작업을 수행 할 수 있습니까?

+0

[맞춤 인증 공급자] (http://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html) –

답변

3

@Pazi는 사용자 지정 인증 공급자를 구축하는 것이 맞습니다. 그러나 쉬운 일이 아닙니다.

대체 접근법은 DaoAuthenticationProvider를 재정의하고 암호를 loadUser 함수에 전달하도록하는 것입니다.

security_listeners.xml:   
    <parameter key="security.authentication.provider.dao.class"> 
     Symfony\Component\Security\Core\Authentication\Provider\DaoAuthenticationProvider 
    </parameter> 

해킹 비트일지도 모르지만 많은 작업을 절약 할 수 있습니다.

+0

을 작성해야한다고 생각합니다. 하지만 Symphony에서 초보자이기 때문에 여전히 복잡합니다. 몇 가지 예와 링크가 있습니까? – vlamirc

+0

Nope. 보안은 이해하기 어려운 것 중 하나입니다. 외부 제공 업체를 사용해야하는 경우 시스템이 어떻게 작동하는지 이해해야합니다. – Cerad