Fragen zu: autologin mit surf auf OTRS

peterle

Forenkasper
Ich habe mir surf mal angeschaut und das scheint eine passende Möglichkeit für einen DAU-Arbeitsplatz zu sein.
http://surf.suckless.org/

Nun ist surf sehr spartanisch, aber es gibt ein script auf der Seite womit ein autologin bei twitter möglich sein soll:
http://surf.suckless.org/files/autologin

So sieht das aus:
Code:
  #!/bin/sh
  read -p "Name: " name
  read -p "Password: " -s pass
  echo
  curl --cookie ~/.surf/cookies.txt --cookie-jar ~/.surf/cookies.txt \
      -d "session[username_or_email]=$name" \
      -d "session[password]=$pass" \
      -d "remember_me=1" \
      -d "commit=Sign In" \
      http://twitter.com/sessions > /dev/null
  curl --cookie ~/.surf/cookies.txt --cookie-jar ~/.surf/cookies.txt \
      http://twitter.com/ > /dev/null
  surf http://mobile.twitter.com

Wenn ich das richtig verstehe, dann fragt das script bei Aufruf nach Name und Password und schickt dann beides per curl zum Server, um dann surf zu starten.
Die beiden session Einträge stammen aus einem <input />-Feld von Twitter.

Nun würde ich das gerne für eine OTRS Seite nutzen, allerdings verstehe ich noch nicht so ganz, wie die Daten korrekt zum Server kommen sollen ...
So sieht die OTRS Seite aus:
Code:
<!DOCTYPE html>
<html>
<!--                                                                          -->
<!--  OTRS: Copyright 2001-2012, OTRS AG. This Software is under the AGPL.    -->
<!--          Web: http://otrs.com/ - Lists: http://lists.otrs.org/            -->
<!--  GNU AFFERO General Public License: http://www.gnu.org/licenses/agpl.txt  -->
<!--                                                                          -->
<head>
    <meta http-equiv="Content-type" content="text/html;charset=utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <link rel="shortcut icon" href="/otrs-web/skins/Agent/default/img/icons/product.ico" type="image/ico" />


    <link rel="stylesheet" href="/otrs-web/skins/Agent/default/css-cache/CommonCSS_c23c4825a3a845915affff22f235fde1.css" />




<!--[if IE 8]>
    <link rel="stylesheet" href="/otrs-web/skins/Agent/default/css-cache/CommonCSS_IE8_23f4ed7777e2468749addfffa7bf8872.css" />
    <![endif]-->

    <link rel="stylesheet" href="/otrs-web/skins/Agent/default/css/thirdparty/ui-theme/jquery-ui.css" />


    <style type="text/css">
        #Header #Logo {
            background-image: url(/otrs-web/skins/Agent/default/img/logo_bg.png);
            top: -4px;
            right: 38px;
            width: 244px;
            height: 67px;
        }
    </style>



    <title>Anmeldung - OTRS</title>


<script type="text/javascript">//<![CDATA[
"use strict";

var Core = Core || {};
Core.App = Core.App || {};

/**
* @function
*      Ignores an event. Implemented without jQuery because no external JavaScript is available yet.
* @return nothing
*/
function IgnoreEvent (Event) {
    if (Event.preventDefault) {
        Event.preventDefault();
    }
    Event.returnValue = false;
    return false;
}

/**
* @function
*      This function blocks all click events on the page until it is
*      unblocked after all JavaScript was loaded. Implemented without
*      jQuery because no external JavaScript is available yet.
* @return nothing
*/
Core.App.BlockEvents = function() {
    if (document.addEventListener) {
        document.addEventListener('click', IgnoreEvent, false);
    }
    else {
        document.attachEvent('onclick', IgnoreEvent);
    }
};

/**
* @function
*      This function unblocks all click events on the page
*      after all JavaScript was loaded. Implemented without
*      jQuery because no external JavaScript is available yet.
* @return nothing
*/
Core.App.UnblockEvents = function() {
    if (document.removeEventListener) {
        document.removeEventListener('click', IgnoreEvent, false);
    }
    else {
        document.detachEvent('onclick', IgnoreEvent);
    }
};

// Now block all click events on the page to make sure that
// an agent does not click before all JavaScript was loaded,
// as event listeners are not yet available, for example.
Core.App.BlockEvents();
//]]></script>

</head>
<!-- end header -->
<body class="">

    <div id="Header" class="ARIARoleBanner">
        <div id="Logo"></div>
    </div>

    <div class="MainBox ARIARoleMain SpacingTopLarge">


        <div class="W33pc SpacingBottomLarge CenterBox">
            <noscript>
            <div class="WidgetSimple">
                <div class="Header">
                    <h2 class="Center">JavaScript nicht aktiviert oder nicht unterstützt.</h2>
                </div>
                <div class="Content">
                    <p class="SpacingTop Center">
                        Um alle Möglichkeiten von OTRS voll ausschöpfen zu können, müssen Sie JavaScript in Ihrem Browser aktivieren.</p>
                    </div>
                </div>
                </noscript>

                <div class="WidgetSimple Hidden" id="OldBrowser">
                    <div class="Header">
                        <h2 class="Center">Browser-Warnung</h2>
                    </div>
                    <div class="Content">
                        <p class="SpacingTop Center">
                            Sie verwenden leider einen (stark) veralteten Browser.
                            OTRS funktioniert mit einer großen Auswahl an Browsern, aus denen Sie wählen können. Bitte installieren Sie einen neueren Browser oder upgraden Sie Ihren vorhandenen.
                            Bitte lesen Sie auch die Dokumentation oder fragen Sie Ihren Systemadministrator.
                        </p>
                    </div>
                </div>

                <div id="LoginBox">
                    <p class="Error Center Spacing">
                      
                    </p>
                    <div class="WidgetSimple">
                        <div class="Header">
                            <h2 class="Center">Willkommen zu OTRS</h2>
                        </div>
                        <div class="Content">
                            <p class="Error Center Spacing"></p>

                            <form action="/otrs/index.pl" method="post" enctype="application/x-www-form-urlencoded" name="login">
                                <input type="hidden" name="Action" value="Login" />
                                <input type="hidden" name="RequestedURL" value=""/>
                                <input type="hidden" name="Lang" value="de"/>
                                <input type="hidden" name="TimeOffset" id="TimeOffset" value=""/>
                                <fieldset class="TableLike">
                                    <label for="User">Benutzername:</label>
                                    <div class="Field">
                                        <input type="text" id="User" name="User" value="" class="W50pc" />
                                    </div>
                                    <div class="Clear"></div>

                                    <label for="Password">Passwort:</label>
                                    <div class="Field">
                                        <input type="password" id="Password" name="Password" class="W50pc" />
                                    </div>
                                    <div class="Clear"></div>

<!--
                                    -->

                                    <div class="Field SpacingTopSmall">
                                        <button type="submit" id="LoginButton" value="Anmeldung" disabled="disabled">Anmeldung</button>
                                    </div>
                                    <div class="Clear"></div>
                                </fieldset>
                            </form>
                        </div>
                    </div>

                    <p class="Center SpacingTop">
                        <a href="#" id="LostPassword">Passwort verloren?</a>
                    </p>
                </div>


                <div id="PasswordBox" class="Hidden">
                    <div class="WidgetSimple">
                        <div class="Header">
                            <h2 class="Center Spacing">Neues Passwort anfordern</h2>
                        </div>
                        <div class="Content">
                            <p class="Error Center Spacing"></p>
                            <form action="/otrs/index.pl" method="post" enctype="application/x-www-form-urlencoded">
                                <input type="hidden" name="Action" value="LostPassword"/>
                                <input type="hidden" name="Lang" value="de"/>

                                <fieldset class="TableLike">
                                    <label for="PasswordUser">Benutzername:</label>
                                    <div class="Field">
                                        <input type="text" id="PasswordUser" name="User" value="" class="W50pc" readonly="readonly"/>
                                    </div>
                                    <div class="Clear"></div>

                                    <div class="Field SpacingTop">
                                        <button type="submit" value="Übermitteln" disabled="disabled">Übermitteln</button>
                                    </div>
                                    <div class="Clear"></div>
                                </fieldset>
                            </form>
                        </div>
                    </div>
                    <p class="Center SpacingTop">
                        <a href="" id="BackToLogin">&larr; Zurück zur Anmeldung</a>
                    </p>
                </div>



            </div>
        </div>




<div id="Footer" class="ARIARoleContentinfo">

    <div class="TopOfPage"><a href="#Top">Zum Anfang der Seite</a></div>
    <div class="Clear"></div>
</div>



<script type="text/javascript" src="/otrs-web/js/js-cache/CommonJS_99fce65c8265f90b0b32648109639e79.js"></script>


<script type="text/javascript" src="/otrs-web/js/js-cache/ModuleJS_ba8508641c8fba26f2b6ea9705902667.js"></script>

<script type="text/javascript">//<![CDATA[
"use strict";
Core.App.Ready(function () {

    Core.Config.AddConfig({
        // config
        Baselink: '/otrs/index.pl?',
        CGIHandle: '/otrs/index.pl',
        Action: 'Login',
        SessionIDCookie: '',
        SessionName: 'OTRSAgentInterface',
        SessionID: '',
        ChallengeToken: '',
        CustomerPanelSessionName: 'OTRSCustomerInterface',
        Images: '/otrs-web/skins/Agent/default/img/',
        UserLanguage: 'de',
        CheckEmailAddresses: parseInt('1', 10),
        AnimationEnabled: parseInt('1', 10),
        OpenMainMenuOnHover: parseInt('0', 10),
        // translations
        ValidateServerErrorTitle: 'Fehler',
        ValidateServerErrorMsg: 'Ein oder mehrere Fehler sind aufgetreten!',
        PopupLeaveParentWindowMsg: 'Wenn Sie diese Seite verlassen, werden auch alle geöffneten Dialoge geschlossen!',
        DialogCloseMsg: 'Diesen Dialog schließen',
        PopupBlockerMsg: 'Konnte Popup-Fenster nicht öffnen. Bitte deaktivieren Sie alle Popup-Blocker für diese Anwendung.',
        PopupAlreadyOpenMsg: 'Auf diesem Bildschirm ist bereits ein Popup-Fenster geöffnet. Möchten Sie dieses schließen und dieses stattdessen öffnen?',
        LoadingMsg: 'Laden...',
        EmptySearchMsg: 'Bitte geben Sie zumindest einen Suchbegriff ein oder * um nach Allem zu suchen.',
        SearchMsg: 'Suche'
    });

    Core.Agent.Init();





});
//]]></script>

<script type="text/javascript">//<![CDATA[
"use strict";
Core.App.Ready(function () {


  
        Core.Agent.Login.Init();
  


});
//]]></script>

<script type="text/javascript">//<![CDATA[
"use strict";
Core.App.Ready(function () {
    Core.App.UnblockEvents();
});
//]]></script>

</body>
</html>

Der interessante Teil dabei scheint hier zu liegen:
Code:
                      <fieldset class="TableLike">
                                    <label for="User">Benutzername:</label>
                                    <div class="Field">
                                        <input type="text" id="User" name="User" value="" class="W50pc" />
                                    </div>
                                    <div class="Clear"></div>

                                    <label for="Password">Passwort:</label>
                                    <div class="Field">
                                        <input type="password" id="Password" name="Password" class="W50pc" />
                                    </div>
                                    <div class="Clear"></div>

<!--
                                    -->

                                    <div class="Field SpacingTopSmall">
                                        <button type="submit" id="LoginButton" value="Anmeldung" disabled="disabled">Anmeldung</button>
                                    </div>
                                    <div class="Clear"></div>
                                </fieldset>

OTRS hängt nach der Anmeldung ein Security-Token an die URL an.

Bedankt für alle Hinweise. :o
 
Starte in Chromium den Network inspector und klicke auf "record", dann mache ein normalen login und danach svhau welche requedts gemacht wurden.

Wahrscheinlich muss man sich erst ein csrf token holen und dann erst den login request machen.

Das ganze kommt mir aber nach einer komischen methode vor.
 
Zurück
Oben