コンテンツにスキップ

シングルサインオンの考え方

組織のオーナーと管理者が、社内の IdP で Actagate にログインできるようにするための入口のページです。 接続を作る前に、対応するプロバイダ、接続の進め方、アカウントの紐づけ方、運用担当者に頼む準備を確認してください。

SSO の設定は「設定」の「セキュリティ」(/ws/settings/security) にある「シングルサインオン」で行います。操作できるのはオーナーと管理者です。「プロバイダを選んで接続を追加」には次の 9 つが並びます。

プロバイダ プリセット ID 設定フォーム 手順
Google google 専用のフォーム。OAuth クライアントは配備側に置く Google
Microsoft microsoft 専用のフォーム。OAuth クライアントは配備側に置く Microsoft
Okta okta OIDC の接続 Okta
OneLogin onelogin OIDC の接続 OneLogin
JumpCloud jumpcloud OIDC の接続 JumpCloud
Ping Identity (PingOne) ping OIDC の接続 Ping Identity (PingOne)
Auth0 auth0 OIDC の接続 Auth0
汎用 OIDC custom OIDC の接続 汎用 OIDC
SAML 2.0 saml SAML の接続 SAML 2.0

プリセット ID は、ログインの監査ログで channel の値 (sso:<プリセット ID>) として記録されます。一覧にない IdP は「汎用 OIDC」か「SAML 2.0」で接続します。Google と Microsoft は、配備に OAuth クライアントが設定されているときだけ一覧に出ます。

接続は「下書き → テスト → 有効化」の順に進める

Section titled “接続は「下書き → テスト → 有効化」の順に進める”

OIDC と SAML の接続は、次の 3 段階で使えるようになります。Google と Microsoft は専用のフォームで「サインインを許可する」を選んで保存するだけで、テストの段階はありません。

  1. 接続を追加すると「下書き」で保存され、「接続」の一覧に「下書き · 未テスト」と表示されます。ログイン画面にはまだ出ません
  2. 「テスト」を押し、管理者自身が IdP にサインインします。成功すると「テストに成功しました。接続を有効化できます。」と表示され、接続が「テスト済み」になります
  3. 「有効化」を押します。「接続を有効にしました。ログイン画面から利用できます。」と表示され、ログイン画面に「<表示名> で続ける」ボタンが出ます
SSO 接続一覧
「下書き · 未テスト」の Okta 接続が 1 件ある「接続」一覧。テストに成功するまで「有効化」は押せない。上部の黄色い警告は、撮影環境に暗号化キーがないことによる

「有効化」はテストの成功後に押せます。テストは管理者のセッションのまま行い、利用者の作成も、ログイン方法の紐づけもしません。テストを始めてから 10 分を過ぎると、その要求は無効になります。

「無効化」を押すと、ログイン画面からボタンが消えます。利用者との紐づけは残ります。設定を変えていなければ、テストし直さずにもう一度有効化できます。

設定を変えるとテストが失効する

Section titled “設定を変えるとテストが失効する”

接続の認証に関わる設定を変えると、テストの結果が消えます。対象は、OIDC では Issuer URL、クライアント ID、クライアントシークレットです。SAML では IdP の entity ID、SSO URL、証明書、IdP 起点のログインの許可です。表示は「未テスト」に戻ります。

  • 有効だった接続は下書きに戻り、ログインに使えなくなります。もう一度テストしてから有効化してください
  • 無効の接続は無効のまま、テストの結果だけが消えます
  • 表示名だけの変更では、テストの結果も状態も変わりません
  • テストを始めたあとで設定を変えると、そのテストは成功として記録されません。画面には test_required が出ます
  • 利用者がその接続でログインした後は、OIDC の Issuer URL と SAML の IdP entity ID を変更できません。別の IdP に移るときは新しい接続を追加します

1 人を 1 つのアカウントに紐づける

Section titled “1 人を 1 つのアカウントに紐づける”

Actagate は IdP の利用者を、接続ごとに変わらない ID で識別します。OIDC では ID トークンの sub、SAML では NameID、Microsoft ではテナント ID とオブジェクト ID の組です。

  • 初回のログインでだけ、IdP が検証済みと示すメールアドレスを、招待済みメンバーのメールアドレスと照合します。一致したメンバーにその ID を紐づけます
  • 2 回目からは ID で同じ人を特定します。IdP 側でメールアドレスが変わっても、同じアカウントのままです
  • 招待されていない人は、自動登録 (JIT) を有効にしていない限りログインできません
  • オーナーと管理者は、ログインしていない状態からの初回の紐づけができません。本人が既存の方法でログインし、「設定」の「ログイン方法」で「<接続名> を追加」を押して紐づけます

接続を作る前に、Actagate を動かしている運用担当者に次の設定を確認してください。

  • SSO_SECRET_ENCRYPTION_KEY: OIDC の接続のクライアントシークレットを暗号化して保存する鍵です。値は乱数 32 バイトを base64 にしたもので、openssl rand -base64 32 で作れます。すべての Web インスタンスに同じ鍵を渡します
  • WEB_BASE_URL: 利用者が開く公開 HTTPS のオリジンです。IdP に登録するコールバック URL と ACS URL は、この値から作られます
  • Google と Microsoft を使う場合は、それぞれのページにある OAuth クライアントの環境変数

鍵が未設定か不正なときは、設定画面に「このデプロイにはシークレットの暗号化キー (SSO_SECRET_ENCRYPTION_KEY) が設定されていないため、接続を保存できません。」と出ます。OIDC の接続は保存できず、理由コード encryption_unavailable になります。鍵を替えると保存済みのシークレットを復号できなくなります。各接続のクライアントシークレットを入れ直し、テストし直してください。

OIDC の IdP は、discovery、トークンエンドポイント、JWKS にインターネットから HTTPS で届く必要があります。社内ネットワークからしか届かない IdP には接続できません。例外の設定はありません。

有効化のあとで設定できること

Section titled “有効化のあとで設定できること”

接続を有効にしたら、同じ画面で次の設定ができます。

  • 「ドメインの検証」: ドメインを追加し、表示された TXT レコード (名前 _actagate-challenge.<ドメイン>、値 actagate-domain-verification=<トークン>) を DNS に登録して「確認する」を押します。同じドメインを検証済みにできるのは 1 つの組織だけです
  • 「振り分けるドメイン」: ログイン画面でメールアドレスを入れて「続ける」を押した人を、その接続の IdP へ送ります。この組織で検証済みのドメインだけが使われます
  • 「初回ログインでmemberとして自動登録する(既定は無効)」: 招待されていない人を、初回のログインで member として登録します。対象は、その接続の「振り分けるドメイン」のうち検証済みのドメインのメールアドレスだけです
  • 「SSOを必須にする」: メールのリンクと Slack でのログインを止めます。有効な接続があり、操作する管理者自身がその接続でログインしているときだけ設定できます。オーナーはメールのリンクでログインでき、IdP の障害時の非常口になります。既存のセッションは切れません

SSO を必須にしている間は、最後の有効な接続を無効にできません。先に必須化を解除してください。