PHPでCookie認証を使う場合

こんにちは。

PHPでガルーンのSOAP APIを利用するウェブサイト(MediaWiki)を作っています。
WS-Securityでは問題なく動作していますが、Cookieを使用するとうまくいきません。
具体的にPHPのSoapClientの__setCookie()を使うと「Bad request」という例外が出てきました。

PHPコードはざっとこんな感じです。
class GaroonHooks {

public static function GaroonLogin( $user, $password ) {
    $garoonSoapClient = new CybozuGaroonAPI( '', '' );

    try {
        $results = $garoonSoapClient->UtilLogin( $user, $password );
    } catch ( SoapFault $fault ) {
        $_SESSION['GAROON_LOGIN'] = false;
        return;
    }

    $_SESSION['GAROON_LOGIN'] = true;
    GaroonHooks::SaveCookieToSession( $results->cookie );
}

public static function GaroonRender( $parser, $frame, $args ) {     
    $garoonSoapClient = new CybozuGaroonAPI( '', '' );
    GaroonHooks::SetCookieToClient( $garoonSoapClient );

    try {
        $userId = $garoonSoapClient->UtilGetLoginUserId();
    } catch ( SoapFault $fault ) {
        //return $fault;
    }

    return $userId; 
}

private static function SaveCookieToSession( $cookie ) {
    if ( isset( $_SESSION ) ) {
        $cookie = preg_replace( '/CBSESSID=/', '', $cookie );
        $cookie = preg_replace( '/ path=\//', '', $cookie );
        $_SESSION['GAROON_CBSESSID'] = $cookie ;
    }
}

private static function SetCookieToClient( &$garoonSoapClient ) {
    if ( isset( $_SESSION ) && array_key_exists( 'GAROON_CBSESSID', $_SESSION ) ) {
        $garoonSoapClient->__setCookie( 'CBSESSID', $_SESSION['GAROON_CBSESSID'] );
    }
}

}

__getLastRequest()では下記のようなリクエストが出ています。

<?xml version=“1.0” encoding=“UTF-8”?>
<env:Envelope xmlns:env=“http://www.w3.org/2003/05/soap-envelope” xmlns:ns1=“http://wsdl.cybozu.co.jp/util_api/2008” xmlns:ns2=“dummyNameSpace”>
env:Header
<Action xmlns=“http://schemas.xmlsoap.org/ws/2003/03/addressing”>
UtilGetLoginUserId
</Action>
<Security xmlns:wsu=“http://schemas.xmlsoap.org/ws/2002/12/secext”>
<UsernameToken>
<Username></Username>
<Password></Password>
</UsernameToken>
</Security>
<Timestamp>
<Created>2014-10-20T06:17:50+00:00</Created>
<Expires>2014-10-22T06:17:50+00:00</Expires>
</Timestamp>
<Locale>
jp;
</Locale>
/env:Header
env:Body
ns1:UtilGetLoginUserId
<parameters/>
/ns1:UtilGetLoginUserId
/env:Body
/env:Envelope

不思議なことに__setCookie()しなければちゃんと「ログインできません」というレスポンスが返ってきます。
Cookieのセット方法が間違っているでしょうか。

よろしくお願いします。

Cookieに指定する値に改行が含まれていると「Bad request」になるようです。
改行を削除するようにして、再度お試しいだけますか?

- $_SESSION['GAROON_CBSESSID'] = $cookie ;
+ $_SESSION['GAROON_CBSESSID'] = trim($cookie) ;

また、以下のライブラリをお使いでしょうか?
http://www.hokoku-kogyo.co.jp/hack/garoon_api.html
このライブラリのCybozuGaroonAPIオブジェクトは
デストラクタ内でUtilLogoutを実行しています。
ですので、このオブジェクトは一連の処理の中で一つだけ使用したほうが混乱が少ないと思いますので、
併せてご確認ください。

教えて頂いたようにtrim()してからcookieをセットしたらエラーが出なくなりました。
ありがとうございました。