Search code examples
web-servicesrestotrs

OTRS generic interface rest authentication


I'm trying to consume the OTRS generic interface. The rest service is created by the import functionallity. I found the files needed for import here Consuming OTRS TicketConnector from .NET apps

My problem is when I try to consume the interface for example with a curl command

curl http://<user>:<password>@<server-ip>:<port>/otrs/nph-genericinterface.pl/Webservice/GenericTicketConnectorREST/Ticket/<Ticket-id> -X GET

The result of the command is

{"Error":{"ErrorCode":"TicketGet.AuthFail","ErrorMessage":"TicketGet: Authorization failing!"}}

I tried every user/password combination that makes sense to me. I tried the otrs admin account, agent account, customer account, root account of the server, EVERYTHING! I can't find a information in the docs that states wich account type is needed.

Here are some information that are printed out by the webservice debugger

Communication sequence started

$VAR1 = {
  'DOCUMENT_ROOT' => '/srv/www/htdocs',
  'GATEWAY_INTERFACE' => 'CGI/1.1',
  'HTTP_ACCEPT' => '*/*',
  'HTTP_HOST' => '<server-name>',
  'HTTP_USER_AGENT' => 'curl/7.39.0',
  'MOD_PERL' => 'mod_perl/2.0.4',
  'MOD_PERL_API_VERSION' => '2',
  'PATH' => '/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/X11R6/bin:/usr/games:/usr/lib/mit/bin:/usr/lib/mit/sbin',
  'PATH_INFO' => '/Webservice/GenericTicketConnectorREST/Ticket/<ticket-id>',
  'PATH_TRANSLATED' => '/srv/www/htdocs/Webservice/GenericTicketConnectorREST/Ticket/<ticket-id>',
  'QUERY_STRING' => '',
  'REMOTE_ADDR' => '<server-ip>',
  'REMOTE_PORT' => '56065',
  'REQUEST_METHOD' => 'GET',
  'REQUEST_URI' => '/otrs/nph-genericinterface.pl/Webservice/GenericTicketConnectorREST/Ticket/<ticket-id>',
  'SCRIPT_FILENAME' => '/opt/otrs/bin/cgi-bin/nph-genericinterface.pl',
  'SCRIPT_NAME' => '/otrs/nph-genericinterface.pl',
  'SERVER_ADDR' => '<server-ip>',
  'SERVER_ADMIN' => '<admin-account>',
  'SERVER_NAME' => '<server-name>',
  'SERVER_PORT' => '80',
  'SERVER_PROTOCOL' => 'HTTP/1.1',
  'SERVER_SIGNATURE' => '<address>Apache/2.2.12 (Linux/SUSE) Server at <server-name> Port 80</address>
',
  'SERVER_SOFTWARE' => 'Apache/2.2.12 (Linux/SUSE)'
};

Deteced operation TicketGet

No data provided

Incoming data before mapping

$VAR1 = {
  'RequestMethod' => 'GET',
  'TicketID' => '<ticket-id>'
};

TicketGet.AuthFail

TicketGet: Authorization failing!

Outgoing data before mapping

$VAR1 = {
  'Error' => {
    'ErrorCode' => 'TicketGet.AuthFail',
    'ErrorMessage' => 'TicketGet: Authorization failing!'
  }
};

Long story short: what type of authentication or user type otrs expects to access the generic interface?


Solution

  • In found my mistake. The way I passed the login credentials to the service was wrong.

    In my case the user is a agent user.

    Here is a working curl command for my service:

    curl http://<server-ip>:<port>/otrs/nph-genericinterface.pl/Webservice/GenericTicketConnectorREST/Ticket/<ticket-id>?UserLogin=<username>\&Password=<password> -X GET