OIDCアプリのクライアント認証用のシークレットとキーを管理する

OIDCアプリのシークレットとキーの管理を使用すると、クライアントの認証方法を安全かつ効率的に管理できます。これらの設定では、以下を実行することができます。

  • クライアントシークレットと公開鍵/秘密鍵のペアを選択し、管理コンソールから直接、すばやく生成します。これにより、APIやサードパーティのWebサイトを使用して公開鍵と秘密鍵を生成する必要がなくなります。
  • 管理コンソールで公開鍵のURLを指定し、Oktaが更新された公開鍵を自動的にフェッチできるようにします。これにより、キーペアをローテーションするときに、管理コンソールで公開鍵を手動で更新する必要がなくなります。
  • 2つのクライアントシークレットを同時に生成して、アプリケーションのダウンタイムなしで安全にローテーションできるようにします。アプリのクライアントシークレットは2つまで生成できます。
  • クライアントシークレットと公開鍵/秘密鍵の認証方法を切り替えます。

Okta APIを使用して、これらのタスクを実行することもできます。「クライアントシークレットのローテーション」を参照してください。

開始する前の確認事項

OIDCアプリを構成する他の設定を見直します。OpenID Connectアプリ統合を作成するを参照してください。

この手順を開始する

OAuthのシークレットとキーの管理では、次のタスクを実行することができます。

クライアント認証用の公開鍵/秘密鍵のペアを生成する

  1. OIDCアプリに移動します。
  2. 一般(General)タブをクリックします。
  3. クライアントの資格情報(Client Credentials)セクションで、編集(Edit)をクリックします。
  4. クライアント認証(Client Authentication)で、公開鍵/秘密鍵(Public Key / Private Key)を選択します。
  5. 公開鍵(Public Keys)セクションで、キーを追加(Add Key)をクリックします。公開鍵を追加(Add a public key)ポップアップウィンドウが開きます。
  6. 新しいキーを生成(Generate New Key)ドロップダウンメニューで、クライアント認証用(署名)(For client authentication (sig))を選択します。これにより、クライアント認証用の公開鍵と秘密鍵が生成されます。
  7. 後で参照できるように、秘密鍵を安全な場所にコピーします。秘密鍵をJSONまたはPEMのいずれかの形式でコピーします。秘密鍵は生成時に一度だけ表示されます。Oktaは秘密鍵を保存しません。
  8. 完了(Done)をクリックします。
  9. 一般(General)タブで、保存(Save)をクリックします。

公開鍵は一般(General)タブに表示されます。キーをクリックすると、JSON形式で表示されます。

クライアント認証用の公開鍵を追加する

  1. OIDCアプリに移動します。
  2. 一般(General)タブをクリックします。
  3. クライアントの資格情報(Client Credentials)セクションで、編集(Edit)をクリックします。
  4. クライアント認証(Client Authentication)で、公開鍵/秘密鍵(Public Key / Private Key)を選択します。
  5. 公開鍵(Public Keys)セクションで、キーを追加(Add Key)をクリックします。公開鍵を追加(Add a public key)ポップアップウィンドウが開きます。
  6. このウィンドウで、公開鍵をJSON形式で貼り付けます。
  7. 完了(Done)をクリックします。
  8. 一般(General)タブで、保存(Save)をクリックします。

公開鍵は一般(General)タブに表示されます。キーをクリックすると、JSON形式で表示されます。

クライアント認証用に2番目のキーペアを追加する

  1. OIDCアプリに移動します。
  2. 一般(General)タブをクリックします。
  3. クライアントの資格情報(Client Credentials)セクションで、編集(Edit)をクリックします。
  4. クライアント認証(Client Authentication)で、公開鍵/秘密鍵(Public Key / Private Key)を選択します。
  5. 公開鍵(Public Keys)セクションで、キーを追加(Add Key)をクリックします。公開鍵を追加(Add a Public Key)ポップアップウィンドウが開きます。
  6. このウィンドウで、公開鍵をJSON形式で貼り付けます。または、新しいキーを生成(Generate New Key)をクリックし、クライアント認証用(署名)(For client authentication (sig))を選択して、新しい公開鍵と秘密鍵のペアを生成します。
  7. 後で参照できるように、秘密鍵を安全な場所にコピーします。秘密鍵をJSONまたはPEMのいずれかの形式でコピーします。秘密鍵は生成時に一度だけ表示されます。Oktaは秘密鍵を保存しません。
  8. 完了(Done)をクリックします。
  9. 一般(General)タブで、保存(Save)をクリックします。

公開鍵は一般(General)タブに表示されます。キーをクリックすると、JSON形式で表示されます。

URLから公開鍵を自動的に更新する

管理コンソールで公開鍵を保存するURLを指定することで、OIDCアプリのprivate_key_jwtクライアント認証を構成することができます。これにより、キーペアをローテーションするたびにOktaで公開鍵を手動で更新する必要がなくなります。Oktaは、このURLからアプリの最新の公開鍵を動的にフェッチします。

  1. OIDCアプリに移動します。
  2. 一般(General)タブをクリックします。
  3. クライアントの資格情報(Client Credentials)セクションで、編集(Edit)をクリックします。
  4. クライアント認証(Client Authentication)で、公開鍵/秘密鍵(Public Key / Private Key)を選択します。
  5. URLを使用してキーを動的にフェッチ(Use a URL to fetch keys dynamically)を選択します。
  6. Urlフィールドに、公開鍵が保存されているURLを入力します。
  7. 保存(Save)をクリックします。

mTLSクライアント認証の証明書を追加する

早期アクセスリリース。セルフサービス機能を有効にするを参照してください。

相互トランスポートレイヤーセキュリティ(mTLS)クライアント認証では、TLSハンドシェイク中に証明書を使用してクライアントアプリを認証できます。Oktaはその証明書に暗号でバインドされたアクセストークンを発行するため、盗まれたトークンは証明書なしで使用することはできません。フェーズ1では、Oktaは直接信頼をサポートします。Oktaは認証局(CA)なしで、アップロードされた特定の自己署名証明書を信頼します。

  1. OIDCアプリに移動します。
  2. 一般(General)タブをクリックします。
  3. クライアントの資格情報(Client Credentials)セクションで、編集(Edit)をクリックします。
  4. クライアント認証(Client authentication)で、鍵と証明書(Keys and certificate)を選択してから、相互トランスポートレイヤーセキュリティ(mTLS)(Mutual Transport Layer Security(mTLS))を選択します。
  5. 鍵と証明書(Keys and certificate)セクションで、証明書を追加(Add certificate)をクリックします。証明書を追加(Add certificate)ダイアログが開きます。
  6. 証明書をPEM形式でアップロードします。
  7. 保存(Save)をクリックします。
  8. 一般(General)タブで、保存(Save)をクリックします。

鍵と証明書(Keys and certificate)テーブルに、公開鍵の横に証明書が表示されます。鍵の用途(Key use)列には、公開鍵と区別するために、証明書の行にsig (mTLS)というラベルが付けられます。

鍵と証明書(Keys and certificate)をクライアント認証方法として保存するには、鍵と証明書(Keys and certificate)テーブル内のアクティブなキーまたは証明書がアプリに必要です。

アプリのmTLSクライアント認証を選択すると、次のような影響があります。

  • Oktaは、アプリのトークンリクエストでの所有証明(DPoP)ヘッダーの提示を必須にする(Require Demonstrating Proof of Possession (DPoP) header in token requests)設定を無効にします。これは、mTLSがすでに所有証明を提供しているためです。
  • 暗黙(ハイブリッド)(Implicit(hybrid))付与タイプは、アプリで無効になります。

証明書を置き換えるか、削除します。

鍵と証明書(Keys and certificate)がアクティブなクライアント認証方法ですが、最後のアクティブなキーまたは証明書を非アクティブ化することはできません。鍵または証明書は、非アクティブ(Inactive)に設定した後でのみ削除できます。証明書を置き換えるか、削除するには、以下の手順を行います。

  1. クライアント認証(Client authentication)で、鍵と証明書(Keys and certificate)の下にあるクライアントシークレット(Client secret)またはJWT(JSON Web Token)アサーション(JWT(JSON Web Token)assertion)に切り替えます。
  2. 鍵と証明書(Keys and certificate)テーブルで、証明書のステータスを非アクティブ(Inactive)に設定します。
  3. 証明書を削除してから、必要に応じて代わりの証明書を追加します。

第2のクライアントシークレットを作成してクライアントシークレットをローテーションする

認証にクライアントシークレットを使用している場合は、ローテーションに使用する2番目のシークレットを生成することができます。

  1. OIDCアプリに移動します。
  2. 一般(General)タブをクリックします。
  3. クライアントシークレット(Client Secrets)で、新しいシークレットを生成(Generate new secret)ボタンをクリックします。新しいシークレットが生成され、クライアントシークレット(Client Secret)リストに表示されます。両方のシークレットがデフォルトでアクティブになります。
  4. クリップボードアイコンをクリックします。新しく生成されたシークレットを使用してサーバーを更新します。
  5. Admin Console に戻り、古いシークレットのステータスを非アクティブ(Inactive)に設定します。非アクティブなシークレットを削除することもできます。

クライアント認証方法を変更する

クライアントシークレットと公開鍵/秘密鍵を切り替えることができます。

  • クライアントシークレットから公開鍵/秘密鍵に切り替えた場合は、アプリのすべてのクライアントシークレットが削除されます。
  • 公開鍵をOktaで保存するのではなくURLから取得するように切り替えると、Oktaに保存されている公開鍵とmTLS証明書は削除されます。
  • 早期アクセスリリース。セルフサービス機能を有効にするを参照してください。

    鍵と証明書(Keys and certificate)の下でJWT(JSON Web Token)アサーション(JWT(JSON Web Token)assertion)とmTLSを切り替えた場合、既存の鍵と証明書は削除されません。