php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Scripts > BRAINSTORMING PHP/SQL/HTML/JS/CSS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


BRAINSTORMING PHP/SQL/HTML/JS/CSS Ihr habt eine Idee, aber keinen genauen Ansatz? Diskutiert mit anderen Usern des Forums über eure Gedankengänge um evtl. hilfreiche Ideen zu bekommen!
Normale Fragen bitte weiterhin in die entsprechenden Foren!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 16-08-2005, 16:41
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard Webservices - Username-Token-Profile - Wer hat Erfahrung?

Hallo,

ich wollte prinzipiell mal fragen, ob jemand von euch genauere Kenntnisse über die Authentifizierung von Webservices über das Username-Token-Profile 1.0 hat.

Bräuchte etwas Hilfe hierzu, da mir trotz der Beschreibung die hier als PDF zu finden ist die Authentifizierung nicht gelingen will.

Also wenn jemand Ahnung davon hat, bitte hier melden, dann werde ich weiter ausführen wo ich steckenbleib - soviel vorneweg - ich versuche nicht selbst Webservices zu programmieren/anzubieten, sondern versuche einen Client zu proggen.

Gruss
Quetschi

EDIT:
Ist jetzt noch nicht richtig BS - würd aber evtl. eins werden falls ich Ansprechpartner finde.
Mit Zitat antworten
  #2 (permalink)  
Alt 16-08-2005, 18:21
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Thumbs up

Hab es mittlerweile hinbekommen

Falls jemand mal Fragen zu 'Web Services Security - UsernameToken Profile 1.0' hat stehe ich gerne zur Verfügung!
Mit Zitat antworten
  #3 (permalink)  
Alt 08-12-2009, 14:22
sarah19
 Registrierter Benutzer
Links : Onlinestatus : sarah19 ist offline
Registriert seit: Dec 2009
Beiträge: 11
sarah19 befindet sich auf einem aufstrebenden Ast
Standard

Ein sehr alter Thread, ich weiß, doch ich hätte da einige Fragen.

Ich versuche gerade mich mit einen UsernameToken zu authentifizieren, doch irgendwas läuft hier schief und ich weiß nicht was.

Der SOAP-Header soll so aussehen:
Code:
<soapenv:Envelope 
        xmlns:sch=".../schemas" 
        xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Header>
        <wsse:Security soapenv:mustUnderstand="1" 
            xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
            <wsse:UsernameToken wsu:Id="UsernameToken-30298281" 
                    xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
                <wsse:Username>...</wsse:Username>
                <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">
                    ...
                </wsse:Password>
                <wsse:Nonce>...</wsse:Nonce>
                <wsu:Created>...</wsu:Created>
            </wsse:UsernameToken>
        </wsse:Security>
    </soapenv:Header>
    ...
Und meiner sieht so aus:
Code:
<SOAP-ENV:Envelope
    xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:ns1=".../schemas"
    xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">

    <SOAP-ENV:Header>
        <ns2:Security SOAP-ENV:mustUnderstand="1">
            <ns2:UsernameToken>
                <ns2:Username>...</ns2:Username>
                <ns2:Password xsi:type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">...</ns2:Password>
            </ns2:UsernameToken>
        </ns2:Security>
    </SOAP-ENV:Header>
    ...
Der PHP-Code dazu:
Code:
                $wsdlUrl = 'http://....wsdl';
                $namespace = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd';
                
                $token = new stdClass; 
                $token->Username = new SOAPVar($username, XSD_STRING, null, null, null, $namespace);
                $token->Password = new SOAPVar($password, XSD_STRING, 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText', null, null, $namespace);
                
                $security = new stdClass;
                $security->UsernameToken = new SoapVar($token, SOAP_ENC_OBJECT, null, null, null, $namespace);
                
                $headers = new SOAPHeader($namespace, 'Security', $security, true);
                
                //$client = new SoapClient($wsdlUrl, array('Username' => $username, 'Password' => $password));
                $client = new SoapClient($wsdlUrl);
                $client->__setSOAPHeaders($headers);
Was mache ich falsch, bzw. was soll ich anders machen, damit es geht?
Kenne mich mit WebServices nicht so sehr aus und das ist das erste mal, dass ich damit arbeite.

Geändert von sarah19 (08-12-2009 um 14:26 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 08-12-2009, 14:35
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Hallo,

ich hab zwar auch nicht viel Ahnung von SOAP, aber hauptsächlich fehlt bei dir doch nonce und created, oder? Die könntest du doch noch erzeugen und mit an $token übergeben (genau wie du es mit Username und Password machst).

Evtl. hilft auch das hier: PHP: SoapServer::SoapServer - Manual

Gruß,

Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #5 (permalink)  
Alt 08-12-2009, 15:03
sarah19
 Registrierter Benutzer
Links : Onlinestatus : sarah19 ist offline
Registriert seit: Dec 2009
Beiträge: 11
sarah19 befindet sich auf einem aufstrebenden Ast
Standard

Ich weiß aber nicht so genau - bzw. gar nicht - was ich da eintragen soll.
Habe es eben so gemacht, aber funktionieren tut es nicht. Bin echt überfragt.

Code:
$wsdlUrl = '....wsdl';
$namespace = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd';
$wsu = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd';

$time = ceil(time());
$nonce = md5(date('Y-m-d H:i:s:u', $time) . ':' . $_SERVER['REMOTE_ADDR'] . ':' . 'privatekey'); // <---- ???
$created = date("Y-m-d\TH:i:s", mktime (date("H") + 5, date("i"), date("s"), date("m"), date("d"), date("Y"))) . "Z";

$token = new stdClass; 
$token->Username = new SOAPVar($username, XSD_STRING, null, null, null, $namespace);
$token->Password = new SOAPVar($password, XSD_STRING,
       'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText',
       null, null, $namespace);
$token->Nonce = new SOAPVar($nonce, XSD_STRING, null, null, null, $namespace);
$token->Created = new SOAPVar($created, XSD_STRING, null, null, null, $wsu);

$security = new stdClass;
$security->UsernameToken = new SoapVar($token, SOAP_ENC_OBJECT, null, null, null, $namespace);

$headers = new SOAPHeader($namespace, 'Security', $security, true);

//$this->setSoapClient(new SoapClient($wsdlUrl, array('Username' => $username, 'Password' => $password)));
$this->setSoapClient(new SoapClient($wsdlUrl));
$this->getSoapClient()->__setSOAPHeaders($headers);

Geändert von sarah19 (08-12-2009 um 15:09 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 08-12-2009, 15:14
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Hallo,

du scheinst die Soap-Version 1.1 zu verwenden, die geforderten Header sehen aber nach Version 1.2 aus.
Mit Zitat antworten
  #7 (permalink)  
Alt 08-12-2009, 15:17
sarah19
 Registrierter Benutzer
Links : Onlinestatus : sarah19 ist offline
Registriert seit: Dec 2009
Beiträge: 11
sarah19 befindet sich auf einem aufstrebenden Ast
Standard

Wie ändere ich das?
Mit Zitat antworten
  #8 (permalink)  
Alt 08-12-2009, 15:19
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

PHP: SoapClient::SoapClient - Manual

Schau bei den "Expamples" - gleich der zweite Eintrag.
Mit Zitat antworten
  #9 (permalink)  
Alt 08-12-2009, 15:27
sarah19
 Registrierter Benutzer
Links : Onlinestatus : sarah19 ist offline
Registriert seit: Dec 2009
Beiträge: 11
sarah19 befindet sich auf einem aufstrebenden Ast
Standard

Danke. Ist nun drin, doch es hat sich nichts geändert. Geht leider immer noch nicht.

Wie kann ich eigentlich den kompletten XML-Inhalt anzeigen lassen? Mache es bis jetzt über var_dump(), doch es schneidet mir inzwischen das meiste ab, weil es zu lang ist.
Mit Zitat antworten
  #10 (permalink)  
Alt 08-12-2009, 15:32
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Puh - das ist so lange her und ich kenn das Soap-Zeugs kaum noch. Zudem hab ich damals aus Gründen die ich heut nicht mehr weiß mit den PHP-Board-Mitteln aufgegeben und den Request manuell performt.

Aber zeig nochmal was du im Moment an Code hast und was du die wie ausgegeben bekommst.
Mit Zitat antworten
  #11 (permalink)  
Alt 08-12-2009, 15:44
sarah19
 Registrierter Benutzer
Links : Onlinestatus : sarah19 ist offline
Registriert seit: Dec 2009
Beiträge: 11
sarah19 befindet sich auf einem aufstrebenden Ast
Standard

Sorry, wegen den langen Zeilen.

PHP-Code:
Code:
public function __construct($username, $password) {
    try {
        $wsdlUrl = '....wsdl';
        $namespace = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd';
        $wsu = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd';
        
        $time = ceil(time());
        $nonce = md5(date('Y-m-d H:i:s:u', $time) . ':' . $_SERVER['REMOTE_ADDR'] . ':' . 'privatekey'); // <--- ???
        $created = date("Y-m-d\TH:i:s", mktime (date("H") + 5, date("i"), date("s"), date("m"), date("d"), date("Y"))) . "Z";
       
        $token = new stdClass; 
        $token->Username = new SOAPVar($username, XSD_STRING, null, null, null, $namespace);
        $token->Password = new SOAPVar($password, XSD_STRING,
                'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText',
                null, null, $namespace);
        $token->Nonce = new SOAPVar($nonce, XSD_STRING, null, null, null, $namespace);
        $token->Created = new SOAPVar($created, XSD_STRING, null, null, null, $wsu);
        
        $security = new stdClass;
        $security->UsernameToken = new SoapVar($token, SOAP_ENC_OBJECT, null, null, null, $namespace);
        
        $headers = new SOAPHeader($namespace, 'Security', $security, true);
                
        //$client = new SoapClient($wsdlUrl, array('Username' => $username, 'Password' => $password)));
        $client = new SoapClient($wsdlUrl, array('soap_version' => SOAP_1_2));
        $client->__setSOAPHeaders($headers);
        
        var_dump($client);
        var_dump($client->__getFunctions());
        var_dump($client->__soapCall('...', array('...')));
        
    } catch (SoapFault $exception) {
        var_dump($exception->getTrace());
    }
}
Ausgabe:
Code:
object(SoapClient)[10]
  public '_soap_version' => int 2
  public 'sdl' => resource(3, Unknown)
  public '__default_headers' => 
    array
      0 => 
        object(SoapHeader)[9]
          public 'namespace' =>
                string 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd' (length=81)
          public 'name' => string 'Security' (length=8)
          public 'data' => 
            object(stdClass)[7]
              ...
          public 'mustUnderstand' => boolean true

array
  0 => string '...' (length=50)
  1 => string '...' (length=50)
  2 => string '...' (length=50)
  3 => string '...' (length=50)

array
  0 => 
    array
      'function' => string '__doRequest' (length=11)
      'class' => string 'SoapClient' (length=10)
      'type' => string '->' (length=2)
      'args' => 
        array
          0 => string '<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:ns1=".../schemas"
xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:ns3="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<env:Header><ns2:Security env:mustUnderstand="true"><ns2:UsernameToken>
<ns2:Username>...</ns2:Username><ns2:Passw'... (length=858)
          1 => string 'http://...:0000/' (length=100)
          2 => string '' (length=0)
          3 => int 2
          4 => int 0
  1 => 
    array
      'file' => string '/home/.../soap.php' (length=100)
      'line' => int 51
      'function' => string '__soapCall' (length=10)
      'class' => string 'SoapClient' (length=10)
      'type' => string '->' (length=2)
      'args' => 
        array
          0 => string '...' (length=11)
          1 => 
            array
              ...
  2 => 
    array
      'file' => string '/home/.../index.php' (length=100)
      'line' => int 4
      'function' => string '__construct' (length=11)
      'class' => string 'soap' (length=4)
      'type' => string '->' (length=2)
      'args' => 
        array
          0 => &string '...' (length=100)
          1 => &string '...' (length=100)

Geändert von sarah19 (08-12-2009 um 16:02 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 08-12-2009, 15:57
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von sarah19 Beitrag anzeigen
Sorry, wegen den langen Zeilen.
Dagegen könntest du mit dem Ändern-Button was unternehmen
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!
Mit Zitat antworten
  #13 (permalink)  
Alt 08-12-2009, 16:03
Quetschi
 PHP Expert
Links : Onlinestatus : Quetschi ist offline
Registriert seit: Dec 2004
Beiträge: 3.134
Quetschi wird schon bald berühmt werden
Standard

Wie bist du denn an den Header im Eingangspost gekommen? Müsste __getLastRequest bzw. __getLastRequestHeaders gewesen sein.

Und brich bitte wenigstens diese Mörderzeile um.
Mit Zitat antworten
  #14 (permalink)  
Alt 08-12-2009, 16:03
sarah19
 Registrierter Benutzer
Links : Onlinestatus : sarah19 ist offline
Registriert seit: Dec 2009
Beiträge: 11
sarah19 befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von AmicaNoctis Beitrag anzeigen
Dagegen könntest du mit dem Ändern-Button was unternehmen
Wozu hat man denn einen Widescreen? Done.
Mit Zitat antworten
  #15 (permalink)  
Alt 08-12-2009, 16:05
AmicaNoctis
  Moderatorin
Links : Onlinestatus : AmicaNoctis ist offline
Registriert seit: Jul 2009
Beiträge: 5.709
Blog-Einträge: 9
AmicaNoctis sorgt für eine eindrucksvolle AtmosphäreAmicaNoctis sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von sarah19 Beitrag anzeigen
Wozu hat man denn einen Widescreen?
Du vielleicht

Zitat:
Zitat von sarah19 Beitrag anzeigen
Done.
Danke, besser, aber immer noch nicht regelkonform (193 > 100)
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt?
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke!

Geändert von AmicaNoctis (08-12-2009 um 16:13 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 03:56 Uhr.