cakePHP에 SimpleSAMLphp 인증 도구를 구현하려고합니다. I는 다음과 같습니다 app\Controller\Component\Auth
의 SamlAuthenticate
구성 요소 썼다 :cakePHP 2.3에서 simplesamlphp 1.10 사용
class SamlAuthenticate extends Component {
[...]
public function authenticate(CakeRequest $request, CakeResponse $response) {
$source = null;
$as = null;
if ($this->Session->check('Saml.source')) {
$source = $this->Session->read('Saml.source');
}
if ($source) {
require_once($this->settings['path'] . DS . 'lib' . DS . '_autoload.php');
$as = new SimpleSAML_Auth_Simple($source);
if(!$as->isAuthenticated()) {
$as->login();
} else {
return $as->getAttributes();
}
}
return false;
}
}
을하지만 항상 ID 공급자와 내 케이크 응용 프로그램 사이의 루프를 얻고있다.
궁금 해서요, 내 서버에 문제가 있거나 내가 ID 공급자의 구성이 잘못을했다, 그래서 나는 간단한 테스트 스크립트를 작성하고 문제없이 일 경우 : 그래서
require_once('/../simplesamlphp/lib/_autoload.php');
$as = new SimpleSAML_Auth_Simple('facebook');
$as->requireAuth();
echo $as->isAuthenticated();
, cakePHP의 무언가가 인증 프로세스를 중단시킵니다. SimpleSAMLAuthToken이 올바르게 설정되어 있습니다 (SimpleSAMLphp 관리자 패널을 통해 볼 수 있음). $as->isAuthenticated()
은 항상 false를 반환합니다.
나는 또한 https://github.com/bvidulich/CakePHP-simpleSAMLphp-Plugin과 같은 결과를 보았습니다.
실제로 세션 충돌이었습니다 .CakePHP는 php.ini에서 구성된 세션 이름을 사용하지 않고 대신'CAKEPHP'를 사용합니다 그 이유는 세션이 일치하지 않는 이유입니다. 힌트는 Thx – Gesh
+1, memcache는 영속 저장소로 사용하는 것이 좋습니다. 이미 응용 프로그램 상태 (예 : 데이터베이스)에 다른 것을 사용하고 있지만 memcache도 설치할 필요가 없습니다. – Peter