REST-API Identity ungleiche Daten!

Hallo MobyDick-Freunde,

ich beschäftige mich gerade mit der REST-API.
Die ist richtig super und simpel zu bedienen.

Allerdings finde ich in der Dokumentation (Wiki) kaum vernünftige Infos!
Vor allem was die Identity angeht! Im Wiki steht unter MobyDick Version 7.0 (de) etwas, dass ich von einem User den
MD5 Hash auslesen kann und für Authentifizierungszwecke verwenden kann. In der Version 7.08 fehlt dieser aber! :frowning:
Auch wird im Wiki unter 7.08 gar nichts mehr zu REST-Api Komponenten beschrieben!

Zudem fehlt irgendwie in der Doku, was die einzelnen Response-Felder sind! Vieles ist zwar ersichtlich, ich weiß aber nicht für was zum Beispiel der Response “013use_doc” steht? Hier wäre etwas mehr Infos nicht schlecht! :slight_smile:

Hier ein Response aus der aktuellste Version /services/identity/{userName}:


{
  "003use_id": 3,
  "003use_lastlogin": "2014-12-27 15:44:37.617105",
  "003use_name": "irgendwer",
  "003use_tmstmp": "2015-01-02 13:35:40.34118",
  "003use_doc": null,
  "003use_enabled": true,
  "003use_bez": "Vorname Nachname",
  "003use_authrole": null,
  "011acc_id": 2,
  "011acc_tmstmp": "2015-01-02 13:35:40.34118",
  "011acc_voiidwatch": 2,
  "011acc_calleridnum": null,
  "020fax_id": 1,
  "009ext_id": 6,
  "016voi_id": 2,
  "009ext_extension": "100",
  "009ext_tmstmp": "2015-01-02 13:35:40.34118",
  "028pho_id": 1
}

Hier ein Response von /services/identity:



  {
    "003use_id": 1,
    "003use_lastlogin": "2015-01-13 13:56:35.477176",
    "003use_name": "admin",
    "003use_tmstmp": "2015-01-13 13:56:35.477176",
    "003use_doc": null,
    "003use_enabled": true,
    "003use_bez": "Administrator Asterisk",
    "003use_authrole": "ROLE_SYSADMIN",
    "011acc_id": 1,
    "011acc_tmstmp": "2014-12-23 18:55:16.713197",
    "011acc_voiidwatch": 1,
    "011acc_calleridnum": null,
    "020fax_id": null,
    "009ext_id": 1,
    **"011acc_pin": "7599",** fehlt beim direkten Useraufruf?!    
    "016voi_id": 1,
    **"009ext_extension": "99901",** fehlt beim direkten Useraufruf?!
    "009ext_tmstmp": "2014-12-23 18:55:16.713197",
    "028pho_id": null,
    **"016voi_mailbox": "99901",** fehlt beim direkten Useraufruf?!
    **"faxextension": ""** fehlt beim direkten Useraufruf?!
  },
  {
   ...
  }
]

Grüße aus dem bayrischen Schwaben mit der Hauptstadt Augsburg :slight_smile:
Danny

Hallo Danny,

Im Wiki steht unter MobyDick Version 7.0 (de) etwas, dass ich von einem User den
MD5 Hash auslesen kann und für Authentifizierungszwecke verwenden kann. In der Version 7.08 fehlt dieser aber!

Das hast du dir quasi selbst schon beantwortet, da die Dokumentation für die MobyDick 7.00 auch nur für die Version 7.00.X gilt. Zwischen 7.00 und 7.08 liegen 8 Minor Versionen, in denen sich solche Dinge durchaus ändern können - so z. B. auch mit dem Passwort, das nun aus Sicherheitsgründen nicht mehr mit ausgegeben wird. Bei der 7.08.00 ist die REST-Dokumentation zum größten Teil Interaktiv, in dem du “http://<DEINE_MOBYDICK>/services/apidoc/” im Browser aufrufst und dann die REST Zugangsdaten eingibst (Achtung: Du musst im Browser zusätzlich zuvor in der WebUI selbst eingeloggt sein). Dann siehst du alle Verfügbaren REST-Calls und kannst diese auch gleich interaktiv ausprobieren.

Zu den Feldern:

  • “009ext_extension” ist in beiden Aufrufen vorhanden, da hast du dich wohl schlicht verlesen.

Für die restlichen Felder habe ich mal ein Ticket aufgenommen, das werden wir uns näher ansehen.

Grüße,
Jan

Hallo Jan,

danke für die schnelle Antwort. Das funzt richtig super hier! :slight_smile:
Ja, die ApiDoc nutze ich schon. :slight_smile:

Aber leider wird hier nichts dokumentiert, was die Response-Felder betrifft! Eben zum Beispiel “013use_doc”; was ist dessen Typ? (Integer, String, Date, …). Dieser Eintrag steht in meinen Konfigurationen immer auf “null”, aber für was steht er? doc = Dokumentation?! :slight_smile:
Da wäre für Entwickler etwas mehr Infos nicht schlecht!

Für das “009ext_extension” entschuldige ich mich! Da habe ich mich wirklich verlesen! :frowning:

Super. Ticket liest sich schon mal toll. :slight_smile:
Halte mich auf den Laufenden!

Heute habe ich noch unter /services/xmppuser den Passwort-Hash gefunden! Hier habe ich nur durch Zufall reingeschaut. Wenn das nicht weggenommen wird, bin ich schon sehr glücklich! :slight_smile:

In welchen Abständen kann sich an der REST-API etwas ändern?
Das XMPP Protokoll will ich nicht verwenden!

Grüße,
Danny

Hallo Danny,

Das Versionierungsschema der MobyDick ist Major.Minor.Bugfix (Beispiel also 7.08.03).

Feature-Änderungen (neue API Calls usw.) gibt es üblicherweise mit neuen Minor Versionen (also z. B. zur 7.09.00). Wenn etwas nicht richtig funktioniert o. ä. (z. B. in deinem Fall die fehlenden Felder bei /services/identity/{userName}), dann gibt es Fixes dazu bei neuen Bugfix Versionen.

Für was willst du die Passwort-Hashes eigentlich verwenden? Bzw. was hast du generell vor?

Das die Password-Hashes bei /services/xmppuser mit rausgeben würden, würde ich jetzt sogar als Bug betrachten - es kann also gut sein das diese bald “verschwinden”.

Grüße,
Jan

Hallo Jan,

so spät noch am Arbeiten gewesen? :slight_smile:
Ich möchte eigentlich für mich und meinen Kunden, denen ich diese Anlage bereits “aufgeschwätzt” habe :), weil die so toll ist,
eine kleinere Version von Client/Journal bieten. Auf Basis von .NET!

Ich weiß, dass keine Authentifizierung nötig ist, für einzelne Benutzer, da ja für die Kommunikation zwischen
REST-API ein anderer Benutzer zuständig ist; möchte aber wissen, ob genau der Benutzer, für den die CDR-Einträge und VoiceMails sind, auch am PC sitzt.
Datenschutz halt! :slight_smile: Und dafür hab ich ein kleines Login ähnlich eurem Client vorgesehen!

Die XMPP-Variante erscheint mir für diese Entwicklung etwas zu umfangreich zu sein und bietet Dienste, die ich keiner Weise brauch! Da verwendet man am besten den eurigen Client! Zudem müsste ich für eine XMPP-Library auf .NET-Basis eine Lizenz erwerben oder selbst eine entwickeln, was wiederum jeglichen Rahmen der Produktionskosten übersteigt! Auch hier würde ich wieder bei eurem Client bleiben! :wink:

Also sollte doch versteckt irgendwo so eine Möglichkeit bleiben! Bitte nicht wegnehmen! :cool:
Gruß, Danny

Hallo Danny,

verlasse dich bitte nicht auf den Passwort-Hash den du bei “/services/xmppuser/tweber” zurückbekommst. Das ist ein Implementierungsdetail das aus historischen Gründen noch so ist, und das wird möglicherweise bald verschwinden.

Für deinen Anwendungszweck ist die REST-Schnittstelle nicht gedacht, hier sollte man tatsächlich auf die xmpp-Schnittstelle ausweichen. Wenn du keine Probleme damit hast deinen Client als Open Source zur Verfügung zu stellen, dann würde sich agsXMPP anbieten.

Grüße,
Jan

Hallo Jan,

hab mir heute das etwas angeschaut. Irgendwie stehe ich etwas auf dem Schlauch!
Eine Anmeldung mit der von dir vorgeschlagenen agsXMPP klappt, allerdings erhalte ich dann ständig eine Meldung im error.log von xmppd:

Closing session due to incorrect hostname in stream header. Host: pbx.edv-badur.local. Connection: org.jivesoftware.openfire.net.SocketConnection@60c7bf socket: Socket[addr=/192.168.211.20,port=45701,localport=5269] session: null

ca. 2-3 Minuten später dann:

Error trying to connect to remote server: edv-badur.local(DNS lookup: edv-badur.local:5269)

Error trying to connect to remote server: local(DNS lookup: local:5269)

Ein Logout klappt auch nicht wirklich!
In der sehr sehr schlechten bzw. gar nicht vorhandenen Doku von agsXMPP steht nur Client.close() (Client ist hier xmppClientConnection)
Es dauert dann nicht lange und im Error-Log taucht der nächste Fehler auf:

Error or result packet could not be delivered <iq type=“error” id=“agsXMPP_2” to=“badurd@mobydick/MyMDC” from=“pbx.edv-badur.local”><session xmlns=“urn:ietf:params:xml:ns:xmpp-session”/><error code=“404” type=“cancel”><remote-server-not-found xmlns=“urn:ietf:params:xml:ns:xmpp-stanzas”/></error></iq>

Hier mein ClientInfo:

<iq id=“9WTfy-9” type=“get”>
<cmd xmlns=“pascom ONE - the cloud phone system for business” module=“xmppuser”>
<ClientInfo>
<os>Windows 8.1 Pro</os>
<osUser>badurd</osUser>
<clientVersion/>
<user/>
<jid/>
<clientIp/>
<AddSubscription>
<Subscription module=“event” type=“" scope=“user”/>
<Subscription module=“base” type="
” scope=“user”/>
<Subscription module=“journal” type=“*” scope=“user”/>
</AddSubscription>
</ClientInfo>
</cmd>
</iq>

Wenn du mit dieser Library schon mal etwas gemacht hast, und du mir hier mal eine kleine Hilfestellung auch für die Verständlichkeit geben kannst, wäre ich sehr sehr dankbar! Ein kleines Beispiel, wenn du die Zeit hättest wäre nicht schlecht!

Gruß, Danny

Hallo Danny,

einer unserer Azubis hat ein kleines Projekt mit dieser Library gemacht. Ich bin gerade dabei den Quellcode zu polieren und dann das ganze auf GitHub als Beispiel zu veröffentlichen, das kann aber noch ein paar Tage dauern.

Grüße,
Jan

Hallo Danny,

die Beispielapplikation steht jetzt auf unserem GitHub Account zur Verfügung: https://github.com/pascomnet/teleclient

Grüße,
Jan

Hallo Jan,

ich entschuldige die späte Antwort. Eine Erkältung hat mich ein paar Tage außer Gefecht gesetzt.
So wie ich sehe ist inzwischen das Beispiel sogar online. Werde ich mir gleich mal anschauen!

Auf jeden Fall an deinen Azubi wie auch an dich ein herzliches Dankeschön!
Mal sehen, was ich hier falsch gemacht habe, dass es bei mir nicht funktionierte!

Gruß, Danny

Hallo Jan,

ein Meilenstein für das Verständnis! :slight_smile:
Vielen Dank auch an den Azubi nochmal. Jetzt habe ich meine Fehler feststellen können und
ich verstehe jetzt auch etwas deutlicher die Herangehensweise, wenn ich auch in VB.NET entwickle! :slight_smile:

Gruß, Danny