契約・組織
自分たちのIdPでログインさせる(SSO・OpenID Connect)
前提
管理画面の「アカウント・サポート」→「SSO(組織のIdP)」です。プロジェクトの全権の管理員だけが使えます(管理範囲を限った管理員は、使えません)。
会社などで使っているIdP(Okta・Microsoft Entra ID・Keycloak など、OpenID Connectに対応したもの)を、このプロジェクトのログインに使えます。メンバーは、会社のアカウントで、このプロジェクトにログインできます。
Google・Microsoftでのログインとは、別の機能です 「SSO設定(Google・Microsoftでのログイン)」は、サービス全体に共通の設定で、運営者だけが変えられます。この記事の機能は、プロジェクトごとに、管理員が、自分たちのIdPを設定します。
設定の流れ
- 画面の「1. IdPに登録する値」の、リダイレクトURIを、IdP側で、アプリ(クライアント)の設定に登録します。認可の種類は、Authorization Code(クライアントシークレットを使う、Webアプリケーション)、スコープは
openid email profileです。このURLは、すべてのプロジェクトで共通の、1つです。独自ドメインを使っていても、IdPに登録するのは、このURLだけです。 - 「2. IdPの情報」に、Issuer(発行元)のURL・クライアントID・クライアントシークレットを入れて、「保存」します。保存すると、接続先(認可・トークンのURLなど)を、IdPから自動で取得します。うまくいかないときは、「IdPへの接続を確認」で、理由を確かめます。
- 「3. ログインを許すドメイン」で、メンバーのメールアドレスのドメイン(例: example.co.jp)を追加し、DNSの設定で、ドメインの所有を確認します(下の説明を参照)。
- 「このSSOを使う」をオンにして、「保存」します。画面の上の「状態」が、「ログイン画面に表示中」に変わります。
メンバーには、「状態」に表示されるログイン用のURLを配ると、そこから直接、SSOでログインできます。独自ドメインのログイン画面や、プロジェクトのログイン画面にも、「〇〇でログイン」のボタンが出ます。ボタンの名前は、「ボタンに表示する名前」で決められます。
ドメインの所有を確認する
IdPは、お客様が管理するものなので、どんなメールアドレスでも、名乗れてしまいます。そこで、DNSで、そのドメインをお客様が持っていると確認できたドメインのメールアドレスだけを、ログインさせます。他の人のメールアドレスで、その人の会員になりすませないようにするためです。サブドメイン(dept.example.co.jp など)も、含まれます。
- ドメインを追加すると、画面に、TXTレコードの「名前」と「値」が出ます。
- そのドメインのDNSに、表示どおりのTXTレコードを追加します(例: 名前
_ctos-challenge.example.co.jp、値ctos-verify=…)。 - 「確認する」を押します。「確認済み」になれば、完了です。DNSの設定が反映されるまで、数分〜数時間かかることがあります。
確認済みのドメインが1つも無いと、「このSSOを使う」はオンにできません。確認済みのドメインを削除して、1つも無くなったときは、ログインは止まります。
だれが、どうログインできるか
| 場面 | 動き |
|---|---|
| 確認済みのドメイン以外のメールアドレス | ログインできません。会員も作られません |
| 初めてログインする人(同じメールアドレスの会員が、まだいない) | 「初めてログインした人を、自動で会員にする」がオンなら、新しい会員を作り、このプロジェクトに「参加者」として加えます。オフなら、ログインできません |
| 同じメールアドレスの会員が、すでにいる | その会員が、メールアドレスを確認済みなら、結び付けて、ログインさせます。確認が済んでいない会員は、別の人が登録した可能性があるので、結び付けません |
| プロジェクトの、加入申請中の人 | 自動作成がオンなら、承認され、「参加者」になります |
| すでに「閲覧のみ」などの権限がある人 | 権限は、SSOでは変わりません |
| プロジェクトのメンバーから外した人 | SSOでも、ログインできません(黙って、メンバーに戻ることはありません) |
| 二段階認証を設定している人 | SSOではログインできません。パスワードと認証コードで、ログインします |
| メンバー数が、プランの上限に達している | 新しい会員は、作られません。プランを上げるか、不要なメンバーを整理します |
自動で作られた会員は、パスワードを持ちません(SSOでログインします)。パスワードでもログインしたいときは、ログイン画面の「パスワードをお忘れですか?」から、設定できます。
パスワードでのログインは、これまでどおり使えます 「SSOを必須にして、パスワードを止める」設定は、まだありません。
うまくいかないとき
| 表示 | 原因と対処 |
|---|---|
| 保存したのに「まだ『使う』にできません」 | 「足りないもの」に出た項目を、そろえます(IdPへの接続・クライアントID・シークレット・所有を確認したドメイン) |
| 「IdPに接続できませんでした」 | Issuer のURLを確かめます。(Issuer)/.well-known/openid-configuration が、ブラウザで開けるかを確かめます。社内からしか届かないIdPや、https 以外のURL、ポート番号の付いたURLは、使えません |
| 「IdPが返した issuer が、入力した Issuer と一致しません」 | IdPが返す issuer と、入力したものを、完全に合わせます(末尾の / の違いは、問題ありません) |
| ログイン時に「このメールアドレスのドメインは、許可されていません」 | そのメールアドレスのドメインが、確認済みのドメインに入っていません。ドメインを追加して、確認します |
| ログイン時に「相手のサービスとの通信に失敗しました」 | クライアントシークレットの誤り・期限切れや、IdP側のリダイレクトURIの登録漏れが、よくある原因です。IdP側の設定を確かめます |
| ボタンが出ない | 「状態」が「ログイン画面に表示中」になっているかを確かめます |
安全のための仕組み
- シークレットは暗号化して保存し、保存したあとは、画面に表示しません(変えるときだけ、入力します)。プロジェクトのデータの書き出しや、操作の記録にも、出ません。
- IdPのURLへの接続は、安全なものに限ります。https のURLで、公開されたアドレスだけです。社内のアドレスなどには、接続しません。
- ログインの手続きには、state・nonce・PKCE(S256)を使い、IdPが返すIDトークンの発行元・宛先・期限を確かめます。
- 設定の変更とSSOでのログインは、操作の記録(監査ログ)に残ります(分類は、「外部連携・API」と「セキュリティ(認証)」)。
あわせて読みたい
- SSO設定(Google・Microsoftでのログイン)
- 操作の記録(監査ログ)を見る
- メンバーの承認と権限を管理する