2012-01-20 4 views
3

symfony2를 사용하여 잠시 동안 설정을 시도했지만 꽤 오랫동안 계속 진행되었지만 약간의 장애가있었습니다. 내 보안 설정을 얻는 방법을 알 수 없습니다. 우리 기관에서는 cas (단일 사인온)을 설치하고 모든 인증 작업을 처리하는 정적 클래스를 사용합니다. 게이트 키퍼라고합니다. 게이트 키퍼는 모든 역할 확인과 사용자 이름 로그인 작업을 수행합니다. 나는 심포니 2의 인증 물건을 사용할 수 있기를 원하지만 인증 물건은 필요가 없습니다. 이것이 가능한가? 나는이 문서를 읽었지만 그런 것들은 너무 긴밀하게 분리되어있는 것처럼 보입니다. 누구든지이 주제에 대해 통찰력을 갖고 있습니까?symfony2의 보안 설정 로그인하지 않고

답변

3

당신이 요청하기 전에 인증을 위해 게이트 키퍼 클래스를 사용하는 경우 사용자가 만들 수있는 방화벽을 안타 AbstractPreAuthenticatedListener을 확장하고 getPreAuthenticatedData() 구현하여 리스너 (즉, 인증은 방화벽 전에 발생) "사전 인증"

class GatekeeperListener extends AbstractPreAuthenticatedListener 
{ 
    protected function getPreAuthenticatedData(Request $request) 
    { 
     return array(
      Gatekeeper::getCurrentUsername(), // username 
      '',        // credentials 
     ); 
    } 
} 

새 인증 리스너를 시스템에 도입하려면 보안 팩토리를 만들어야합니다. 이 과정은이 요리 책 문서에서 설명 :

How to create a custom Authentication Provider: The Factory

귀하의 security.yml은 다음과 비슷한 모습이 될 것

security: 
    factories: 
     - "%kernel.root_dir%/../src/Acme/DemoBundle/Resources/config/security_factories.yml" 

    firewalls: 
     main: 
      pattern: . 
      gatekeeper: true 
+0

크리스, 답장을 보내 주셔서 감사합니다. 나는 이것에 마침내 돌아 다니고 있으며 추가 질문이 있습니다. 반환 된 배열의 자격 증명 부분이 쉼표로 구분 된 역할 문자열 또는 역할 배열입니까? 도움이되는 답변에 감사드립니다. 나는 PreAuthenicatedListener가 (API 외에도) Symfony2 문서 어디에도 언급되어 있지 않다고 생각한다. –

+2

해당 배열의 두 번째 항목은 사용자의 암호이지만 빈 문자열 만 반환 할 수 있습니다. –

+0

Ok Kris, 더 많은 작업이 있다고 생각하지만 지금은 계속 "토큰이 SecurityContext에서 발견되지 않았습니다"예외가 계속 발생합니다. 토큰은 보안 컨텍스트에 어디에 삽입됩니까? 그 일을해야합니까, 아니면 이론적으로 사용자 제공 업체가해야합니까? –

관련 문제