LoginSignup
2
2

More than 3 years have passed since last update.

API Connect v2018におけるAPIキー作成・変更方法 - Developer Toolkit編 -

Last updated at Posted at 2019-07-25

はじめに

API Connect v2018では、APIキー(クライアントID/クライアント・シークレット)を変更する方法として以下の2通りあります。

  1. Developer Toolkit CLI (apicコマンド) を使用する方法
  2. 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. はスキップしてください。

  1. カタログ設定の変更
  2. アプリケーション新規作成
  3. クライアント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
catalog-setting.yaml
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ファイルを作成します。

change-catalog-setting.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ファイルを作成します。

app01.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
app01.yaml
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
credential-for-app01.yaml
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ファイルを作成します。

change-cred-for-app01.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/クライアント・シークレットが変更されていることを確認します。
※ クライアント・シークレットはハッシュ化されます。

credential-for-app01.yaml
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
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2