アプリの SSO ソリューションに取り組んでいます。ユーザーがログインするメインドメイン accounts.mydomain.com があります。ログインに成功したら、他のすべてのドメインでユーザーを認証する必要があります。
ユーザーがログインするたびに、認証トークンを作成し、各ドメインの接続メソッドを呼び出します。これにより、トークンが読み取られ、データベースからユーザーが取得され、そのユーザーがそのドメインにログインします。
すべて正常に動作していますが、ユーザーは他のドメインでユーザー セッションを保持できません。
これは私のコードです:(symfony 1.4を使用):
My main login action:
<?php
// get a auth token for the user
(...)
// cycle through all my domains and make a curl request to the connect action of each one
// passing the auth token
foreach(sfConfig::get('app_connect_urls') as $url){
$url.= '?auth_token='.$authToken;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
$curlResult = curl_exec($ch);
$curl_errno = curl_errno($ch);
$curl_error = curl_error($ch);
curl によって呼び出される他のドメインの接続アクション
$authToken = $request->getParameter('auth_token');
// $user = get user from token (...)
$this->getUser()->signIn($user);
echo $this->getUser()->isAuthenticated() // returns true;
return sfView::NONE;
そのドメインにアクセスすると、ユーザーは認証されません。アクションを直接呼び出すと、セッションが永続化されます。
ご協力いただきありがとうございます。