このドキュメントはDevinの連邦政府向け導入環境を対象としています。Devinドキュメントに戻る
認証ファイルを作成する
このファイルでは、モードを 1 つだけ指定します。ファイルが存在しない場合、製品は
"mode": "license" が指定されているものとして動作します。
/etc/devin/auth.json
不明なフィールドはエラーになります。
license モードで指定できるのは schema_version と mode のみです。
IdP にクライアントを登録する
CLI は OIDC の PKCE (S256) を用いた認可コードフローを公開クライアントとして実行するため、クライアントシークレットは使用しません。登録するクライアントは、次の要件を満たす必要があります。client_idに指定した ID(例:devin-cli)を持つ公開クライアント(クライアントシークレットなし)であり、認可コードグラントが有効化され、PKCE メソッドがS256に設定されていること。http://127.0.0.1/callbackが有効なリダイレクト URI として登録されていること。CLI は、ブラウザフローではランダムなループバックポート(http://127.0.0.1:<port>/callback)で待ち受け、手動フローでは固定のhttp://127.0.0.1/callbackを利用します。RFC 8252 では IdP はループバックポートを無視すべきとされていますが、お使いの IdP が無視しない場合は、これにマッチするワイルドカードを登録してください。required_groupを利用する場合は、groups_claimで指定したグループメンバーシップのクレーム(デフォルトはgroups)が ID トークンに含まれていること。- IdP がリフレッシュ時に ID トークンを返し(
openidスコープが付与されていれば、ほとんどの IdP が返します)、かつこのクライアントの ID トークンの有効期間が短く設定されていること。その理由については、失効の伝播の仕組みを参照してください。
サインイン
ワークステーションのターミナルからログインします:127.0.0.1 の URL にリダイレクトされますが、このページは読み込まれません。その URL 全体 (クエリパラメーターを含む) をコピーし、ターミナルに貼り付けてください。
ステータスの確認とサインアウト
Status: not logged in (<reason>) と出力され、続けて Run \devin auth login` to sign in.` と表示されます。
CLI が検証する内容
ID トークンはローカルで検証されます。検証対象は、IdP の JWKS による署名、iss、aud、有効期限 (120 秒までのクロックスキューを許容) 、ログイン時の nonce、およびグループによるアクセス制限です。ID トークンとリフレッシュトークンは、所有者のみがアクセスできる権限 (0600) でローカルの認証情報ストアにキャッシュされ、IdP を通じてバックグラウンドで自動的に更新されます。
SSO (シングルサインオン) が設定済みで、有効なログインが存在しない場合 (かつバックグラウンドでの更新にも失敗した場合) 、CLI は起動時にエラーを表示して終了し、devin auth login を実行するようユーザーに促します。
CLI は IdP からの HTTP リダイレクトには従いません。検出、JWKS、トークンのいずれかのエンドポイントから 3xx が返された場合、ログインは失敗し、該当するエンドポイント名を含むエラーが表示されます。そのため、issuer には IdP が実際に応答する URL を指定する必要があります。
検出されたエンドポイントは発行者と同じオリジンである必要がある
検出によって取得したauthorization_endpoint、token_endpoint、jwks_uri は、issuer とスキーム、ホスト、ポートが同じである必要があります (デフォルトポートは同一とみなされます) 。それ以外のホスト上のエンドポイントは拒否され、ログインは次のようなエラーで失敗します:
hostname-backchannel-dynamic=true を設定した Keycloak です。この場合、token_endpoint と jwks_uri は、CLI が接続に使用した内部ホスト名に書き換えられます。追加のホストが意図したものであることを IdP 自体の設定で確認できた場合に限り、そのホストを追加してください。
host (任意のポート) または host:port の形式で指定し、大文字と小文字を区別せずに照合されます。ワイルドカードは使用できず、このチェックを無効にする方法もありません。許可リストによって TLS の要件が緩和されることはありません。発行者が https:// の場合、http:// のエンドポイントは許可リストに含めても拒否されます。ログインエラーにホスト名が表示されたからといって、そのホストを追加しないでください。そのエラーは、チェックが正しく機能している証拠です。
失効が反映される仕組み
グループによるアクセス制限は、キャッシュされた ID トークンに基づいて評価されます。そのため、IdP 側でユーザーをrequired_group から削除した場合 (またはユーザーを無効化した場合) 、その変更は次回のトークン更新時に反映されます。反映が最も遅くなるのは、現在の ID トークンの有効期限が切れてから、さらに 120 秒のクロックスキュー許容時間が経過した時点です。失効を迅速に反映させる必要がある場合は、このクライアントの ID トークンの有効期間を短く設定してください。
リフレッシュのレスポンスに新しい ID トークンが含まれていない場合は、キャッシュされた ID トークンが引き続き利用されます。ただし、利用できるのはそのトークンの exp から最大 24 時間までです。それ以降は、IdP がリフレッシュトークンを引き続き受け付けている場合でも、ユーザーは再度サインインする必要があります。
実行中のセッションにおける再検証
Devin Desktop (またはバンドルされたエージェントを利用するその他のクライアント) の実行中、エージェントは 60 秒ごとにログイン状態を再チェックし、少なくとも 15 分に 1 回は IdP に対してトークンを強制的に更新します。チェックに失敗すると、エージェントはIDP コード付きの sso_revalidation_failed 監査イベントを記録し、新しい作業の受け付けを停止してシャットダウンします。この場合、ユーザーは再度サインインしてから再起動する必要があります。
監査対象
SSO (シングルサインオン) のアクティビティは、auth イベントとしてローカルの監査ログに記録されます。検証済みのトークンを参照できるイベントでは、すべて actor に SSO アイデンティティ (sso_issuer、sso_subject、sso_user、sso_groups) が含まれます。
IDP エラーコード
エラーコードの一覧は エラーコード ページをご覧ください。

