🐈‍⬛

Ubuntu22.04のJenkinsでセッションの有効時間を変更する

2025/02/09に公開

はじめに

ローカルネットワーク内のサーバにインストールしたUbuntu22のJenkinsでログイン後のセッションの有効期間を変更します。
ログイン時に「サインインしたままにする」にチェック入れています。

手順

vi /etc/default/jenkins

以下のJENKINS_ARGSを以下のように変更

JENKINS_ARGS="--webroot=/var/cache/$NAME/war --httpPort=$HTTP_PORT --sessionTimeout=525600"
  • 単位は分
  • 525600は1年
  • デフォルトは60分という情報と30分という情報がある
  • 反映には再起動が必要
sudo systemctl restart jenkins

動作検証

  • 「サインインしたままにする」が未チェック・・・12時間後に操作したらログイン画面に戻った。ログイン直後にブラウザを落として、再度表示した場合はログイン画面になる。
  • 「サインインしたままにする」がチェック状態・・・12時間後もログイン状態維持で、ブラウザ落としても次回起動時もログイン画面は出ない。「ログアウト」ボタンを押下しない限り維持されるようである。

まとめ

この期間延長が有効なのは「サインインしたままにする」の場合だけのようです。
この設定が未チェックの場合は、sessionEvictionが働くか、サーブレットの有効期間が最長なのかもしれません。(未検証)

「サインインしたままにする」にチェックをいれていると、ブラウザを閉じてもセッションは残りますので、操作でログアウトしない限り再度ブラウザを開いたときにもそのままログイン状態になります。

あくまでローカルネットワーク上のJenkinsが想定状況です。
認証はあくまで利用者識別のためとチームメンバに限定するためのゆるい運用です。
VPN接続や、IP制限のないパプリック環境の場合は、このような長い時間は避けたほうが無難です。

sessionEvictionという設定もあるが、これは変更せずとも12時間は維持されていた。
無操作の場合のタイムアウトのようだが、「サインアウトしたまま」にする場合は効かないのかも?

以下の要素があるようです。

  • 「サインインしたままにする」の有効/無効
  • サーブレットのタイムアウト
  • sessionTimeout
  • sessionEviction

目的は達成できたので、厳密には検証していないのですが次のような挙動かもと思っています。

「サインインしたままにする」が「無効」の場合は、sessionTimeoutを長大にしても、ブラウザを閉じるとセッションは消えるのと、12時間放置後はログアウトされていたので、sessionEvictionが動作する。

「サインインしたままにする」が「有効」の場合は、ブラウザを閉じてもセッションは維持される。12時間放置後もログアウトされていないのでsessionEvictionは動作しない。

Discussion