Tutoriel oAuth 2.0

j’ai pas encore tout compris de l’utilisation de oAuth 2.0 pour créer une autre façon de se connecter
malgré l’aide sur http://blog.netapsys.fr/oauth-comment-ca-marche/comment-page-1/

Est t’il envisageable d’avoir un petit tutoriel pour comprendre à quoi servent les différents champs de ce type d’authentification ?

Salut @phd0,

J’ai récemment rédigé une doc qui illustre l’utilisation de OAuth 2 avec GitHub. Elle est disponible ici :

Bien évidemment, l’idée étant que tu devrais avoir ton propre serveur d’authentification OAuth2 (et non pas celui de GitHub) afin de te permettre de centraliser ta base d’utilisateurs avec d’autres applications tierces.

2 « J'aime »

Bonjour je rebondis sur ce sujet !
Je viens d’installer pour le boulot Fab-Manager déjà merci pour cet outil !!
J’ai pris la version ‹ prod › en mode docker
tout marche bien, sauf que maintenant je veux le connecter à notre serveur CAS via Oauth2 !
j’ai donc monté la brique Oauth2 sur notre serveur CAS, je l’ai testée et pu l’utiliser avec une autre appli (rocket.chat) Elle est donc fonctionnelle.
j’ai voulu la configurer pour fab-manager et oops ! je n’y suis pas arrivé
J’ai bien évidemment repris le tuto mentionné dans le post de Sylvain en vain.
J’ai essayé avec une authentification via le Oauth2 de Github et même résultat.
Lors que j’essaye de me connecter je suis redirigé vers une url du type /users/auth/oauth2-github et là j’ai un message d’erreur : « Not found. Authentication passthru. »
et ceci avec la config Github ou la config sur mon serveur Oauth2
J’ai beau « googliser » sur ce problème, je n’ai pas trouvé de solutions pertinentes
n’étant pas à l’aise avec docker, ruby & co je ne sais pas trop que faire.
Un peu d’aide serait la bienvenue !

je creuse je creuse et j’ai peut être trouvé un élément de reponse
mon site est en https, quand je clique sur « se connecter » j’ai un lien sur une page sso_redirect, qui elle même fait un post sur la page en question : /users/auth/oauth2-github
le problème est que le POST est en http !! même si le site est en https !!
si je passe le site en http, le post se produit et le message d’erreur n’est pas le même , car je pense que l’on ne peut pas faire de l’auth en non SSL ?
comment faire en sorte que le POST se fasse en HTTPS et pas HTTP ??

Salut,
Il faudrait que tu vérifie dans le configuration de ton serveur oAuth que l’URL de callback enregistrée est bien https ?

Merci pour la réponse,
mais hélas tout est bien en https, ce n’est donc pas à l’origine du dysfonctionnement.
Le problème est en amont de ça, car c’est en cliquant depuis fabmanager, sur le bouton de connexion, qu’une requête POST part, et qu’elle part en HTTP et non pas HTTPS. Mon serveur oauth à ce niveau là n’est pas encore sollicité.
J’ai exactement la même chose si je tente une authentification avec le serveur oauth de github en suivant le tuto en question.
ce qui me fait encore plus dire que ce n’est pas le serveur oauth qui est en question mais bien le client, et donc fabmanager.

Dans ce cas, est-ce que tu peux vérifier les variables d’environnement
DEFAULT_HOST et DEFAULT_PROTOCOL dans /apps/fabmanager/config/env ?

DEFAULT_HOST=fablab.xxxx.yy
DEFAULT_PROTOCOL=https

c’est bien en HTTPS et mon nom d’hote est ok :frowning:
quelqu’un d’autre que moi utilise la brique oauth ? (avec succès…)

Cela pourrait-être ta configuration de nginx, notamment si tu as un nginx en plus de celui fourni par FM.
Voir ce commentaire pour les directives requises.

Pour info, je viens de configurer un SSO oAuth 2 sur notre serveur de staging, sans problème, en suivant les instructions de la doc avec Github.

j’ai les deux…
depuis l’extérieur je passe pas un proxy sur un UTM, depuis le réseau local je tape directement sur le nginx présent dans le docker…
je vais creuser la piste toutefois du lien…
je viens de tester sur le serveur de staging et je vois bien passer la requete POST en https ! c’est ce que j’aimerai aussi :slight_smile:
éventuellement je peux voir ta config de nginx ?

l’ajout des 3 lignes dans la config du nginx
(X-Forwarded-Ssl on, X-Forwarded-Port 443 and X-Forwarded-Host hostname)
n’a pas résolu mon souci et la requete POST part toujours en http et pas https :frowning:

Voilà ma config nginx, je ne pense pas qu’il y ait beaucoup de différences avec celle fournie par défaut:

upstream fabmanager_staging_puma {
  server fabmanager_staging:3000;
}

server {
  listen 443 ssl;
  server_name fabmanager.sleede.com;
  root /usr/src/app/fabmanager_staging;
  ## with letsencrypt certificate (free)
  ssl_certificate_key /etc/letsencrypt/live/staging.sleede.com/privkey.pem;
  ssl_certificate /etc/letsencrypt/live/staging.sleede.com/fullchain.pem;
  ssl_trusted_certificate /etc/letsencrypt/live/staging.sleede.com/chain.pem;
  ##
  ssl_protocols TLSv1.2 TLSv1.1 TLSv1;
  ssl_prefer_server_ciphers on;
  ssl_ciphers 'kEECDH+ECDSA+AES128 kEECDH+ECDSA+AES256 kEECDH+AES128 kEECDH+AES256 kEDH+AES128 kEDH+AES256 DES-CBC3-SHA +SHA !aNULL !eNULL !LOW !MD5 !EXP !DSS !PSK !SRP !kECDH !CAMELLIA !RC4 !SEED';
  ssl_session_cache shared:SSL:50m;
  ssl_session_tickets off;
  ssl_session_timeout 1d;
  ssl_dhparam /etc/nginx/conf.d/ssl/dhparam.pem;
  add_header Strict-Transport-Security max-age=15768000;
  ssl_stapling on;
  ssl_stapling_verify on;

  location /robots.txt {
    return 200 "User-agent: *\nDisallow: /";
  }
  
  ## required by letsencrypt to generate the certificat
  location /.well-known/acme-challenge {
    root /etc/letsencrypt/webrootauth;
    default_type "text/plain";
  }
  ##

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @fabmanager_staging_puma;
  location @fabmanager_staging_puma {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_redirect off;
    proxy_pass http://fabmanager_staging_puma;
  }

  client_max_body_size 4G;
  keepalive_timeout 10;

  error_page 500 502 504 /500.html;
  error_page 503 @503;

  # Return a 503 error if the maintenance page exists.
  if (-f /usr/src/app/public/maintenance.html) {
    return 503;
  }

  location @503 {
    # Serve static assets if found.
    if (-f $request_filename) {
      break;
    }

    # Set root to the shared directory.
    root /usr/src/app/fabmanager_staging/public;
    rewrite ^(.*)$ /maintenance.html break;
  }

  # no spam bot
  if ($http_referer ~* (guardlink.org|free-share-buttons|social-buttons|buy-cheap-online.info|social-buttons.com|free-share-buttons.com|darodar.com|blackhatworth.com|hulfingtonpost.com|priceg.com|semalt.com|imaspammer.com|iedit.ilovevitaly.com|7makemoneyonline.com|iedit.ilovevitaly.com|7makemoneyonline.com|gamersyde.com|iloveitaly.com|econom.co|semalt.com|forum.topic44637676.darodar.com|darodar.com|iskalko.ru|ilovevitaly.ru|ilovevitaly.com|ilovevitaly.co|o-o-8-o-o.ru|o-o-6-o-o.ru|buttons-for-website.com|semalt.semalt.com|cenoval.ru|priceg.com|darodar.com|cenokos.ru|seoexperimenty.ru|gobongo.info|vodkoved.ru|adcash.com|websocial.me|cityadspix.com|luxup.ru|ykecwqlixx.ru|superiends.org|slftsdybbg.ru|edakgfvwql.ru|socialseet.ru|screentoolkit.com|econom.co|semalt.com|savetubevideo.com|shopping.ilovevitaly.com|iedit.ilovevitaly.com|forum.topic52548358.darodar.com|forum.topic53813291.darodar.com|share-buttons.com|event-tracking.com|success-seo.com|free-floating-buttons.com|get-free-social-traffic.com|chinese-amezon.com|get-free-traffic-now.com|free-social-buttons.com|videos-for-your-business.com)) { return 403; }
  
}

server {
  listen 80;
  server_name fabmanager.sleede.com;
  rewrite ^ https://fabmanager.sleede.com$request_uri? permanent;
}


Note : tu peux aussi tenter la mise à jour en 4.5.0, j’ai fait une petite modif concernant la génération du lien du sso (perso ça n’a rien changé chez moi mais sait-on jamais…)

héhéhé !!!
la petite note de bas de page : ‹ tu peux aussi tenter la mise à jour en 4.5.0, j’ai fait une petite modif concernant la génération du lien du sso › m’a sauvé !!
mon oauth sur github fonctionne maintenant !!!
je vais vite tester sur mon oauth local !!!
merci !! déjà un grand pas de fait !!

1 « J'aime »

Ha ben cool, heureux que cette modif ait pu t’aider :slight_smile:

et ça fonctionne avec mon serveur oauth (CAS APEREO) top !!!
juste un nouveau problème à régler je ne reçois pas le code pour ‹ merger › mes deux comptes…
c’est un autre sujet !
merci en tout cas !!!

1 « J'aime »

Bonjour à tous,

J’ai mis un accès a fabmanager par SSO et les nouveaux utilisateur.rices doivent renseigner des champs supplémentaires que ceux fournit par le SSO ie le genre par exemple. Est-ce possible de désactiver cette fonctionnalité qui n’est pas opportun pour nos utilisateur.rices ?

Bien à vous,
Baptiste

Salut,

Oui et non : certains champs obligatoires peuvent être rendus optionnels (depuis Personnalisation > Général). Si tous les champs obligatoires sont fournis par le SSO alors la demande d’infos supplémentaire ne sera pas affichée.

D’accord mais le genre n’apparait ni dans les champs optionnels, ni dans les champs sso, pour autant c’est une information non essentiel pour mon organisation et une operation (inutile) pour l’utilisateur.

Du coup, possible de faire un hack rapide ? Attendre une update ? ni l’un ni l’autre ?

On a prévu de rendre le genre optionnel dans une prochaine version. Je ne peux pas encore te dire quand, ça nécessite un peu de boulot et on est bien bien chargés en ce moment :sweat_smile: