Automatisches Login

Hallo zusammen,
ich habe folgenden Sachverhalt, zu dem ich auf der Suche nach einer Lösung bin:

Es besteht ein internes System in welches sich „Mitglieder“ mit Ihren Zugangsdaten einloggen.
In dieses System soll jetzt ein Link integriert werden, worüber man zum Shopwaresystem (anderer Server, andere Domain) gelangt.

Die Aufgabenstellung ist nun, dass in Shopware ein automatisches Login erfolgen soll - so dass sich das „Mitglied“ nicht 2 mal einloggen muss. 
Gibt es hierfür bereits eine Lösung / ein Plugin? Oder ein Shopware-Freelancer der eine entsprechende Lösung anbieten kann?

Freue mich über hilfreiche Rückmeldungen.

Thomas

Ein Plugin dafür gibt es nicht. Ich habe so etwas mal für einen Kunden programmiert. Man kann Shopware entsprechend umbiegen. Hat ca. 2 Monate gedauert das alles abzudecken. Leider kann ich dir den Quellcode nicht zur Verfügung stellen. Das ganze war höchst Kundenspezifisch. Es kommt auch drauf an, wie den Fremdsystem die Nutzerdaten bereitstellt. Ich glaube es gibt ein Plugin um die Backend User aus einem LDAP Verzeichnis zu holen. Vielleicht kann man das als Basis nutzen, falls dein Fremdsystem LDAP unterstützt.

 

https://www.bitium.com/shopware-active-directory-ad-integration

https://forum.shopware.com/discussion/47228/single-sign-on

Vielleicht kannst du damit was anfangen.

Benutze ich für einen Login per URL. Du musst auf deinem anderen Server nur an den Passwort Hash des Users ran kommen um den Link zu generieren.

https://meinshop.de/?direktlogin=PASSWORDHASH 

 '1.0.0',
            'label' => 'Direktlogin',
            'description' => 'Login via URL (Direktlogin)'
        );
    }

    public function update($version)
    {
        return true;
    }

    public function install()
    {
        $this->subscribeEvent(
            'Enlight_Controller_Action_PreDispatch_Frontend_Index',
            'onFrontendPreDispatch'
        );

        return true;
    }

    public function uninstall()
    {
        return true;
    }

    public function enable()
    {
        return parent::enable();
    }

    public function disable()
    {
        return parent::disable();
    }

    public function onFrontendPreDispatch(Enlight_Event_EventArgs $args)
    {

        $subject = $args->getSubject();
        $request = $subject->Request();

        $password = $request->getParam('direktlogin');




        if($password) {


            $user = $this->get('dbal_connection')->fetchAssoc(
                'SELECT id, email, password, subshopID, language FROM s_user WHERE password = :password',
                [
                    ':password' => $password
                ]
            );

            if (empty($user['email'])) {
                return;
            }

            $repository = Shopware()->Models()->getRepository('Shopware\Models\Shop\Shop');
            $shop = $repository->getActiveById($user['language']);

            $shop->registerResources();

            Shopware()->System()->_POST = array(
                'email' => $user['email'],
                'passwordMD5' => $user['password'],
            );
            Shopware()->Modules()->Admin()->sLogin(true);

            $url = $subject->Front()->Router()->assemble(array(
                'action' => 'performOrderRedirect',
                'shopId' => $shop->getId(),
                'hash' => sha1($user['password']),
                'sessionId' => Shopware()->Session()->get('sessionId'),
                'userId' => $user['id'],
                'fullPath' => true
            ));

            if ($shop->getHost()) {
                //change the url to the subshop url
                $url = str_replace('://' . $subject->Request()->getHttpHost(), '://' . $shop->getHost(), $url);
            }

            $subject->redirect($url);
        }
    }
}

 

Hallo zusammen,

wie oder wo müsste ich die klasse einbauen oder ablegen. Bin in PHP und JAVA als profie unterwegs aber hier im SHOPWARE ein absoluter Anfänger.
Ich habe die Datzei in das Shopware/Controllers/Api verzeicniss abgelegt und mit Passwort Hash des Users folgenden Link aufgerufen.
/api/?direktlogin=$2y$10$gs.Fjt4z0TgdM6AyolTv1ezIkCuookGCz.ynpS8Kka5Zi/HFpEY5i
Das ist die Ausgabe die ich bekomme ;(
Forbidden
_You do not have permission to access this document._Muss ich nich den benutzer mit geben wie es bei PHP post der Fall ist?

Alternativ hatte wollte ich das LOGIN Formular mit einem

**curl -X POST** --header usw. nachbilden und aufrufen aber komme ich nicht an den \_\_csrf\_token, das im Formular als hidden Feld verwendet wird. 

< form name=“sLogin” method=“post” action=“http://meinshop.de/account/login/sTarget/checkout/sTargetAction/confirm” id=“login–form”>

< /form >
 

Ich würde mich sehr freunen, wenn mir hier jemad helfen kann.