JenkinsでGitHub OAuth認証する
VPSにぶっ立てたJenkinsですが、いちいちユーザーとパスワードを覚えるのがめんどくさいのでGitHubのアカウントでログインできるようにします。
プラグインインストール
GitHub Authenticationというプラグインを使うことにします。ダウンロード数がそこそこありますし、こいつでいいでしょう。サクッとインストールします。
GitHubでOAuthの登録する
Register a new OAuth applicationのページでOAuthの登録をします。
「Authorization callback URL」にhttp://IPかドメイン/securityRealm/finishLogin
と入力します。たぶん、この項目以外は使ってないと思うので残りの項目は適当でいいと思います。
「Register application」で登録します。
IDとSecret確認
登録後にClient ID
とClient Secret
を控えます。
Jenkins側のセキュリティ設定
認証方法変更
「グローバルセキュリティの設定」で「GitHub Authentication Plugin」を選択し、先ほどのClient ID
とClient Secret
を入力します。
権限管理
「GitHub Committer Authorization Strategy」を選択し「Admin User Names」に管理者にしたいGitHubのユーザ名を入力します。
GitHubのアカウントを持ってる人なら誰でもJenkinsにログインできるようになるので、権限は一切設定しません。 一切設定しなければ、 「Admin User Names」に入力したユーザ以外はログインはできるけど、一切なにも見れない状態になります。
これで仮に誰かにGitHub OAuthでログインされたとしても、一切何も見れないので、たぶん大丈夫です。たぶん…一応、他の人に協力して試してもらったので大丈夫だと思います…たぶん…
また、ドキュメントをみた感じでは「行列による権限設定」でも権限のコントロールはできそう…ただ、こっちは試してないです…
ログインしてみる
初回は下記のような感じでログイン時にGitHubで許可するかどうか確認されるので「Authorize application」で許可します。
こんな感じでGitHubのユーザでログインできてるのがわかります。
GitHubにログインしていない状態でJenkinsにアクセスした場合
ちなみに…GitHubにログインしていない状態でJenkinsにアクセスすると下記のような感じでGitHubのOAuthの画面が出てきます。
どうしてもログインされたかどうかが気になる場合…
仮にログインされた場合、GitHubのOAuth applicationの項目で何人がOAuthを利用してログインしたかは確認できます。後は、Jenkinsのログインのログを確認するくらいでしょうか…(←デフォルトだと有効になってないです)
ちなみにログインのログを有効にした場合でも、ログイン・ログアウトのログは出てましたが、誰なのかまでは残ってませんでした… あんまり意味がない