1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen

Header Authorization für ReEST Schnittstelle

Dieses Thema im Forum "HTML & XHTML" wurde erstellt von Spelmann, 25. April 2015.

  1. Spelmann

    Spelmann Erfahrenes Mitglied

    Ich muss für eine Anwendung eine Authentifizierung in einem Header senden, weiß aber nicht, was damit gemeint ist. Innerhalb von <head></head> kann ich doch nur meta Angaben deklarieren.

    Kann mir jemand sagen, wie ich eine HTTP basic authentication übermitteln kann?
    Dieses Element muss irgendwo hin, aber ich weiß nicht wo: Authorization: Basic xyz
     
  2. sheel

    sheel I love Asm Administrator

    Hi

    wie der Name schon sagt geht es nicht um HTML, sondern HTTP,
    also das Verfahren wie Dateien (zB. HTML-Dateien mit Head und Body und allem einfach
    komplett, und/oder CSS, JS, Bilder...) vom Server zum Browser übertragen werden,
    wie Formulareinagben zurückgeschickt werden usw.

    Letztendlich sind kleine Textnachrichten in einem bestimmten Format, die zwischen Server
    und Browser ausgetaucht werden. Browser meldet sich, teilt mit was es für ein Programm ist,
    fragt nach einem bestimmten Dateinamen; Server sendet zurück "das ist ein PNG-Bild,
    hat 1234 Byte, und der Dateiinhalt folgt..." Stark vereinfacht. Und alles außer dem tatsächlichen
    Inhalt der (PNG/etc.)-Datei sind in dem Zusammenhang "Header". Also die ganzen Zusatzinfos,
    die da kommuniziert werden.
    Bei den ca. Hunderttausend verschiedenen möglichen Infos, die da gesendet werden können,
    sind eben auch welche zur Anforderung bzw. Senden von Passwörtern dabei, falls der Server
    bestimmte Dateien so schützen will (nicht wirklich sicher, aber naja)

    Wie man das wo angibt hängt davon ab, womit und wie man sein Programm schreibt(?)
     
  3. Spelmann

    Spelmann Erfahrenes Mitglied

    Danke für die ausführliche Antwort.
    Aber es bleiben doch noch Fragen offen, bzw. neue kommen dazu.

    Ich will via PHP auf ein XML zugreifen und soll mich dafür authentifizieren.
    siehe: https://services.mobile.de/manual/search-api.html unter Authentication

    Nach der Lektüre deiner Ausführungen und meinem Verständnis, müsste ich doch dann lediglich ganz oben im Dokument schreiben:
    PHP:
    1. <?php
    2. print header('Authorization: foobar');
    3. ?>
    Funktioniert aber nicht.
    Auszug der Fehlermeldung: ...failed to open stream: HTTP request failed! HTTP/1.1 401 Unauthorized...

    Hab ich noch was falsch verstanden?
     
  4. sheel

    sheel I love Asm Administrator

    Abgesehen davon, dass dein Header nicht richtig ausschaut
    (und header() nicht mit print zusammengehört), ist das die falsche Stelle im System:
    So (nur mit richtigen Angaben) würdest du deine PHP-Seite gegen unberechtige Aufrufe schützen.
    Du willst ja eine andere geschützte Seite per PHP verwenden.

    Mit welchem Code du die andere Seite verwendest wäre hilfreich, dann kann man da genauere Angaben machen.
     
  5. Spelmann

    Spelmann Erfahrenes Mitglied

    Ich will auf eine XML zugreifen für die ich einen Link (ReST Schnittstelle) habe:
    Code (Text):
    1. $daten = file_get_contents('https://services.mobile.de/search-api/search?customerNumber=******');
    Diese Zeile erzeugt auch die o.g. Fehlermeldung.
    In der Anleitung von mobile.de steht:
    Ich soll genau genommen mindestens zwei Dinge im Header senden:
    • Accept - application/xml (You must send this header)
    • Authorization - Username and password are joined together using a colon and then being encoded using Base64. (You must send this header)
    Ich müsste jetzt wissen, wie und an welcher Stelle ich Header senden kann.
    Ich steh leider völlig auf dem Schlauch und sehe wahrscheinlich den Wald vor lauter Bäumen nicht.
     
    Zuletzt bearbeitet: 25. April 2015
  6. sheel

    sheel I love Asm Administrator

  7. Spelmann

    Spelmann Erfahrenes Mitglied

    Heißt das, wenn ich die Autorisation mit Curl realisiere kann ich im weiteren Code file_get_contents() nicht benutzen, und muss anders vorgehen um die Daten auszulesen?
    Zum Verständnis: ich hab schon einiges mit PHP gemacht, aber zum ersten mal mit XML sowie diesem Header Problem zu tun. Ich bin auf die Tutorials und Anleitungen angewiesen, die es im Netz gibt. Die meisten davon beziehen sich auf simpleXML und DOM. Bei einem von beidem möchte ich gerne bleiben. Beide Methoden benutzen, so wie ich das jetzt als XML Neuling sehe, file_get_contents().

    Ist es wirklich so kompliziert, diese Header Autorisation zu senden? Ich hatte gedacht, mir fehlt nur ein kleiner Codeschnipsel der mir in Folge der Autorisation das hier erlaubt:
    Code (Text):
    1. $daten = file_get_contents('https://services.mobile.de/search-api/search?customerNumber=123456');
    2. $xml = simplexml_load_string($daten);
    3. usw.
    Ich wäre für ein simples Beispiel, soweit möglich, dankbar.
     
  8. sheel

    sheel I love Asm Administrator

    Die XML-Verarbeitungs-Art kann ja komplett gleich bleiben,
    es geht nur um einen Ersatz für das file_get_contents
    zB.
    PHP:
    1. $cu = curl_init("https://services.mobile.de/search-api/search?customerNumber=******");
    2. curl_setopt($cu, CURLOPT_HEADER, 0);
    3. curl_setopt($cu, CURLOPT_HTTPHEADER, array(
    4.     'Accept: application/xml',
    5.     'Authorization: ' . base64_encode("deinusername,deinpasswort")
    6.     ));
    7. $cudata = curl_exec($ch);
    wobei da eben die Logindaten noch einzusetzen sind und die Fehlerprüfung noch fehlt.

    edit: In $cudata sollte dann eben der geladene Inhalt sein.
     
    Zuletzt bearbeitet: 26. April 2015
    Spelmann gefällt das.
  9. Spelmann

    Spelmann Erfahrenes Mitglied

    Ah ok, ich probier das aus.
    Danke Dir!
     
  10. Spelmann

    Spelmann Erfahrenes Mitglied

    Hi sheel,
    endlich hatte ich wieder Zeit mich an das Projekt zu setzen. Leider ohne Erfolg:

    PHP:
    1. <!DOCTYPE html>
    2. <html>
    3.     <head>
    4.         <meta charset="UTF-8">
    5.         <title>MOBILE.de Test</title>
    6.     </head>
    7.     <body>
    8.         <h2>Auflistung</h2>
    9.         <?php
    10.         $cu = curl_init("https://services.mobile.de/search-api/search?customerNumber=******");
    11.         curl_setopt($cu, CURLOPT_HEADER, 0);
    12.         curl_setopt($cu, CURLOPT_HTTPHEADER, array(
    13.             'Accept: application/xml',
    14.             'Authorization: ' . base64_encode("nutzernamepasswort") //Soll laut mobile.de als Kolonne geschrieben werden
    15.             ));
    16.         $cudata = curl_exec($cu);
    17.         curl_close($cu);
    18.      
    19.         $xml = simplexml_load_string($cudata);
    20.         var_dump($xml);
    21.         ?>
    22.     </body>
    23. </html>
    mein var_dump gibt aber ausser bool(false) nichts aus.
    Habe ich was falsch gemacht?
     
    Zuletzt bearbeitet: 9. Mai 2015
  11. sheel

    sheel I love Asm Administrator

    Hi

    setz mal
    PHP:
    1. ini_set('display_errors', true);
    am Anfang des PHP-Teils. Kommen dann irgendwelche weiteren Meldungen?
    Vielleicht auch nur im ausgegebenen Quelltext sichtbar, je nach Browser zB. mit Strg-U anzeigbar?
     
  12. Spelmann

    Spelmann Erfahrenes Mitglied

    Nee, nix. Auch nicht im Quelltext. Dass ich das Script local auf XAMPP ausführe ist egal oder?
     
  13. Spelmann

    Spelmann Erfahrenes Mitglied

    Oh, nein ist es nicht! Teste ich das Script auf dem Server bekomme ich die Rückmeldung:
    401 Unauthorized. Die Zugangsdaten die ich verwende müssten aber stimmen.
     
  14. sheel

    sheel I love Asm Administrator

    Also, eigentlich sollte das lokal auch gleich funktionieren. Naja, Hauptsache es geht vorerst am Server.

    Ein Problem hab ich grad gefunden:
    Also nutzername,passwort statt nutzernamepasswort im Base64 drin.
    (wo du in der englischen Anleitung das Wort "Kolonne" siehst ist mir nicht klar :))
     
    Spelmann gefällt das.
  15. Spelmann

    Spelmann Erfahrenes Mitglied

    Auweia, wie peinlich. Colon = Doppelpunkt. Also kein kein Komma zwischen Nutzername und Passwort sondern eben jenen Doppelpunkt.
    Und siehe da, es funktioniert. Jedenfalls online. Auf meinem XAMPP wirkt das allerdings nicht. Kannst Du mir das gerade noch erklären?

    Ansonsten danke ich Dir schon mal sehr für deine Hilfe!!!
     
    Zuletzt bearbeitet: 9. Mai 2015
  16. sheel

    sheel I love Asm Administrator

    Genau, peinlich für mich :D
    Zum Xampp ... grad keine Idee,,,
     
Die Seite wird geladen...