こんにちは。AMBLのクラウドネイティブ第1事業部 Webアプリケーション開発部の萱沼です。
好きな色は黄色です。
今回、SAML認証の実装をする機会があり、ローカルで検証を行うためのIdPサーバを構築しました。
いろいろなOSSのIdPサーバがありますが、私自身がGo言語の学習をしており、Go言語のIdPサーバの中でも導入ハードルが低いlite-idpを利用しました。
リポジトリのREADMEを参考にして、dockerを用いて環境構築しました。READMEの手順だと分かりづらい点がいくつかありましたので、その点を含めて記載します。
今回の記事では、IdPのログイン画面が立ち上がるまで構築します。
この記事は下記の方におすすめです!
・ローカル環境でIdPサーバを構築したい
・Go言語の実行環境をPCに構築済みの方
・Go言語を利用したことがある方
・Webアプリを実装したことがある方
検証環境:
PC:MacBook Pro Apple M1 Pro
メモリ:16GB
Go:1.22.0
前提条件:
Go言語をローカル環境にインストール済み
Docker CLI等のdocker環境を構築済み
lite-idpをPCにクローン済み
opensslコマンドをインストール済み
node、npmをインストール済み
makeコマンドインストール済み
環境構築手順
1.PATHの確認
PATHを確認して、GOPATH配下のbinディレクトリが設定されているか確認します。
$ echo $PATH // Macの場合、/User/username/go/binが含まれているか確認をする
設定されていない場合、.zshrcなどにPATHを設定します。
$ vi ~/.zshrc
// 下記をどこかに記載する
export PATH=$PATH:$(go env GOPATH)/bin
2.鍵生成を行う
クローンしてきたディレクトリに移動して、makeコマンドで鍵を生成します。
$ cd lite-idp/hack
$ make
3.UIをビルドする
クローンしてきたディレクトリに移動し、シェルを実行してUIをビルドします。
$ cd lite-idp/hack/ui
$ ./build-ui.sh
4.Docker Composeファイルの作成
docker-compose.ymlをリポジトリのディレクトリ直下に作成します。
下記のように記載します。
下記は例になりますので、ご自身が構築したい環境に合わせてパラメータを変更してください。
services:
saml:
container_name: saml-idp
build:
context: .
dockerfile: Dockerfile
ports:
- "9443:9443"
environment:
- TZ=Asia/Tokyo
volumes:
- ./config.yaml:/etc/lite-idp/config.yaml:ro
- ./hack/tls-setup/certs:/hack/tls-setup/certs:ro
5.Dockerの起動
Dockerfileのビルドとコンテナの起動を行います。
$ docker compose up --build
起動したらプロセスの確認を実施します。
下記のようになっていれば、起動完了です。
docker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
saml-idp lite-idp-saml "lite-idp serve" saml 3 seconds ago Up 3 seconds 0.0.0.0:9443->9443/tcp, :::9443->9443/tcp
https://localhost:9443/ui/login.html
以下のようなページが表示されればOKです。
いかがでしたでしょうか。
簡単にIdPサーバを構築することができました。
ローカルでの検証が必要な際は、参考にしていただければと思います!
lite-idp以外にも機能が充実しているKeycloak、node.jsでコーディングされているsaml-idpがありますので要件に合わせて選択してみても良いと思います。
次回はIdPサーバの設定手順の記事を公開できればと考えていますので、お楽しみに!