2013-05-15 2 views
2

내가 SAML이 새로운 그리고 난 SSO를 필요로하는 도구에 일하고 있어요 처리,하지만 난 그것에 대해 이동하는 방법에 대한 단서입니다. 여기 흐름은 다음과 같습니다.SAML 응답

1) 사용자는 주요 웹 사이트에 액세스하고 로그인을 선택 2) 사용자는 로그인 정보를 입력하고 제출 3) 시스템, 자격 증명을 검증하는 SAML 응답을 생성하고와 함께 새로운 도구로 사용자를 리디렉션 POST 변수로 SAML 응답. 4) 새 도구는 응답을 구문 분석하고 데이터베이스에 정보를 저장/업데이트하며 사용자에 대한 활성 세션을 만듭니다.

1,2 및 3은 기본 웹 사이트에서 이미 생성되었습니다. 제가 작업하고있는 것은 4입니다. 주요 개발자는 샘플 SAML 응답과 인증서를 제공했습니다. 나는이 문제/질문이 있습니다

1) 테스트 서버에서 SSO 양식을 사용하여, 나는 내 서버에 PHP 파일에 반환 URL을 입력하고 양식을 제출했다. 그것은 나를 로그인하고 내 서버의 페이지로 리디렉션했습니다. 페이지의 코드는 다음과 같습니다 출력은 더 다음과 같습니다 :

<?php 
    var_dump($_POST); 
?> 

출력 :

array(0) { } 

내가 뭐하는 거지 맞아? Firefox에서 Firebug를 사용하여 확인한 결과 어딘가에서 samlresponse를 찾을 수 있었지만 정확히 어떻게 페이지에 가져갈 지 모르겠습니다. 어떤 도움이 필요합니까? 샘플 SAML 응답을 사용

2), 우리는 샘플을 분석하고 2-3에서 속성을 인쇄하는 작은 스크립트를 코딩 할 수 있었다. 이것이 올바른 방법인가요? 아니면 더 좋은 오픈 소스 솔루션이 있습니까?

SimpleSAMLPHP, OneLogin 및 기타 몇 가지 번들을 읽으려고했지만 너무 복잡해 보였습니다. 여기서는 달성해야하는 것이 방법/솔루션으로 더 간단해질 수 있습니다. 또한 번들에는 SAML을 제공하는 모든 기능이있는 것처럼 보이지만 응답을 수신하고 구문 분석하기 만하면됩니다.

도움을 주셔서 감사합니다. 건배

+0

이 바인딩 POST를 사용하도록 설정되어 당신은 확인을? 다른 일반적인 옵션은 Redirect 바인딩을 사용하는 것이고,이 경우 $ _POST 대신 $ _SESSION에서 응답을 찾아야합니다. –

답변

1

는 OpenSAML 갈 방법이 될 수 있습니다. 그것은 매우 낮은 수준의 도서관이며 많은 수동 노동이 필요합니다. 여기

당신은 SAML spec

내 책, A Guide to OpenSAML을 조사해야하는 OpenSAML webpage

이며, SAML과 OpenSAML 라이브러리에 단계별로 좋은 소개 및 단계를 제공합니다.

또한 내 블로그는이에 대한 예제 몇 가지가 있습니다. http://blog.samlsecurity.com/search/label/OpenSAML http://blog.samlsecurity.com/search/label/SAML

0

구문 분석 및 SAML 응답을 확인하는 것은 사소한 아니라, 정직합니다. SP는 IdP의 EntityDescriptor를 알아야하며 IdP는 SP의 EntityDescriptor를 알아야합니다. 그리고 몇 가지 바인딩/프로파일이 있습니다. 그리고 Response/Assertion은 암호화/서명 될 수 있습니다. 즉, 서명 서명을 해독하거나 검증해야합니다. SAML은 매우 복잡한 프로토콜이므로 구문 분석/검증하기가 쉽지 않습니다. 당신이 SAML 메시지 수동 구문 분석 및 처리를 수행 할 경우

+0

답장을 보내 주셔서 감사합니다. 나는 이것이 어렵다는 것을 알고 있지만 누군가 나를 도와 주거나 튜토리얼이나 다른 것을 가르쳐 주려고합니다. 예를 들어, 응답이 서명 된 인증서가 있습니다. 이 인증서를 어디에서 어떻게 설치합니까? 내 서버에? – salmanhijazi

0

lightsaml php SAML 데이터 모델 라이브러리를 사용하여 SAML 메시지를 구문 분석/직렬화 할 수 있습니다. Symfony2 프레임 워크를 사용하고 있다면 SamlSPBundle을 사용할 수도 있습니다. 사용하여 단지 SAML 응답을 수신하고이 같은 보일 것이다 분석 lightsaml :

$request = new Request(); 
$request->setQueryString($_SERVER['QUERY_STRING']); 
$request->setGet($_GET); 
$request->setPost($_POST); 
$request->setRequestMethod($_SERVER['REQUEST_METHOD']); 

$bindingDetector = new BindingDetector(); 
$bindingType = $bindingDetector->getBinding($request); 
$binding = $bidingDetector->instantiate($bindingType); 
$samlResponse = $binding->receive($request);