Utiliser Azure AD pour l'authentification Linux

Je voulais authentifier Samba en tant qu'utilisateur Office 365, donc comme préparation préliminaire, j'utiliserai Azure AD pour l'authentification Linux.

environnement

Debian 10.2 Nodejs v10.19.0 (apt) aad-login Office365

Site référencé

Authentifiez la connexion Linux avec Azure AD! !!

Réglage

En gros, c'est une procédure du site de référence, mais il y avait quelque chose à faire + α.

Créer une application avec Azure AD

Effectuez «Inscription d'application» à partir de la console Azure. Nom: nom facile à comprendre Types de comptes pris en charge: "Comptes contenus uniquement dans cet annuaire d'organisation"

Lorsque vous enregistrez l'application, l'application (ID client) sera affichée sur la page de présentation, donc copiez-la.

Correctif du manifeste d'application

Lorsque la page du manifeste est affichée, le manifeste est affiché dans JSON, définissez donc les éléments suivants. "allowPublicClient": true Dans mon cas, la valeur initiale a été définie sur null.

Si vous oubliez ce paramètre et que vous êtes authentifié AADSTS7000218: The request body must contain the following parameter: Et l'authentification échoue.

Paramètres d'autorisation de l'API

L'administrateur devait ouvrir la page des autorisations de l'API et accepter les autorisations. Cliquez sur le bouton "Donner le consentement de l'administrateur à [nom]" pour donner votre consentement. Ce n'est pas grave si vous mettez une coche verte dans l'élément d'état comme "Donné à [nom]".

Si vous ne définissez pas ce paramètre, lorsque vous vous authentifiez ʻAADSTS65001: L'utilisateur ou l'administrateur n'a pas consenti à utiliser l'application avec l'ID {ID client} nommé '[nom de l'application]'. ` Et l'authentification échoue.

Installez aad-login

C'est le travail du côté serveur Linux.

bash


sudo apt update
sudo apt install -y nodejs npm git
cd /tmp
git clone https://github.com/bureado/aad-login
cd aad-login/
mkdir -p /opt/aad-login
cp aad-login.js package.json /opt/aad-login/
cp aad-login /usr/local/bin/
cd /opt/aad-login/
npm install

paramètres de connexion aad

aad-login.js


var directory = '[nom de domaine office365]';
var clientid = '[ID d'application]';

Comme vous pouvez le voir en regardant add-login.js, ʻusername + '@' + directory` est authentifié comme userid, donc le domaine qui peut être utilisé pour l'authentification dans office365 est décrit dans le répertoire.

paramètres pam.d

Ajoutez-le au début de common-auth comme décrit dans git de aad-login.

/etc/pam.d/common-auth


~ Omis ~
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.

#↓ Ajouter ici ↓
auth sufficient pam_exec.so expose_authtok /usr/local/bin/aad-login
#↑ Ajouter ici ↑

# here are the per-package modules (the "Primary" block)
auth    [success=1 default=ignore]      pam_unix.so nullok_secure
# here's the fallback if no module succeeds
auth    requisite                       pam_deny.so
# prime the stack with a positive return value if there isn't one already;
~ Omis ~

Ajouter un utilisateur

J'ai dû ajouter l'utilisateur que je voulais authentifier à l'avance. Il sera ajouté avant @.

#hoge@Pour l'annuaire
useradd hoge

<< Lorsqu'elle est exécutée sans ajouter d'utilisateur >> Lorsque pam_exec.so est exécuté, "# 010 # 012 # 015 INCORRECT # 010 # 012 # 015" est défini comme mot de passe et il semble que l'authentification n'est pas possible.

Il semble vérifier s'il y a un utilisateur avant de faire l'authentification, et s'il n'y a pas d'utilisateur, le mot de passe sera remplacé par celui ci-dessus.

J'ai l'impression que je ne peux pas m'en empêcher pour un usage personnel (゜ ゜)

Jusqu'à présent, j'ai réalisé que Samba était différent de la gestion des utilisateurs, et j'ai réalisé que l'objectif initial ne pouvait pas être atteint ...

Recommended Posts

Utiliser Azure AD pour l'authentification Linux
Comment utiliser l'authentification par empreinte digitale pour KDE
Pourquoi utiliser Linux
pyenv pour linux
Vérifiez! Comment utiliser Azure Key Vault avec Azure SDK pour Python! (Mesures autour de la certification)
[Pour mémoire] Linux Partie 2
À quoi sert Linux?
Votre propre Koredake est une commande Linux
Compilation du noyau Linux pour DE10nano
Utiliser Github Desktop sous Linux
Distribution Linux recommandée pour les débutants
Canaux de plateforme Flutter pour Linux
Utilisez WDC-433SU2M2 avec Manjaro Linux
Dictionnaire de commande Linux (pour moi-même)
Mémorandum de commande Linux [pour les débutants]
Utiliser Linux sur Windows 10 (WSL2)
Raccourci Linux pratique (pour les débutants)