はじめに
API Connect v2018では、APIキー(クライアントID/クライアント・シークレット)を変更する方法として以下の2通りあります。
- Developer Toolkit CLI (apicコマンド) を使用する方法
- API Connect REST API を使用する方法
ここでは、「1. Developer Toolkit CLI を使用する方法」について紹介します。
「2. API Connect REST API を使用する方法」については、API Connect v2018におけるAPIキー作成・変更方法 - API Connect REST API編 - を参照してください。
また、API Connect v5におけるAPIキーの変更方法については、API Connectで、APIキーを変更する方法 で紹介されています。
環境
API Connect v2018.4.1.6
事前準備
クライアント (win/mac/linux) にDeveloper Toolkitを導入し、apicコマンドが実行可能である必要があります。
Developer Toolkitの導入方法については API Connect v2018で新しくなったDeveloper Toolkit を参考にします。
ここでは、linux版を使用します。
$ ./apic version
APIConnect toolkit 4b1fa55baea5706766b9e53cba29a6c4b630e96a (Built 2019-06-13T20:33:34Z) (Tag o.6750235-g.4b1fa55)
手順
以下の手順で新規アプリケーションを作成し、クライアントID/クライアント・シークレットを変更します。
既に作成済みアプリケーションのクライアントID/クライアント・シークレットを変更する場合は 手順2. はスキップしてください。
- カタログ設定の変更
- アプリケーション新規作成
- クライアントID/クライアント・シークレット変更
1. カタログ設定の変更
クライアント・シークレットを変更するためには、事前にカタログ設定で "hash_client_secret" パラメーターをtrueにする必要があります。 (デフォルトはfalse)
API Managerにログインします。
(apim-admin はプロバイダー組織所有者)
$ ./apic login -u apim-admin -r provider/default-idp-2 -s api-manager-ui.mgmt01.api.local
API Connect の資格情報を入力してください
パスワードを入力してください:
api-manager-ui.mgmt01.api.local に正常にログインしました
レルムの確認方法
レルムは以下のコマンドで確認可能です。$ ./apic identity-providers:list -s api-manager-ui.mgmt01.api.local --scope provider
default-idp-2
カタログ設定情報を取得し、現在のカタログ設定を確認します。
org01 はプロバイダー組織名、openapi はカタログ名です。
$ ./apic catalog-settings:get -o org01 -c openapi -s api-manager-ui.mgmt01.api.local
catalog-setting catalog-setting.yaml https://api-manager-ui.mgmt01.api.local/api/catalogs/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9/settings
type: catalog_setting
api_version: 2.0.0
name: catalog-setting
application_lifecycle:
enabled: false
consumer_self_service_onboarding: true
custom_notification_templates_enabled: false
email_sender:
custom: false
hash_client_secret: false
invitation_ttl: 172800
portal:
type: drupal
endpoint: 'https://www.portal01.api.local/org01/openapi'
portal_service_url: >-
https://api-manager-ui.mgmt01.api.local/api/orgs/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/portal-services/9ac15b13-fdca-4d82-8d41-eb8a2251f7e6
webhook_url: >-
https://api-manager-ui.mgmt01.api.local/api/catalogs/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9/webhooks/748f4d91-b757-4ec8-aabd-acdafbdb38ca
production_mode: false
spaces_enabled: false
task_self_approval: false
user_registry_default_url: >-
https://api-manager-ui.mgmt01.api.local/api/catalogs/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9/configured-catalog-user-registries/27a2aa9a-eef1-4c93-b312-91584241f671
vanity_api_endpoint:
enabled: false
vanity_api_base_endpoints: []
created_at: '2019-07-08T04:53:38.670Z'
updated_at: '2019-07-11T09:26:45.071Z'
org_url: >-
https://api-manager-ui.mgmt01.api.local/api/orgs/0007cb5d-1eaf-4716-b77d-eba652aa8ed8
catalog_url: >-
https://api-manager-ui.mgmt01.api.local/api/catalogs/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9
url: >-
https://api-manager-ui.mgmt01.api.local/api/catalogs/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9/settings
"hash_client_secret" をtrueに変更するためのyamlファイルを作成します。
hash_client_secret: true
カタログ設定変更を実行します。
$ ./apic catalog-settings:update -o org01 -c openapi -s api-manager-ui.mgmt01.api.local change-catalog-setting.yaml
catalog-setting https://api-manager-ui.mgmt01.api.local/api/catalogs/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9/settings
2. アプリケーション新規作成
アプリケーション作成に必要な情報を記載したyamlファイルを作成します。
type: app
api_version: 2.0.0
name: app01
title: App01
state: enabled
lifecycle_state: production
redirect_endpoints:
- 'https://localhost'
アプリケーション作成を実行します。
dev01 は開発者組織名です。
$ ./apic apps:create -o org01 -c openapi --consumer-org dev01 -s api-manager-ui.mgmt01.api.local create-app01.yaml
app01 [state: enabled] https://api-manager-ui.mgmt01.api.local/api/apps/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9/7b595023-af90-468b-9542-1b705c9be05a/b50c6d92-d787-486c-a1fd-d4efda8f1807
作成したアプリケーション情報を取得します。
$ ./apic apps:get -o org01 -c openapi --consumer-org dev01 -s api-manager-ui.mgmt01.api.local app01
app01 app01.yaml https://api-manager-ui.mgmt01.api.local/api/apps/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9/7b595023-af90-468b-9542-1b705c9be05a/b50c6d92-d787-486c-a1fd-d4efda8f1807
type: app
api_version: 2.0.0
id: b50c6d92-d787-486c-a1fd-d4efda8f1807
name: app01
title: App01
state: enabled
lifecycle_state: production
app_credential_urls:
- >-
https://api-manager-ui.mgmt01.api.local/api/apps/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9/7b595023-af90-468b-9542-1b705c9be05a/b50c6d92-d787-486c-a1fd-d4efda8f1807/credentials/a9d4eac3-9a62-4a08-a5a3-dc2e7b0f9ef3
redirect_endpoints:
- 'https://localhost'
created_at: '2019-07-25T09:40:05.698Z'
updated_at: '2019-07-25T09:40:05.919Z'
org_url: >-
https://api-manager-ui.mgmt01.api.local/api/orgs/0007cb5d-1eaf-4716-b77d-eba652aa8ed8
catalog_url: >-
https://api-manager-ui.mgmt01.api.local/api/catalogs/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9
consumer_org_url: >-
https://api-manager-ui.mgmt01.api.local/api/consumer-orgs/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9/7b595023-af90-468b-9542-1b705c9be05a
url: >-
https://api-manager-ui.mgmt01.api.local/api/apps/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9/7b595023-af90-468b-9542-1b705c9be05a/b50c6d92-d787-486c-a1fd-d4efda8f1807
3. クライアントID/クライアント・シークレット変更
アプリケーション作成時に自動生成されたクレデンシャル名を確認します。
自動生成されるクレデンシャルの命名規則は「credential-for-<アプリケーション名>」です。
$ ./apic credentials:list -a app01 -o org01 -c openapi --consumer-org dev01 -s api-manager-ui.mgmt01.api.local
credential-for-app01 https://api-manager-ui.mgmt01.api.local/api/apps/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9/7b595023-af90-468b-9542-1b705c9be05a/b50c6d92-d787-486c-a1fd-d4efda8f1807/credentials/a9d4eac3-9a62-4a08-a5a3-dc2e7b0f9ef3
クレデンシャル名を指定してクレデンシャル情報を取得します。
$ ./apic credentials:get -a app01 -o org01 -c openapi --consumer-org dev01 -s api-manager-ui.mgmt01.api.local credential-for-app01
credential-for-app01 credential-for-app01.yaml https://api-manager-ui.mgmt01.api.local/api/apps/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9/7b595023-af90-468b-9542-1b705c9be05a/b50c6d92-d787-486c-a1fd-d4efda8f1807/credentials/a9d4eac3-9a62-4a08-a5a3-dc2e7b0f9ef3
type: credential
api_version: 2.0.0
id: a9d4eac3-9a62-4a08-a5a3-dc2e7b0f9ef3
name: credential-for-app01
title: Credential for App01
summary: Credential for App01
client_id: d20721757e09961c8313583e1ff4c1b9
client_secret_hashed: exQ7BxNb1++qQRtu3v7uypYB4uewiU5+SpIv1mq0Jek=
created_at: '2019-07-25T09:40:05.801Z'
updated_at: '2019-07-25T09:40:05.801Z'
org_url: >-
https://api-manager-ui.mgmt01.api.local/api/orgs/0007cb5d-1eaf-4716-b77d-eba652aa8ed8
catalog_url: >-
https://api-manager-ui.mgmt01.api.local/api/catalogs/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9
consumer_org_url: >-
https://api-manager-ui.mgmt01.api.local/api/consumer-orgs/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9/7b595023-af90-468b-9542-1b705c9be05a
app_url: >-
https://api-manager-ui.mgmt01.api.local/api/apps/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9/7b595023-af90-468b-9542-1b705c9be05a/b50c6d92-d787-486c-a1fd-d4efda8f1807
url: >-
https://api-manager-ui.mgmt01.api.local/api/apps/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9/7b595023-af90-468b-9542-1b705c9be05a/b50c6d92-d787-486c-a1fd-d4efda8f1807/credentials/a9d4eac3-9a62-4a08-a5a3-dc2e7b0f9ef3
クライアントID/クライアント・シークレットを変更するためのyamlファイルを作成します。
client_id: client-id-for-app01
client_secret: client-secret-for-app01
クレデンシャルの変更を実行します。
$ ./apic credentials:update -a app01 -o org01 -c openapi --consumer-org dev01 -s api-manager-ui.mgmt01.api.local credential-for-app01 change-cred-for-app01.yaml
credential-for-app01 https://api-manager-ui.mgmt01.api.local/api/apps/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9/7b595023-af90-468b-9542-1b705c9be05a/b50c6d92-d787-486c-a1fd-d4efda8f1807/credentials/a9d4eac3-9a62-4a08-a5a3-dc2e7b0f9ef3
再度アプリケーションのクレデンシャルを取得して、クライアントID/クライアント・シークレットが変更されていることを確認します。
※ クライアント・シークレットはハッシュ化されます。
type: credential
api_version: 2.0.0
id: a9d4eac3-9a62-4a08-a5a3-dc2e7b0f9ef3
name: credential-for-app01
title: Credential for App01
summary: Credential for App01
client_id: client-id-for-app01
client_secret_hashed: HJIRnovqqqMMIKPJtVAuZ2SfS+GgWPhCoag40RrrKGU=
created_at: '2019-07-25T09:40:05.801Z'
updated_at: '2019-07-25T10:00:31.169Z'
org_url: >-
https://api-manager-ui.mgmt01.api.local/api/orgs/0007cb5d-1eaf-4716-b77d-eba652aa8ed8
catalog_url: >-
https://api-manager-ui.mgmt01.api.local/api/catalogs/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9
consumer_org_url: >-
https://api-manager-ui.mgmt01.api.local/api/consumer-orgs/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9/7b595023-af90-468b-9542-1b705c9be05a
app_url: >-
https://api-manager-ui.mgmt01.api.local/api/apps/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9/7b595023-af90-468b-9542-1b705c9be05a/b50c6d92-d787-486c-a1fd-d4efda8f1807
url: >-
https://api-manager-ui.mgmt01.api.local/api/apps/0007cb5d-1eaf-4716-b77d-eba652aa8ed8/3980e0a4-83f5-4305-a67c-701b626cffc9/7b595023-af90-468b-9542-1b705c9be05a/b50c6d92-d787-486c-a1fd-d4efda8f1807/credentials/a9d4eac3-9a62-4a08-a5a3-dc2e7b0f9ef3