Forum

Forum feed

Anmeldung via Java für einen Zugriff einer Android App  Unten

  • Hallo,

    ich versuche auf einen durch vorherige Anmeldung geschützten Bereich mit einer Java-App zuzugreifen. Welche Möglichkeit gibt es denn mich an Zikula mit Senden von Anmeldeinformationen anzumelden, damit mir eine bestimmte Seite zurückgegeben wird. Ich benötige so viel ich weiß und gegooglet habe eine gültige AuthID. Wie und wann wird diese erzeugt. Oder gibt es andere Möglichkeiten. Weiß jemand wie sich GalleryRemote anmeldet, das müsste doch ein ähnliches Problem sein.

    Besten Dank für irgendwelche Hinweise.

    Tom
  • Also ich versuchte es mit folgendem Code. Ich dachte, wenn ich die authid auslese und ich mich mit dieser authid und den richtigen Benutzernamen und Passwort anmelde müsste es funktionieren. Wenn ich mir die Kommunikation mit Fiddler anschaue, sieht auch alles exakt gleich aus, nur bekomme ich bei der Anmeldung über den Browser die Seite zurückgegeben, bei der Java Version nicht. Wo liegt denn da mein Denkfehler? Für irgendwelche Hinweise wäre ich dankbar.

    Beste Grüße Tom

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.MalformedURLException;
    import java.net.URL;
    import java.net.URLConnection;

    public class Main {
    /**
    * Extends the size of an array.
    */
    public void sendPostRequest() {

    //Build parameter string
    try {

    //Use Fiddler2
    System.setProperty("http.proxyHost", "localhost");
    System.setProperty("http.proxyPort", "8888");
    // Send the GET request
    URL url = new URL("http://www.foo.de/index.php?module=inhalt&func=view&pid=14");
    URLConnection conn = url.openConnection();

    // Get the response and filter authid
    BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    String line;
    String authid = null;
    while ((line = reader.readLine()) != null) {
    if (line.indexOf ("authid", 0)!=-1) {
    authid = line.substring(line.indexOf ("authid", 0)+15,line.indexOf ("authid", 0)+55);
    System.out.println(authid);
    }
    }
    reader.close();

    String data = "url=%2Findex.php%3Fmodule%3Dinhalt%26func%3Dview%26pid%3D14&authid=" + authid + "&uname=Benutzername&pass=Passwort&submit=";
    URL url1 = new URL("http://www.foo.de/index.php?module=users&func=login");
    URLConnection conn1 = url1.openConnection();
    conn1.setDoOutput(true);
    OutputStreamWriter writer1 = new OutputStreamWriter(conn1.getOutputStream());

    //write parameters
    writer1.write(data);
    writer1.flush();

    // Get the response
    StringBuffer answer1 = new StringBuffer();
    BufferedReader reader1 = new BufferedReader(new InputStreamReader(conn1.getInputStream()));
    while ((line = reader1.readLine()) != null) {
    answer1.append(line);
    }
    writer1.close();
    reader1.close();
    System.out.println(data);
    System.out.println(answer1.toString()+"Ende");

    //Output the response




    } catch (MalformedURLException ex) {
    ex.printStackTrace();
    } catch (IOException ex) {
    ex.printStackTrace();
    }
    }
    /**
    * Starts the program
    *
    * @param args the command line arguments
    */
    public static void main(String[] args) {
    new Main().sendPostRequest();
    }
    }
  • Werf doch einfach mal einen Blick in das Modul Mediashare, genauer in pnremote.php.
    Dieses Modul arbeitet mit Gallery-Remote zusammen und ich denke das du dort die Lösung für dein Problem finden wirst
  • Hallo,

    habe ich erfolglos gemacht. Mich würde eher der Quellcode von GalleryRemote interessieren, den habe ich aber nicht gefunden. Ich weiß mittlererweile auch, dass es an den Cookies liegt. Vielleicht könnte ich auch ein eigenes PHP-Skript schreiben. Ich müsste nur eine Methode finden, wie ich den Benutzernamen und das Passwort mit der Datenbank vergleichen kann, auch wenn der Benutzer noch nicht angemeldet ist. Wie würde man denn sowas machen. LG Tom
  • Ich habe mal folgenden Fall gehabt:
    Ich wollte, dass sich Leute über eine Pagemaster-Publikation für eine Veranstaltung anmelden können. Aber um die Funktion pubedit aufrufen zu können musste vorher eine Anmeldung stattfinden. Also habe ich einen Benutzer "anmeldung" erstellt und ein Plugin geschrieben, das im Pagemaster-Template aufgerufen wird und der Benutzer, samt Passwort wird übergeben. So wurden die Besucher der Anmeldung "heimlich" angemeldet:

    Das Plugin:

    Code

    <?php

    function smarty_function_autologin($args, &$smarty)

        {
            // create output object
            $pnRender = & pnRender::getInstance('Users');

            // we shouldn't get here if logged in already....
            if (pnUserLoggedIn()) {
                return pnRedirect(pnModURL('Users', 'user', 'main'));
            }

            // TODO C Appears to be unused If confirmed, it can be removed. ph
            /*    $redirecttype = (int)FormUtil::getPassedValue('redirecttype', isset($args['redirecttype']) ? $args['redirecttype'] : 0, 'GET');
            if ($redirecttype == 0) {
                $returnurl = pnServerGetVar('HTTP_REFERER');
            } else {
                $returnurl = pnGetCurrentURI();
            }
            if (empty($returnurl)) {
                $returnurl = pnGetBaseURL();
            }
            */

            $returnurl =  $args['returnurl'];
            $confirmtou = (int)FormUtil::getPassedValue('confirmtou', isset($args['confirmtou']) ? $args['confirmtou'] : 0, 'GET');

            // assign variables for the template
            $pnRender->assign('loginviaoption', pnModGetVar('Users', 'loginviaoption'));
            $pnRender->assign('seclevel', pnConfigGetVar('seclevel'));
            $pnRender->assign('allowregistration', pnModGetVar('Users', 'reg_allowreg'));
            $pnRender->assign('returnurl', $returnurl);
            // do we have to show a note about reconfirming the terms of use?
            $pnRender->assign('confirmtou', $confirmtou);

            return $pnRender->fetch('users_user_autologin.htm');
        }



    ?>


    Der Aufruf im Template:

    Code

    <!--[insert name=setpagevar var="body" value='onload="document.autolog.submit()"' ]-->

    <!--[pnmodurl modname='PageMaster' func='pubedit' tid=3 assign='returnurl']-->

    <!--[if $pncore.logged_in == false]-->
        <h1>Anmeldung</h1>
        <!--[gt text="Bitte einen kleinen Moment Geduld, Sie werden gleich weitergeleitet!"]-->
        <!--[autologin func="loginscreen" type="user" returnurl=$returnurl]-->
    <!--[else]-->   
        <!--[insert name=setpagevar var="rawtext" value='' ]-->
        <h1>Anmeldung</h1>
        <!--[gt text="Bitte einen kleinen Moment Geduld, Sie werden gleich weitergeleitet!"]-->
    <!--[/if]-->


    Das Template users_user_autologin.htm

    Code

    <form  name="autolog" action="<!--[pnmodurl modname="Users" type="user" func="login"]-->" method="post">
            <input type="hidden" name="url" value="<!--[$returnurl|pnvarprepfordisplay]-->" />
            <input type="hidden" name="authid" value="<!--[insert name="generateauthkey" module="Users"]-->" />
            <input id="users_uname" type="hidden" name="uname" size="20" maxlength="25" value="anmeldung"/>
            <input id="users_pass" type="hidden" name="pass" size="20" maxlength="20" value="PASSWORT"/>
            <!--[pnbutton __alt="Log in" __title="Log in"]-->
    </form>


    Hilft dir das weiter!

    Liebe Grüße
    Thomas

  • 0 Benutzer

Diese Angaben basieren auf den Useraktivitäten der letzten 30 Minuten.