UbuntuでAzura AD認証をできるようにしてみた。
必要なもの
- golang 1.8 (たぶん、1.7でも大丈夫)
- pam-exec-oauth2
インストール
Goの環境が整っていることが前提。
1) pam-exec-oauth2をビルド
2) /opt/pam-exec-oauth2
にpam-exec-oauth2をコピー
3) /opt/pam-exec-oauth2
にpam-exec-oauth2.yamlを作成
go get github.com/shimt/pam-exec-oauth2
PREFIX=/opt/pam-exec-oauth2
sudo mkdir $PREFIX
sudo cp go/bin/pam-exec-oauth2 $PREFIX/pam-exec-oauth2
sudo touch $PREFIX/pam-exec-oauth2.yaml
sudo chmod 755 $PREFIX/pam-exec-oauth2
sudo chmod 600 $PREFIX/pam-exec-oauth2.yaml
設定
PAM
/etc/pam.d/common-auth
に以下を追加。
auth sufficient pam_exec.so expose_authtok /opt/pam-exec-oauth2/pam-exec-oauth2
pam-exec-oauth2.yaml
/opt/pam-exec-oauth2/pam-exec-oauth2.yaml
を環境に合わせて修正
{
client-id: "xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
client-secret: "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
redirect-url: "urn:ietf:wg:oauth:2.0:oob",
scopes: ["email"],
endpoint-auth-url: "https://login.windows.net/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/oauth2/authorize",
endpoint-token-url: "https://login.windows.net/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/oauth2/token",
extra-parameters: {
resource: "https://graph.windows.net/"
},
username-format: "%s@example.org",
}
テスト
環境変数PAM_USER
にユーザ名を設定し、標準入力からパスワードを入力する。
$?
が0
であれば認証成功。
# PAM_USER=username /opt/pam-exec-oauth2/pam-exec-oauth2
usernameのパスワード
# echo $?