はじめに
API Connect v2018では、APIキー(クライアントID/クライアント・シークレット)を変更する方法として以下の2通りあります。
- Developer Toolkit CLI (apicコマンド) を使用する方法
- API Connect REST API を使用する方法
ここでは、「2. API Connect REST API を使用する方法」について紹介します。
「1. Developer Toolkit CLI を使用する方法」については、 API Connect v2018におけるAPIキー作成・変更方法 - Developer Toolkit編 - を参照してください。
また、API Connect v5におけるAPIキーの変更方法については、API Connectで、APIキーを変更する方法 で紹介されています。
環境
API Connect v2018.4.1.6
事前準備
API Connect REST APIを使用するためには、事前にアプリケーションの登録とトークン取得が必要です。
アプリケーション登録とトークン取得方法については、 API Connect v2018 の REST APIを使ってみる を参照してください。
手順
新規アプリケーションを作成し、クライアントID/クライアント・シークレットを変更します。
既に作成済みアプリケーションのクライアントID/クライアント・シークレットを変更する場合は 手順1. はスキップしてください。
- アプリケーション新規作成
- クライアントID/クライアント・シークレット変更
1. アプリケーション新規作成
アプリケーション作成に必要な情報を記載したjsonファイルを作成します。
{
"type": "app",
"api_version": "2.0.0",
"name": "app02",
"title": "App02",
"state": "enabled",
"lifecycle_state": "production",
"redirect_endpoints": [
"https://localhost"
]
}
アプリケーション作成を実行します。
$ curl -i -k --tlsv1.2 -X POST 'https://api-manager-ui.mgmt01.api.local/api/consumer-orgs/org01/openapi/dev01/apps' -d @create-app02.json -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJjMjM1YTI3NC0xMTdiLTRhOGUtOWNkNy05ZjJkN2ZkMDFlZmQiLCJuYW1lc3BhY2UiOiI1MjMzOTRiMC1iM2YzLTRiY2EtYjRmNy00NTYyZTIwMmNjMzc6ZDZkOTU3MWItNjRhNi00OTZlLTk2NTgtMTJjYjI1NjFmODVmOjkyODRjMzE5LWM3YzQtNDQ0Ny05YTM2LTA3NzBmMjI0YzMyNyIsImF1ZCI6Ii9hcGkvY2xvdWQvcmVnaXN0cmF0aW9ucy8yNjJhNjUzMi1mYzhiLTRmYTgtYTk0Yi1iZjg4MzRmMDE3YzciLCJzdWIiOiIvYXBpL3VzZXItcmVnaXN0cmllcy81MjMzOTRiMC1iM2YzLTRiY2EtYjRmNy00NTYyZTIwMmNjMzcvZDZkOTU3MWItNjRhNi00OTZlLTk2NTgtMTJjYjI1NjFmODVmL3VzZXJzLzkyODRjMzE5LWM3YzQtNDQ0Ny05YTM2LTA3NzBmMjI0YzMyNyIsImlzcyI6IklCTSBBUEkgQ29ubmVjdCIsImV4cCI6MTU2NDA4NTY2NSwiaWF0IjoxNTY0MDU2ODY1LCJncmFudF90eXBlIjoicGFzc3dvcmQiLCJ1c2VyX3JlZ2lzdHJ5X3VybCI6Ii9hcGkvdXNlci1yZWdpc3RyaWVzLzUyMzM5NGIwLWIzZjMtNGJjYS1iNGY3LTQ1NjJlMjAyY2MzNy9kNmQ5NTcxYi02NGE2LTQ5NmUtOTY1OC0xMmNiMjU2MWY4NWYiLCJyZWFsbSI6InByb3ZpZGVyL2RlZmF1bHQtaWRwLTIiLCJ1c2VybmFtZSI6ImFwaW0tYWRtaW4iLCJpZF90b2tlbiI6ImV5SmhiR2NpT2lKSVV6STFOaUlzSW5SNWNDSTZJa3BYVkNKOS5leUptYVhKemRGOXVZVzFsSWpvaVlYQnBiUzFoWkcxcGJpMW1hWEp6ZENJc0lteGhjM1JmYm1GdFpTSTZJbUZ3YVcwdFlXUnRhVzR0YkdGemRDSXNJblZ6WlhKZmFXUWlPaUk1WlRjMFptWTNaUzFtTmpCbExUUTFZVE10WWpZek15MWpZall4WmpreFltUmxNalVpTENKMWMyVnlibUZ0WlNJNkltRndhVzB0WVdSdGFXNGlMQ0pwWVhRaU9qRTFOalF3TlRZNE5qVjkuTkNZdlJENVViTWdnUVhobDUyTEhjV0hIOS1IYThhVF82cm1ZOEVsa1pwOCIsInNjb3BlcyI6WyJjbG91ZDp2aWV3IiwiY2xvdWQ6bWFuYWdlIiwicHJvdmlkZXItb3JnOnZpZXciLCJwcm92aWRlci1vcmc6bWFuYWdlIiwib3JnOnZpZXciLCJvcmc6bWFuYWdlIiwiZHJhZnRzOnZpZXciLCJkcmFmdHM6ZWRpdCIsImNoaWxkOnZpZXciLCJjaGlsZDpjcmVhdGUiLCJjaGlsZDptYW5hZ2UiLCJwcm9kdWN0OnZpZXciLCJwcm9kdWN0OnN0YWdlIiwicHJvZHVjdDptYW5hZ2UiLCJhcHByb3ZhbDp2aWV3IiwiYXBwcm92YWw6bWFuYWdlIiwiYXBpLWFuYWx5dGljczp2aWV3IiwiYXBpLWFuYWx5dGljczptYW5hZ2UiLCJjb25zdW1lci1vcmc6dmlldyIsImNvbnN1bWVyLW9yZzptYW5hZ2UiLCJhcHA6dmlldzphbGwiLCJhcHA6bWFuYWdlOmFsbCIsIm15OnZpZXciLCJteTptYW5hZ2UiLCJ3ZWJob29rOnZpZXciXX0.B1v1OVJZgDCUyEqVmcXq7ZfBCY5latU6cuG5XtUElk0'
HTTP/1.1 201 Created
Date: Thu, 25 Jul 2019 12:17:04 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 1420
Connection: keep-alive
X-Request-ID: 77e0639c774e7623a1faf1ca330ec92d
ETag: W/"58c-R+s6R072Z2/EgvfGBGlxCN2O2nA"
Vary: Accept-Encoding
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, PUT, POST, DELETE, PATCH, OPTIONS
Access-Control-Allow-Headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization
Strict-Transport-Security: max-age=31536000; includeSubDomains
{
"type": "app",
"api_version": "2.0.0",
"id": "cd4f4dd5-65d3-4c0b-9f6b-c44bd520a1d1",
"name": "app02",
"title": "App02",
"state": "enabled",
"lifecycle_state": "production",
"redirect_endpoints": [
"https://localhost"
],
"created_at": "2019-07-25T12:16:58.180Z",
"updated_at": "2019-07-25T12:16:58.180Z",
"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/cd4f4dd5-65d3-4c0b-9f6b-c44bd520a1d1",
"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/cd4f4dd5-65d3-4c0b-9f6b-c44bd520a1d1/credentials/8fd3715d-ea3d-435e-9f2c-29c91ed88f8b"
],
"client_secret": "97cb9c4a415eaf152c7e9c83dff107ab",
"client_id": "26401dccd7bad4aa55e8b772937c49d9"
}
応答のJSONから自動生成されたクライアントID/クライアント・シークレットが確認できます。
2. クライアントID/クライアント・シークレット変更
作成したアプリケーションのクレデンシャル情報を取得します。
$ curl -i -k --tlsv1.2 -X GET 'https://api-manager-ui.mgmt01.api.local/api/apps/org01/openapi/dev01/app02/credentials' -H 'Accept: application/json' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJjMjM1YTI3NC0xMTdiLTRhOGUtOWNkNy05ZjJkN2ZkMDFlZmQiLCJuYW1lc3BhY2UiOiI1MjMzOTRiMC1iM2YzLTRiY2EtYjRmNy00NTYyZTIwMmNjMzc6ZDZkOTU3MWItNjRhNi00OTZlLTk2NTgtMTJjYjI1NjFmODVmOjkyODRjMzE5LWM3YzQtNDQ0Ny05YTM2LTA3NzBmMjI0YzMyNyIsImF1ZCI6Ii9hcGkvY2xvdWQvcmVnaXN0cmF0aW9ucy8yNjJhNjUzMi1mYzhiLTRmYTgtYTk0Yi1iZjg4MzRmMDE3YzciLCJzdWIiOiIvYXBpL3VzZXItcmVnaXN0cmllcy81MjMzOTRiMC1iM2YzLTRiY2EtYjRmNy00NTYyZTIwMmNjMzcvZDZkOTU3MWItNjRhNi00OTZlLTk2NTgtMTJjYjI1NjFmODVmL3VzZXJzLzkyODRjMzE5LWM3YzQtNDQ0Ny05YTM2LTA3NzBmMjI0YzMyNyIsImlzcyI6IklCTSBBUEkgQ29ubmVjdCIsImV4cCI6MTU2NDA4NTY2NSwiaWF0IjoxNTY0MDU2ODY1LCJncmFudF90eXBlIjoicGFzc3dvcmQiLCJ1c2VyX3JlZ2lzdHJ5X3VybCI6Ii9hcGkvdXNlci1yZWdpc3RyaWVzLzUyMzM5NGIwLWIzZjMtNGJjYS1iNGY3LTQ1NjJlMjAyY2MzNy9kNmQ5NTcxYi02NGE2LTQ5NmUtOTY1OC0xMmNiMjU2MWY4NWYiLCJyZWFsbSI6InByb3ZpZGVyL2RlZmF1bHQtaWRwLTIiLCJ1c2VybmFtZSI6ImFwaW0tYWRtaW4iLCJpZF90b2tlbiI6ImV5SmhiR2NpT2lKSVV6STFOaUlzSW5SNWNDSTZJa3BYVkNKOS5leUptYVhKemRGOXVZVzFsSWpvaVlYQnBiUzFoWkcxcGJpMW1hWEp6ZENJc0lteGhjM1JmYm1GdFpTSTZJbUZ3YVcwdFlXUnRhVzR0YkdGemRDSXNJblZ6WlhKZmFXUWlPaUk1WlRjMFptWTNaUzFtTmpCbExUUTFZVE10WWpZek15MWpZall4WmpreFltUmxNalVpTENKMWMyVnlibUZ0WlNJNkltRndhVzB0WVdSdGFXNGlMQ0pwWVhRaU9qRTFOalF3TlRZNE5qVjkuTkNZdlJENVViTWdnUVhobDUyTEhjV0hIOS1IYThhVF82cm1ZOEVsa1pwOCIsInNjb3BlcyI6WyJjbG91ZDp2aWV3IiwiY2xvdWQ6bWFuYWdlIiwicHJvdmlkZXItb3JnOnZpZXciLCJwcm92aWRlci1vcmc6bWFuYWdlIiwib3JnOnZpZXciLCJvcmc6bWFuYWdlIiwiZHJhZnRzOnZpZXciLCJkcmFmdHM6ZWRpdCIsImNoaWxkOnZpZXciLCJjaGlsZDpjcmVhdGUiLCJjaGlsZDptYW5hZ2UiLCJwcm9kdWN0OnZpZXciLCJwcm9kdWN0OnN0YWdlIiwicHJvZHVjdDptYW5hZ2UiLCJhcHByb3ZhbDp2aWV3IiwiYXBwcm92YWw6bWFuYWdlIiwiYXBpLWFuYWx5dGljczp2aWV3IiwiYXBpLWFuYWx5dGljczptYW5hZ2UiLCJjb25zdW1lci1vcmc6dmlldyIsImNvbnN1bWVyLW9yZzptYW5hZ2UiLCJhcHA6dmlldzphbGwiLCJhcHA6bWFuYWdlOmFsbCIsIm15OnZpZXciLCJteTptYW5hZ2UiLCJ3ZWJob29rOnZpZXciXX0.B1v1OVJZgDCUyEqVmcXq7ZfBCY5latU6cuG5XtUElk0'
HTTP/1.1 200 OK
Date: Thu, 25 Jul 2019 12:23:41 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 1550
Connection: keep-alive
Vary: Accept-Encoding
X-Request-ID: 8b61cf792411e9df57af30f8516ca208
ETag: W/"60e-UUd6LPBb96XTxLWhkRtOKmcvTQc"
Vary: Accept-Encoding
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, PUT, POST, DELETE, PATCH, OPTIONS
Access-Control-Allow-Headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization
Strict-Transport-Security: max-age=31536000; includeSubDomains
{
"total_results": 1,
"results": [
{
"type": "credential",
"api_version": "2.0.0",
"id": "8fd3715d-ea3d-435e-9f2c-29c91ed88f8b",
"name": "credential-for-app02",
"title": "Credential for App02",
"summary": "Credential for App02",
"client_id": "26401dccd7bad4aa55e8b772937c49d9",
"client_secret_hashed": "VlaRlj+BMfX7jRO5s+TZJF6kLXL5DaEkWFxPBVqqDYc=",
"created_at": "2019-07-25T12:16:58.303Z",
"updated_at": "2019-07-25T12:16:58.303Z",
"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/cd4f4dd5-65d3-4c0b-9f6b-c44bd520a1d1",
"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/cd4f4dd5-65d3-4c0b-9f6b-c44bd520a1d1/credentials/8fd3715d-ea3d-435e-9f2c-29c91ed88f8b"
}
]
}
※ クライアント・シークレットはハッシュ化されるため実際の値はアプリケーション作成時しかわかりません。
クレデンシャルの変更を実行します。
リクエスト・ボディーにJSON形式でクライアントID/クライアント・シークレットを指定します。
$ curl -i -k --tlsv1.2 -X PATCH 'https://api-manager-ui.mgmt01.api.local/api/apps/org01/openapi/dev01/app02/credentials/credential-for-app02' -d '{"client_id": "client-id-for-app02", "client_secret": "client-secret-for-app02"}' -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiJjMjM1YTI3NC0xMTdiLTRhOGUtOWNkNy05ZjJkN2ZkMDFlZmQiLCJuYW1lc3BhY2UiOiI1MjMzOTRiMC1iM2YzLTRiY2EtYjRmNy00NTYyZTIwMmNjMzc6ZDZkOTU3MWItNjRhNi00OTZlLTk2NTgtMTJjYjI1NjFmODVmOjkyODRjMzE5LWM3YzQtNDQ0Ny05YTM2LTA3NzBmMjI0YzMyNyIsImF1ZCI6Ii9hcGkvY2xvdWQvcmVnaXN0cmF0aW9ucy8yNjJhNjUzMi1mYzhiLTRmYTgtYTk0Yi1iZjg4MzRmMDE3YzciLCJzdWIiOiIvYXBpL3VzZXItcmVnaXN0cmllcy81MjMzOTRiMC1iM2YzLTRiY2EtYjRmNy00NTYyZTIwMmNjMzcvZDZkOTU3MWItNjRhNi00OTZlLTk2NTgtMTJjYjI1NjFmODVmL3VzZXJzLzkyODRjMzE5LWM3YzQtNDQ0Ny05YTM2LTA3NzBmMjI0YzMyNyIsImlzcyI6IklCTSBBUEkgQ29ubmVjdCIsImV4cCI6MTU2NDA4NTY2NSwiaWF0IjoxNTY0MDU2ODY1LCJncmFudF90eXBlIjoicGFzc3dvcmQiLCJ1c2VyX3JlZ2lzdHJ5X3VybCI6Ii9hcGkvdXNlci1yZWdpc3RyaWVzLzUyMzM5NGIwLWIzZjMtNGJjYS1iNGY3LTQ1NjJlMjAyY2MzNy9kNmQ5NTcxYi02NGE2LTQ5NmUtOTY1OC0xMmNiMjU2MWY4NWYiLCJyZWFsbSI6InByb3ZpZGVyL2RlZmF1bHQtaWRwLTIiLCJ1c2VybmFtZSI6ImFwaW0tYWRtaW4iLCJpZF90b2tlbiI6ImV5SmhiR2NpT2lKSVV6STFOaUlzSW5SNWNDSTZJa3BYVkNKOS5leUptYVhKemRGOXVZVzFsSWpvaVlYQnBiUzFoWkcxcGJpMW1hWEp6ZENJc0lteGhjM1JmYm1GdFpTSTZJbUZ3YVcwdFlXUnRhVzR0YkdGemRDSXNJblZ6WlhKZmFXUWlPaUk1WlRjMFptWTNaUzFtTmpCbExUUTFZVE10WWpZek15MWpZall4WmpreFltUmxNalVpTENKMWMyVnlibUZ0WlNJNkltRndhVzB0WVdSdGFXNGlMQ0pwWVhRaU9qRTFOalF3TlRZNE5qVjkuTkNZdlJENVViTWdnUVhobDUyTEhjV0hIOS1IYThhVF82cm1ZOEVsa1pwOCIsInNjb3BlcyI6WyJjbG91ZDp2aWV3IiwiY2xvdWQ6bWFuYWdlIiwicHJvdmlkZXItb3JnOnZpZXciLCJwcm92aWRlci1vcmc6bWFuYWdlIiwib3JnOnZpZXciLCJvcmc6bWFuYWdlIiwiZHJhZnRzOnZpZXciLCJkcmFmdHM6ZWRpdCIsImNoaWxkOnZpZXciLCJjaGlsZDpjcmVhdGUiLCJjaGlsZDptYW5hZ2UiLCJwcm9kdWN0OnZpZXciLCJwcm9kdWN0OnN0YWdlIiwicHJvZHVjdDptYW5hZ2UiLCJhcHByb3ZhbDp2aWV3IiwiYXBwcm92YWw6bWFuYWdlIiwiYXBpLWFuYWx5dGljczp2aWV3IiwiYXBpLWFuYWx5dGljczptYW5hZ2UiLCJjb25zdW1lci1vcmc6dmlldyIsImNvbnN1bWVyLW9yZzptYW5hZ2UiLCJhcHA6dmlldzphbGwiLCJhcHA6bWFuYWdlOmFsbCIsIm15OnZpZXciLCJteTptYW5hZ2UiLCJ3ZWJob29rOnZpZXciXX0.B1v1OVJZgDCUyEqVmcXq7ZfBCY5latU6cuG5XtUElk0'
HTTP/1.1 200 OK
Date: Thu, 25 Jul 2019 12:29:44 GMT
Content-Type: application/json; charset=utf-8
Content-Length: 1350
Connection: keep-alive
Vary: Accept-Encoding
X-Request-ID: da40eb17931f834d32089f2576d1d671
ETag: W/"546-ZF7PaQFfiQ0x1Dq4JYA7NX7rGtY"
Vary: Accept-Encoding
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, PUT, POST, DELETE, PATCH, OPTIONS
Access-Control-Allow-Headers: DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization
Strict-Transport-Security: max-age=31536000; includeSubDomains
{
"type": "credential",
"api_version": "2.0.0",
"id": "8fd3715d-ea3d-435e-9f2c-29c91ed88f8b",
"name": "credential-for-app02",
"title": "Credential for App02",
"summary": "Credential for App02",
"client_id": "client-id-for-app02",
"client_secret_hashed": "oRVftA0clKQMxnR4dnO/kkT+PVxQZTANSaCfoWksSVs=",
"created_at": "2019-07-25T12:16:58.303Z",
"updated_at": "2019-07-25T12:29:40.681Z",
"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/cd4f4dd5-65d3-4c0b-9f6b-c44bd520a1d1",
"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/cd4f4dd5-65d3-4c0b-9f6b-c44bd520a1d1/credentials/8fd3715d-ea3d-435e-9f2c-29c91ed88f8b"
}
クライアントIDとクライアント・シークレットを変更することができました。