GitLab認証を事前に行うプロキシサーバを作ってみた
主にオンプレミス(Self-Managed)でGitLabを運用している方向けです。
GitLab用に用意するPlantUMLサーバ(や他の機能)を、GitLabユーザのみ(ログイン中のみ)アクセス可能となるようにしたかったので、その為のプロキシサーバ(GitLab Auth Proxy)を作ってみたという内容になります。
基本的に本記事は、PlantUMLサーバの組み込みを例として記載します。
他のサービスでも同様ですので、対象サービスに置き換えてお読みください。
経緯
GitLabにPlantUMLを組み込む手順は下記の通り提供されている。
もちろんこれでGitLabからPlantUMLが利用できるようになるのですが、PlantUML用のURLにアクセスすれば直接利用可能(GitLabユーザにかかわらず)な状態となっていたため、これを何とかできないかということで開発してみました。
概要と構成
GitLabにPlantUMLを普通に組み込んだ場合
GitLabにドキュメントの手順のみでPlantUMLを組み込むと、下記のような構成になります。
GitLabのパッケージに含まれるNginxから、PlantUML用のURL(パス)ならPlantUMLサーバに流すという単純な構成。
なので、GitLabとは関係なしに使えてしまう。
GitLab Auth Proxyを利用してPlantUMLを組み込んだ場合
GitLab Auth Proxyを利用した場合は、下記のような構成になります。
構成としては、PlantUMLサーバの前にGitLab Auth Proxyを挟むという単純なもの。
仕組み自体も単純で、ブラウザが持つGitLabのセッショントークン、またはパーソナルアクセストークンの有効性をGitLabに確認してから、PlantUMLサーバに流すという仕組みになります。
GitLabの認証方法
GitLabへ(トークン)の認証方法は、GitLabのAPI(/api/v4/version
)にアクセスして、正常応答かを確認するだけなので、GitLabへログインしていればOK、ログインしていなければNGという単純なものになります。
細かい権限などの確認はしていません。
利用方法
利用方法はGithubのREADMEに記載しているので、そちらをご覧ください。
Discussion