Project

General

Profile

Erreur lors de l'obtention d'un token

Added by sebastien R over 2 years ago

Bonjour,

J'utilise actuellement XIVO - Version : 2016.04.03 "Five".

Je rencontre un problème lors de l'obtention d'un token avec l'api

Curl

curl -X POST --header 'Content-Type: application/json' --header 'Accept: application/json' --header 'Authorization: Basic c2ViOnNlYjkxNzAw' -d '{
"backend": "string",
"expiration": 0
}' 'https://mon_xivo:9497/0.1/token'

Request URL
https://mon_xivo:9497/0.1/token

Response Body
no content

Response Headers
{
"error": "no response from server"
}

Si je passe en SSH j'ai l'erreur suivante :

curl: (56) Recv failure: Connection reset by peer

et si je regarde dans la console google chrome j'ai l'erreur suivante :

XMLHttpRequest cannot load https://mon_xivo:9497/0.1/token. Request header field Authorization is not allowed by Access-Control-Allow-Headers in preflight response.

Avez-vous déjà rencontré le problème ?

L'objectif est de mettre en place un CTI avec un logiciel de télésecrétariat

merci par avance de votre aide

Cordialement,
Sébastien


Replies (21)

RE: Erreur lors de l'obtention d'un token - Added by Julien KLINGENMEYER over 2 years ago

Bonjour Sébastien,

As-tu autorisé l'accès côté XiVO ?
Dans la webi, cela se fait dans Configuration > Accès aux Services Web.
Il faut créer une entrée avec ton IP distante, et dans l'onglet ACL, créer une ligne contenant '#' pour tout autoriser.

RE: Erreur lors de l'obtention d'un token - Added by sebastien R over 2 years ago

Bonjour,

L'ip distante je dois la mettre dans " Hôte " ?

merci pour votre réactivité

RE: Erreur lors de l'obtention d'un token - Added by sebastien R over 2 years ago

bon maintenant j'ai l'erreur suivante si je test avec la commande Curl

curl -I "https://mon_xivo:9497/0.1/api/api.json"

curl: (60) SSL certificate problem: self signed certificate
More details here: http://curl.haxx.se/docs/sslcerts.html

curl performs SSL certificate verification by default, using a "bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.
If this HTTPS server uses a certificate signed by a CA represented in
the bundle, the certificate verification probably failed due to a
problem with the certificate (it might be expired, or the name might
not match the domain name in the URL).
If you'd like to turn off curl's verification of the certificate, use
the -k (or --insecure) option.

RE: Erreur lors de l'obtention d'un token - Added by Grégory Esnaud over 2 years ago

Bonjour,

As tu bien lu la doc? (https://documentation.xivo.solutions/en/2016.04.03/xivo/system/xivo-auth/xivo-auth.html#xivo-auth)

Tu semble utiliser un backend 'string'... or cela n'existe pas: https://documentation.xivo.solutions/en/2016.04.03/xivo/system/xivo-auth/stock_plugins.html#auth-backends.
Comme le dit Julien, le mieux est d'utiliser un backend "xivo_service".

  1. Crée, comme l'a dit Julien, un compte WS (Pas besoin de mettre d'ip distante) sur le XiVO.
  2. Demande le token (via curl par exemple, directement sur le xivo) (remplacer ton_user et ton_mdp par les bonnes valeurs)
curl -k -X POST -H 'Content-Type: application/json' -u 'ton_user:ton_mdp' "https://localhost:9497/0.1/token" -d '{"backend": "xivo_service", "expiration": 999999999}';echo
  1. Doit s'afficher le token.

RE: Erreur lors de l'obtention d'un token - Added by sebastien R over 2 years ago

j'ai l'impression que j'avance avec la commande suivante j'ai l'impression que cela fonctionne

curl -k -i -X POST -H 'Content-Type: application/json' -u "seb:seb91700" "https://mon_xivo:9497/0.1/token" -d '{"backend": "xivo_user"}'
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 938
Date: Wed, 22 Feb 2017 09:35:57 GMT
Server: xivo

{"data": {"xivo_user_uuid": "950416dd-20c1-4209-b312-383a208efe13", "expires_at": "2017-02-22T12:35:57.476487", "token": "2635d20c-f2ce-45e7-8a31-b2e680101832", "acls": ["confd.users.me.read", "confd.users.me.update", "confd.users.me.funckeys..", "confd.users.me.#.read", "confd.users.me.services..", "confd.users.me.forwards..", "ctid-ng.users.me.#", "ctid-ng.transfers..read", "ctid-ng.transfers..delete", "ctid-ng.transfers..complete.update", "dird.#.me.read", "dird.directories.favorites.#", "dird.directories.lookup..headers.read", "dird.directories.lookup..read", "dird.directories.personal..read", "dird.personal.#", "events.calls.me", "events.transfers.me", "events.chat.message..me", "events.statuses.", "events.switchboards", "events.config.users.me.services..", "events.config.users.me.forwards..", "websocketd"], "issued_at": "2017-02-22T10:35:57.476559", "auth_id": "950416dd-20c1-4209-b312-383a208efe13"}}

par contre si je passe par : http://mon_xivo/api/#!/token/createToken

j'ai toujours l'erreur : XMLHttpRequest cannot load https://mon_xivo:9497/0.1/token. Request header field Authorization is not allowed by Access-Control-Allow-Headers in preflight response.

RE: Erreur lors de l'obtention d'un token - Added by sebastien R over 2 years ago

Désolé Grégory Esnaud je n'avais pas vu ta réponse

RE: Erreur lors de l'obtention d'un token - Added by sebastien R over 2 years ago

Donc directement sur le xivo que ce soit avec un backend xivo_service et xivo_user cela semble fonctionner

il y a un bug sur l'interface web api ?

RE: Erreur lors de l'obtention d'un token - Added by Julien KLINGENMEYER over 2 years ago

Sébastien,

Dans ta requête curl il te manque aussi le paramètre --insecure, vu que tu es en https et que ton certificat est autosigné.

RE: Erreur lors de l'obtention d'un token - Added by sebastien R over 2 years ago

je peux modifier la requête dans /api/token ?

RE: Erreur lors de l'obtention d'un token - Added by sebastien R over 2 years ago

ai-je la possibilité de retirer le https ?

RE: Erreur lors de l'obtention d'un token - Added by sebastien R over 2 years ago

oki, je ne comprendre pas pourquoi j'arrive à créer un token avec la requete curl directement en ssh, alors que j'ai une erreur avec la page api........
et vous de votre côté vous n'avez aucun problème avec la page API ?

la requête curl est générée automatiquement sur la page API et je n'ai pas la possibilité de mettre les identifiants -u "id:mdp"

je suis désolé de vous poser autant de questions, je sèche complètement.

Cordialement,
Sébastien

RE: Erreur lors de l'obtention d'un token - Added by Grégory Esnaud over 2 years ago

En fait c'est assez bien caché:

https://documentation.xivo.solutions/en/2016.04.03/xivo/api_sdk/rest_api/embedded_swagger.html#obtain-an-authentication-token

  1. Il faut d'abord accepter le certificat du service https://ton_xivo:9497 (mais ça je crois que tu l'as déjà fait)
  2. Ensuite cliquer sur xivo auth
  3. utiliser les champs en haut de la page:

The other way you can get a token is via Swagger UI (what else?). Choose the xivo-auth service in the list of REST API. Under tokens, choose POST /tokens.

** In the top-right text box of the page (left to the “Explore” button), fill “token” with the string username:password where those credentials come from the Web Services Access you created earlier.**
Go back to the POST /tokens section and click on the yellow box to the right of the body parameter. This will pre-fill the body parameter.
In the body parameter, set:
backend to xivo-service
expiration to the number of seconds for the token to be valid (e.g. 60 for one hour). After the expiration time, you will need to re-authenticate to get a new token.
Click “Try it out” at the end of the section
In the response, you should see a token attribute.

For more informations about the backends of xivo-auth, see xivo-auth plugins.

@+

RE: Erreur lors de l'obtention d'un token - Added by sebastien R over 2 years ago

merci pour votre réponse, j'ai essayé mais en vains......

j'ai l'impression que la requete est rejeté dès lors que je passe pas par le serveur

dans le fichier /var/log/xivo-auth.log

2017-02-23 11:58:06,437 15746 (xivo-auth): (192.168.99.122) GET https://192.168.99.20:9497/0.1/api/api.json 200
2017-02-23 11:58:06,443 15746 (xivo-auth): (192.168.99.122) OPTIONS https://192.168.99.20:9497/0.1/api/api.json 200
2017-02-23 11:58:06,450 15746 (xivo-auth): (192.168.99.122) OPTIONS https://192.168.99.20:9497/0.1/api/api.json 200
2017-02-23 11:58:06,456 15746 (xivo-auth): (192.168.99.122) GET https://192.168.99.20:9497/0.1/api/api.json 200
2017-02-23 11:58:06,468 15746 (xivo-auth): (127.0.0.1) GET https://localhost:9497/0.1/backends 200
2017-02-23 11:58:26,784 15746 (xivo-auth): (192.168.99.122) OPTIONS https://192.168.99.20:9497/0.1/token 200

RE: Erreur lors de l'obtention d'un token - Added by Grégory Esnaud over 2 years ago

Hello,

Le serveur te répond un 200 OK, cela semble correct.

Il s'agit de la requete pour obtneir un token? Il me semble que tu as réussi pourtant?

{"data": {"xivo_user_uuid": "950416dd-20c1-4209-b312-383a208efe13", "expires_at": "2017-02-22T12:35:57.476487", "token": "2635d20c-f2ce-45e7-8a31-b2e680101832", "acls": ["confd.users.me.read", "confd.users.me.update", "confd.users.me.funckeys..", "confd.users.me.#.read", "confd.users.me.services..", "confd.users.me.forwards..", "ctid-ng.users.me.#", "ctid-ng.transfers..read", "ctid-ng.transfers..delete", "ctid-ng.transfers..complete.update", "dird.#.me.read", "dird.directories.favorites.#", "dird.directories.lookup..headers.read", "dird.directories.lookup..read", "dird.directories.personal..read", "dird.personal.#", "events.calls.me", "events.transfers.me", "events.chat.message..me", "events.statuses.", "events.switchboards", "events.config.users.me.services..", "events.config.users.me.forwards..", "websocketd"], "issued_at": "2017-02-22T10:35:57.476559", "auth_id": "950416dd-20c1-4209-b312-383a208efe13"}}

Quel es ton problème maintenant?

RE: Erreur lors de l'obtention d'un token - Added by sebastien R over 2 years ago

Hello,

si je passe par la commande curl en SSH j'arrive à récupérer un token, mais si je passe par l'adresse http://mon_xivo/api/ puis XIVO auth, j'ai une erreur :

Voir PJ ( token:token correspond aux identifiants dans webservices )

RE: Erreur lors de l'obtention d'un token - Added by sebastien R over 2 years ago

Hmm je reste perplexe, je viens d'installer une version Wazo et ça marche du premier coup :( , je remarque que l'adresse en haut est différente

Xivo : https://192.168.99.20:9497/0.1/api/api.json

Wazo : https://192.168.124.135:9497/0.1/api/api.yml

RE: Erreur lors de l'obtention d'un token - Added by Grégory Esnaud over 2 years ago

Effectivement l'interface swagger ne semble pas vouloir interpréter la réponse du serveur...
Peut-être un bug!

Le contournement est donc de faire un copier coller du curl proposé dans swagger (en prenant soin d'ajouter -k pour faire confiance au certificat).

Cordialement,

RE: Erreur lors de l'obtention d'un token - Added by Grégory Esnaud over 2 years ago

Pour la comparaison avec Wazo, je ne sais pas, il faudrait voir dans les realease notes s'il n'y a pas eu une correction depuis le fork... sommes nous dans des versions équivalentes?

RE: Erreur lors de l'obtention d'un token - Added by sebastien R over 2 years ago

Wazo est en version : 17.03
Mon xivo est en version : 2016.04.03

Je vais essayer Xivo 2017.01 et voir si je rencontre le même problème

RE: Erreur lors de l'obtention d'un token - Added by sebastien R over 2 years ago

bon même problème avec la version 2017.01......

hmm que faire dans cette situation, contacter directement avencall ?

    (1-21/21)