0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Linuxの認証にAzureADを使う

Last updated at Posted at 2020-05-23

Sambaの認証をOffice365のユーザで認証させたいなぁと思ったのでその下準備としてLinuxの認証にAzureADを使えるようにする。

環境

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

参考にしたサイト

Linux ログインをAzureADで認証する!!

#設定
基本的には参考サイトの手順ですが+αやることありました。

AzureADでアプリケーションを作成

Azureのコンソールから"アプリの登録"を行います。
名前:わかりやすい名称
サポートされるアカウントの種類:"この組織ディレクトリのみに含まれるアカウント"

アプリを登録すると、アプリケーション(クライアントID)が概要ページに表示されるのでコピーしておきます。

アプリケーションのマニフェスト修正

マニフェストページ表示するとJSONでマニフェストが表示されるので以下項目を設定します。
"allowPublicClient": true
私の場合は初期値がnullで設定されてました。

この設定を忘れると認証させた時に
AADSTS7000218: The request body must contain the following parameter:
となって認証失敗します。

APIのアクセス許可設定

APIのアクセス許可ページを開いて管理者がアクセス許可に対して同意する必要がありました。
"[名前]に管理者の同意を与えます"ボタンを押して同意を行います。
状態の項目に"[名前]に付与されました"と緑のチェックマーク付けばOKです。

この設定を行わないと認証させた時に
AADSTS65001: The user or administrator has not consented to use the application with ID {クライアントID} named '[アプリ名]'.
となって認証失敗します。

aad-loginのインストール

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

aad-loginの設定

aad-login.js
var directory = '[office365のドメイン名]';
var clientid = '[アプリケーションのID]';

add-login.jsを見ると分かりますが、username + '@' + directoryをuseridとして認証するのでoffice365で認証に使えるドメインをdirectoryに記載します。

pam.dの設定

aad-loginのgitの説明にあるようにcommon-authの先頭に追記します。

/etc/pam.d/common-auth
~省略~
# pam-auth-update to manage selection of other modules.  See
# pam-auth-update(8) for details.

#↓ここ追加↓
auth sufficient pam_exec.so expose_authtok /usr/local/bin/aad-login
#↑ここ追加↑

# 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;
~省略~

ユーザの追加

認証させたいユーザを事前に追加しておく必要がありました。
追加するのは@より前のところになります。

#hoge@directoryの場合
useradd hoge

<<ユーザの追加しないで実行した場合>>
pam_exec.soが実行された時に"#010#012#015INCORRECT#010#012#015"がパスワードとして設定されてしまい認証できないようです。

authをする前にユーザが居るか確認するようで、ユーザが居ない場合パスワードが上記のものに差し替わるようです。

個人用途ならまぁしょうがないかという感じ(゜゜)

と、ここまでやってSambaってユーザ管理別やんってことに気づいて当初の目的が果たせないことに気づく・・・

0
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?