OKAPI: Level 3 Authentication

Hier geht es um die Programmierung von Opencaching.de - User mit Erfahrungen im Bereich PHP, MySQL, HTML, JavaScript, CSS werden hier ständig gesucht
Benutzeravatar
4_Vs
Vereinsmitglied
Vereinsmitglied
Beiträge: 3150
Registriert: 18.03.2012, 07:25

Hebe die Haare,

ich spiele ja inzwischen schon seit einiger Zeit mit OKAPI rum und komme auch mit Level 0 und Level 1 Authentication zurecht ... jetzt kommt der nächste Schritt und ich stehe vor einem großen FRAGEZEICHEN :)

Es geht um die Level 3 Authentication

Bei OKAPI steht folgendes:

Code: Alles auswählen

Level 3. OAuth Consumer+Token Signature. You must call this method with proper OAuth Consumer+Token signature (based on both Consumer Secret and Token Secret).

some_method
?arg=44
&oauth_consumer_key=a7Lkeqf8CjNQTL522dH8
&oauth_nonce=2993717
&oauth_signature_method=HMAC-SHA1
&oauth_timestamp=1313882596
&oauth_token=AKQbwa28Afp1YvQAqSyK
&oauth_version=1.0
&oauth_signature=qbNiWkUS93fz6ADoNcjuJ7psB%2bQ%3d
Mmmh, okay, ich nehme an, die ganzen Variablen kommen an die URL dran, mit der ich den Aufruf starte, soweit klar - aber sprechen wir mal über die einzelnen Sachen:

Code: Alles auswählen

?arg=44
Was hat es damit auf sich? Kündigt das Argument 44 die Level 3 Authentication an?

Code: Alles auswählen

&oauth_consumer_key=a7Lkeqf8CjNQTL522dH8
OK, ist klar, habe ich ...

Code: Alles auswählen

&oauth_nonce=2993717
nonce? Was ist das bitte?

Code: Alles auswählen

&oauth_signature_method=HMAC-SHA1
Das wird wahrscheinlich so fix übernommen und muss nicht geändert werden, richtig?

Code: Alles auswählen

&oauth_timestamp=1313882596
OK,timestamp ist auch klar, aber wofür benötige ich den bzw. was wird damit gemacht?

Code: Alles auswählen

&oauth_token=AKQbwa28Afp1YvQAqSyK
Wie komme ich an den Token?

Code: Alles auswählen

&oauth_version=1.0
Das ist fix?

Code: Alles auswählen

&oauth_signature=qbNiWkUS93fz6ADoNcjuJ7psB%2bQ%3d
Und was ist das?

Sorry, aber ich bin halt ein Stück weit bleeeed :)

Danke für die Hilfe ...
Whenever I try to plan something, it doesn't seems to work out. So why plan, it only leads to disappointment! (Eddie van Halen)
Benutzeravatar
bohrsty
Administrator
Administrator
Beiträge: 1367
Registriert: 30.03.2012, 22:54

ich kenne mich damit auch nicht aus, aber evtl. helfen die erlaeuterungen und beispiele von php.net...

http://php.net/manual/en/book.oauth.php
http://www.php.net/manual/en/oauth.examples.fireeagle.php

ansonsten hilft dir bestimmt wrygiel gerne weiter ;) ::)
gruss Nils (bohrsty)

Bild
Benutzeravatar
4_Vs
Vereinsmitglied
Vereinsmitglied
Beiträge: 3150
Registriert: 18.03.2012, 07:25

[quote="bohrsty"]
ich kenne mich damit auch nicht aus, aber evtl. helfen die erlaeuterungen und beispiele von php.net...

http://php.net/manual/en/book.oauth.php
http://www.php.net/manual/en/oauth.examples.fireeagle.php

ansonsten hilft dir bestimmt wrygiel gerne weiter ;) ::)
[/quote]
Danke erstmal ... ich hoffe noch auf flopp oder OcRacher ... die müssten das doch auch nutzen :)
Whenever I try to plan something, it doesn't seems to work out. So why plan, it only leads to disappointment! (Eddie van Halen)
Benutzeravatar
bohrsty
Administrator
Administrator
Beiträge: 1367
Registriert: 30.03.2012, 22:54

Florian liest glaube ich auch nur aus, dafuer waere es nicht notwendig, aber arminus (mobile webapp) oder ra_sch (c:geo) muessten auch level 3 nutzen...
gruss Nils (bohrsty)

Bild
Benutzeravatar
4_Vs
Vereinsmitglied
Vereinsmitglied
Beiträge: 3150
Registriert: 18.03.2012, 07:25

[quote="bohrsty"]
Florian liest glaube ich auch nur aus, dafuer waere es nicht notwendig, aber arminus (mobile webapp) oder ra_sch (c:geo) muessten auch level 3 nutzen...
[/quote]
Aaah, ra_sch und nicht OcRacer ;o) ...
Whenever I try to plan something, it doesn't seems to work out. So why plan, it only leads to disappointment! (Eddie van Halen)
Benutzeravatar
flopp
Vereinsmitglied
Vereinsmitglied
Beiträge: 1008
Registriert: 18.03.2012, 17:02

Ich habe testweise auch mal die Level-3-Authorisierung in PHP implementiert...
[url=http://www.flopp-caching.de/]Flopps Tolle Karte[/url] | [url=http://www.florian-pigorsch.de/oc]OC[/url] | [url=http://www.florian-pigorsch.de/gc]GC[/url] | [url=http://florian-pigorsch.de/+]G+[/url] | [url=http://florian-pigorsch.de/t]Tw[/url] | [url=http://florian-pigorsch.de/fb]Fb[/url]
Benutzeravatar
4_Vs
Vereinsmitglied
Vereinsmitglied
Beiträge: 3150
Registriert: 18.03.2012, 07:25

[quote="flopp"]
Ich habe testweise auch mal die Level-3-Authorisierung in PHP implementiert...
[/quote]
Prima, und kannst Du mir helfen?
Whenever I try to plan something, it doesn't seems to work out. So why plan, it only leads to disappointment! (Eddie van Halen)
Benutzeravatar
flopp
Vereinsmitglied
Vereinsmitglied
Beiträge: 1008
Registriert: 18.03.2012, 17:02

[quote="4_Vs"]
[quote="flopp"]
Ich habe testweise auch mal die Level-3-Authorisierung in PHP implementiert...
[/quote]
Prima, und kannst Du mir helfen?
[/quote]

Ich verwende eine abgewandelte Version von twitteroauth.

Guck mal, ob das funktioniert: LINK. Da gibt's auch den zugehörigen Quellcode.

Edit: ich habe den Link wieder entfernt, da mein Code eine Exception im OKAPI-Code auslöst, wie Peter mir eben mitgeteilt hat :(
Es gibt schon einen Fix, aber der muss erst in den OKAPI-Code eingespielt werden...
Zuletzt geändert von flopp am 08.10.2013, 21:22, insgesamt 1-mal geändert.
[url=http://www.flopp-caching.de/]Flopps Tolle Karte[/url] | [url=http://www.florian-pigorsch.de/oc]OC[/url] | [url=http://www.florian-pigorsch.de/gc]GC[/url] | [url=http://florian-pigorsch.de/+]G+[/url] | [url=http://florian-pigorsch.de/t]Tw[/url] | [url=http://florian-pigorsch.de/fb]Fb[/url]
Benutzeravatar
ra_sch
Micro
Micro
Beiträge: 273
Registriert: 07.10.2012, 21:06

4_Vs hat geschrieben: Mmmh, okay, ich nehme an, die ganzen Variablen kommen an die URL dran, mit der ich den Aufruf starte, soweit klar - aber sprechen wir mal über die einzelnen Sachen:

Code: Alles auswählen

?arg=44
Was hat es damit auf sich? Kündigt das Argument 44 die Level 3 Authentication an?
ist nur ein Stellvertreterbeispiel: some_method?arg=44 kann sein

Code: Alles auswählen

ocapi/services/cache/geocache?cache_code=OC1234

Code: Alles auswählen

&oauth_consumer_key=a7Lkeqf8CjNQTL522dH8
OK, ist klar, habe ich ...

Code: Alles auswählen

&oauth_nonce=2993717
nonce? Was ist das bitte?
Einmalig verwendeter Zufallsschlüssel. Damit werden Replay-Attacken verhindert (siehe OAuth-spec)

Code: Alles auswählen

&oauth_signature_method=HMAC-SHA1
Das wird wahrscheinlich so fix übernommen und muss nicht geändert werden, richtig?
Richtig

Code: Alles auswählen

&oauth_timestamp=1313882596
OK,timestamp ist auch klar, aber wofür benötige ich den bzw. was wird damit gemacht?
Die Timestamp wird für gültigkeitsprüfungen verwendet. Zu alte Requests werden verworfen

Code: Alles auswählen

&oauth_token=AKQbwa28Afp1YvQAqSyK
Wie komme ich an den Token?
Das erhältst du, wenn deine Seite/Anwendung 'autorisiert' wird (das ist nochmal ein eigenes Kapitel)

Code: Alles auswählen

&oauth_version=1.0
Das ist fix?
Ja

Code: Alles auswählen

&oauth_signature=qbNiWkUS93fz6ADoNcjuJ7psB%2bQ%3d
Und was ist das?
Das ist das Kernstück. Diese Signatur wird aus den 'sichtbaren' Teilen deiner Anfrage (url, parameter, oauth-parameter) zusammen mit deinem Conusmer-Secret (hast du bei der OKAPI-Anmeldung bekommen) und deinem Token-Secret (hast du bei der Autorisierung bekommen) mittels des gewählten Algorithmus (hier HMAC-SHA1) berechnet. Das ist das Kernstück, das OAuth zur Authentifizierung macht. Entweder du verwendest hier eine Bibliothek, und begnügst dich mit der 'blue-pill', oder greifst zur 'red-pill' und setzt dich mit der OAuth-spec auseinander (http://tools.ietf.org/html/rfc5849). Dann kannst du natürlich immer noch eine Bibliothek einsetzen, aber dann weißt du auch, was sie tut :)
Sorry, aber ich bin halt ein Stück weit bleeeed :)

Danke für die Hilfe ...
Ich hoffe, es war eine Hilfe

ra_sch
Benutzeravatar
4_Vs
Vereinsmitglied
Vereinsmitglied
Beiträge: 3150
Registriert: 18.03.2012, 07:25

[quote="ra_sch"]
Ich hoffe, es war eine Hilfe

ra_sch
[/quote]
Auf jeden Fall ... super, klasse ... aber jetzt habe ich natürlich weitere Fragen :)

[quote="ra_sch"]
[quote="4_Vs"]

Code: Alles auswählen

&oauth_nonce=2993717
nonce? Was ist das bitte?
[/quote]
Einmalig verwendeter Zufallsschlüssel. Damit werden Replay-Attacken verhindert (siehe OAuth-spec)
[/quote]
Okay, kann ich den so erzeugen?

Code: Alles auswählen

<?
$oauth_nonce = microtime(true);
?>
[quote="ra_sch"]
[quote="4_Vs"]

Code: Alles auswählen

&oauth_token=AKQbwa28Afp1YvQAqSyK
Wie komme ich an den Token?
[/quote]
Das erhältst du, wenn deine Seite/Anwendung 'autorisiert' wird (das ist nochmal ein eigenes Kapitel)
[/quote]
Okay, da komme ich dann vllt. noch mal auf Dich zu :)

[quote="ra_sch"]
[quote="4_Vs"]

Code: Alles auswählen

&oauth_signature=qbNiWkUS93fz6ADoNcjuJ7psB%2bQ%3d
Und was ist das?
[/quote]
Das ist das Kernstück. Diese Signatur wird aus den 'sichtbaren' Teilen deiner Anfrage (url, parameter, oauth-parameter) zusammen mit deinem Conusmer-Secret (hast du bei der OKAPI-Anmeldung bekommen) und deinem Token-Secret (hast du bei der Autorisierung bekommen) mittels des gewählten Algorithmus (hier HMAC-SHA1) berechnet. Das ist das Kernstück, das OAuth zur Authentifizierung macht. Entweder du verwendest hier eine Bibliothek, und begnügst dich mit der 'blue-pill', oder greifst zur 'red-pill' und setzt dich mit der OAuth-spec auseinander (http://tools.ietf.org/html/rfc5849). Dann kannst du natürlich immer noch eine Bibliothek einsetzen, aber dann weißt du auch, was sie tut :)
[/quote]
Mmmh, okay - ich oute mich und nehme lieber die 'blue-pill' ... jetzt muss mir nur noch einer sagen, wie die Bibliothek heisst :)

Danke, danke, danke
Micha
Whenever I try to plan something, it doesn't seems to work out. So why plan, it only leads to disappointment! (Eddie van Halen)
Benutzeravatar
ra_sch
Micro
Micro
Beiträge: 273
Registriert: 07.10.2012, 21:06

[quote="4_Vs"]

[quote="ra_sch"]
[quote="4_Vs"]

Code: Alles auswählen

&oauth_nonce=2993717
nonce? Was ist das bitte?
[/quote]
Einmalig verwendeter Zufallsschlüssel. Damit werden Replay-Attacken verhindert (siehe OAuth-spec)
[/quote]
Okay, kann ich den so erzeugen?

Code: Alles auswählen

<?
$oauth_nonce = microtime(true);
?>
[/quote]
PHP (das ist doch PHP?) ist nicht so mein Thema, aber wenn die Funktion das tut, was der Name suggeriert, funktioniert das.
[quote="4_Vs"]
[quote="ra_sch"]
[quote="4_Vs"]

Code: Alles auswählen

&oauth_signature=qbNiWkUS93fz6ADoNcjuJ7psB%2bQ%3d
Und was ist das?
[/quote]
Das ist das Kernstück. Diese Signatur wird aus den 'sichtbaren' Teilen deiner Anfrage (url, parameter, oauth-parameter) zusammen mit deinem Conusmer-Secret (hast du bei der OKAPI-Anmeldung bekommen) und deinem Token-Secret (hast du bei der Autorisierung bekommen) mittels des gewählten Algorithmus (hier HMAC-SHA1) berechnet. Das ist das Kernstück, das OAuth zur Authentifizierung macht. Entweder du verwendest hier eine Bibliothek, und begnügst dich mit der 'blue-pill', oder greifst zur 'red-pill' und setzt dich mit der OAuth-spec auseinander (http://tools.ietf.org/html/rfc5849). Dann kannst du natürlich immer noch eine Bibliothek einsetzen, aber dann weißt du auch, was sie tut :)
[/quote]
Mmmh, okay - ich oute mich und nehme lieber die 'blue-pill' ... jetzt muss mir nur noch einer sagen, wie die Bibliothek heisst :)

Danke, danke, danke
Micha
[/quote]
Hier ist wahrscheinlich die von flopp erwähnte Abwandlung von twitteroauth das Richtige (wie gesagt, PHP ist nicht mein Thema). Dann musst du dich wahrscheinlich auch um die Details wie 'nonce' nicht mehr kümmern und Funktionen für das autorisieren sollte es auch geben.

Falls noch Fragen sind, bemühe ich mich gerne um eine Klärung, soweit ich dazu beitragen kann :)

Gruß
ra_sch
erdbot

[quote="4_Vs"]
Hebe die Haare,

ich spiele ja inzwischen schon seit einiger Zeit mit OKAPI rum und komme auch mit Level 0 und Level 1 Authentication zurecht ... jetzt kommt der nächste Schritt und ich stehe vor einem großen FRAGEZEICHEN :)

Es geht um die Level 3 Authentication

Bei OKAPI steht folgendes:

Code: Alles auswählen

Level 3. OAuth Consumer+Token Signature. You must call this method with proper OAuth Consumer+Token signature (based on both Consumer Secret and Token Secret).

some_method
?arg=44
&oauth_consumer_key=a7Lkeqf8CjNQTL522dH8
&oauth_nonce=2993717
&oauth_signature_method=HMAC-SHA1
&oauth_timestamp=1313882596
&oauth_token=AKQbwa28Afp1YvQAqSyK
&oauth_version=1.0
&oauth_signature=qbNiWkUS93fz6ADoNcjuJ7psB%2bQ%3d
Mmmh, okay, ich nehme an, die ganzen Variablen kommen an die URL dran, mit der ich den Aufruf starte, soweit klar - aber sprechen wir mal über die einzelnen Sachen:

Code: Alles auswählen

?arg=44
Was hat es damit auf sich? Kündigt das Argument 44 die Level 3 Authentication an?

Code: Alles auswählen

&oauth_consumer_key=a7Lkeqf8CjNQTL522dH8
OK, ist klar, habe ich ...

Code: Alles auswählen

&oauth_nonce=2993717
nonce? Was ist das bitte?

Code: Alles auswählen

&oauth_signature_method=HMAC-SHA1
Das wird wahrscheinlich so fix übernommen und muss nicht geändert werden, richtig?

Code: Alles auswählen

&oauth_timestamp=1313882596
OK,timestamp ist auch klar, aber wofür benötige ich den bzw. was wird damit gemacht?

Code: Alles auswählen

&oauth_token=AKQbwa28Afp1YvQAqSyK
Wie komme ich an den Token?

Code: Alles auswählen

&oauth_version=1.0
Das ist fix?

Code: Alles auswählen

&oauth_signature=qbNiWkUS93fz6ADoNcjuJ7psB%2bQ%3d
Und was ist das?

Sorry, aber ich bin halt ein Stück weit bleeeed :)

Danke für die Hilfe ...
[/quote]

OMG... ich kann Dir das alles sagen, müsste mir Oauth in einer ruhigen Minute mal anschauen, auf den ersten Blick kann ich mir denken anhand der von Dir geposteten Auszüge wie der Ablauf ist... das ist mein täglich Brot, da ich mich mit den ganzen Tag mit PKI-Management, Redesign von Enterprise-Pki´s, Federation-Services, Encryption und Authentifizierungsverfahren beschäftige  ;)
Ich gugg ma das ich mir das zeitnah anseh... müsste aber recht einfach sein  :)
Zuletzt geändert von erdbot am 09.10.2013, 22:51, insgesamt 1-mal geändert.
Benutzeravatar
flopp
Vereinsmitglied
Vereinsmitglied
Beiträge: 1008
Registriert: 18.03.2012, 17:02

Genau. Mit twitteroauth muss man sich im Prinzip gar nicht mehr um die Details kümmern - das läuft alles automatisch.
[url=http://www.flopp-caching.de/]Flopps Tolle Karte[/url] | [url=http://www.florian-pigorsch.de/oc]OC[/url] | [url=http://www.florian-pigorsch.de/gc]GC[/url] | [url=http://florian-pigorsch.de/+]G+[/url] | [url=http://florian-pigorsch.de/t]Tw[/url] | [url=http://florian-pigorsch.de/fb]Fb[/url]
Benutzeravatar
flopp
Vereinsmitglied
Vereinsmitglied
Beiträge: 1008
Registriert: 18.03.2012, 17:02

So, da der OKAPI-Bug inzwischen korrigiert wurde, gibt es jetzt meinen Test-Client mit OAuth-Level 3: [url=http://www.flopp.net/oauth/index.php]http://www.flopp.net/oauth/index.php[/url]
Der Quellcode ist dort auch verlinkt.

Testweise werden mal alle eigenen Funde in einer Liste angezeigt (das benötigt OAuth-Level 3).
Zuletzt geändert von flopp am 20.10.2013, 14:08, insgesamt 1-mal geändert.
[url=http://www.flopp-caching.de/]Flopps Tolle Karte[/url] | [url=http://www.florian-pigorsch.de/oc]OC[/url] | [url=http://www.florian-pigorsch.de/gc]GC[/url] | [url=http://florian-pigorsch.de/+]G+[/url] | [url=http://florian-pigorsch.de/t]Tw[/url] | [url=http://florian-pigorsch.de/fb]Fb[/url]
dl6hbo

Das funktioniert hervorragend !  Danke sehr !
Antworten