【VMware Cloud Director】APIトークンについて

VMware Cloud Director 10.3.1 以降では、API アクセス トークンを生成して発行することができます。

2 要素認証の使用など、セキュリティに関する独自のベスト プラクティスを使用して認証しているときに、API アクセス トークンを使用すると、VMware Cloud Director に対して自動化を構築する際のアクセス権を付与することができます。

API アクセス トークンの生成

トークンには記事中の2種類(refresh_token、Generated_API_Token)が存在する

refresh_tokenを用いてGenerated_API_Tokenを生成し、それを用いて各種VCD操作を実施する。

refresh_tokenの生成はGUIでも実行可能

以下ではAPIを用いたrefresh_tokenの生成から、VCD操作までの方法を記載

X-VMWARE-VCLOUD-ACCESS-TOKENはxxxとして省略

1.refresh_tokenの生成

# curl -k --header "Content-Type: application/json" --header "Accept: application/*;version=37.0" --header "Authorization: Bearer xxx" --request POST https://172.16.21.20/oauth/provider/register -d '{"client_name":"token"}'

レスポンス
{"client_name":"token1","client_id":"ec020cff-fe78-4f5b-97dc-f2d529bc0a33","grant_types":["urn:ietf:params:oauth:grant-type:jwt-bearer","refresh_token"],"token_endpoint_auth_method":"none","client_uri":null,"software_id":null,"software_version":null,"scope":null}
# curl -k --header "Content-Type: application/x-www-form-urlencoded" --header "Accept: application/*;version=37.0" --header "Authorization: Bearer xxx" --request POST https://172.16.21.20/oauth/provider/token -d "grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Ajwt-bearer&client_id=ec020cff-fe78-4f5b-97dc-f2d529bc0a33&assertion=xxx"

レスポンス
{"access_token":"eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbjAxIiwiaXNzIjoiYTkzYzlkYjktNzQ3MS0zMTkyLThkMDktYThmN2VlZGE4NWY5QDMwOTA0ZjIxLTBmMWItNDhkZC05ZTZkLWZmZjA1ZDc1M2E2NiIsInJlZnJlc2hfdG9rZW5faWQiOiJlYzAyMGNmZi1mZTc4LTRmNWItOTdkYy1mMmQ1MjliYzBhMzMiLCJleHAiOjE2OTI4NTQ2NTIsInZlcnNpb24iOiJ2Y2xvdWRfMS4wIiwianRpIjoiZWJmMmM4Mjk0ZGE0NDY4ZTg4YTk2MThkZTU3MDU2MzAifQ.i6xCgEyVqwx-1n72uht4fzmOwaqdxuH3_wRyWQrWDN1ObyMH93Dut3OgXI_wK3TjXR3-r-fE7kksKEIGy6vThEVcbORpyamURnIApNCkSC1AQE4s2WZ5mY9ktiNmN-m9l9VfYaMZ0dRMylRClbs3hVhEffjBmlxmwt36u9_YdwdwIo0bty7asfM5V8sMooA34FPfMRsdeRO8gptXe9jK3iPmkCvhZk9bBPxTIxC9un2Argliy3fYYUuhmc7bE51TSB0cHK4XcLRxOEuRI1EIoX_CNGTdaOhEfb_YNddKqyW2tJ7Bv0CpPI2zoPEpuMVFfrhk6u1HZ4nZCqQbzi7A2Q","token_type":"Bearer","expires_in":86400,"refresh_token":"vZw42872pfWUaRAlqgXyJBdNPXT1pdmF"}

※assertionにもX-VMWARE-VCLOUD-ACCESS-TOKENを設定。またgrant_typeは”:”を"%3A"へ置き換えてセット

refresh_tokenが生成された

refresh_token":"vZw42872pfWUaRAlqgXyJBdNPXT1pdmF

2.refresh_tokenを用いたアクセス トークンの生成

# curl -k --header "Accept: application/*;version=37.0" --header "Content-Type: application/x-www-form-urlencoded" --request POST https://172.16.21.20/oauth/provider/token -d "grant_type=refresh_token&refresh_token=vZw42872pfWUaRAlqgXyJBdNPXT1pdmF"

レスポンス
{"access_token":"eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbjAxIiwiaXNzIjoiYTkzYzlkYjktNzQ3MS0zMTkyLThkMDktYThmN2VlZGE4NWY5QDMwOTA0ZjIxLTBmMWItNDhkZC05ZTZkLWZmZjA1ZDc1M2E2NiIsInJlZnJlc2hfdG9r
ZW5faWQiOiJlYzAyMGNmZi1mZTc4LTRmNWItOTdkYy1mMmQ1MjliYzBhMzMiLCJleHAiOjE2OTI4NTQ4MzAsInZlcnNpb24iOiJ2Y2xvdWRfMS4wIiwianRpIjoiMTVmOGVjMDFmYWZjNDAwYjgxZTEyM2E1MmVlODVmOGMifQ.eVI6ywFdxMHed2s7RBgQCbr9sFV2Cs1b2NU88rScnHptUC91LaHlqYZ24fbCrm02IwhvnDdnuwd11jVSTUBRf03BZ09LH_XlIyzPwivemep1mKlUBrhTMaa7Q8yBnOnoo7HTrEdkydQbN-n86Zkxxcp7MUWhz9hcB_REIC9Vm3wKOUtrKY90B9O3v5ZHEZHX58LfWjh2p74PQY_-XiDJPxpHPxnontlyhPAPdqB9nVMJUEvhLk_2bItIGGzmh6lQMp_l7zyBzrCwKU_5SBhDBl3SLSucbAP1ovpKwSC2VOUdc9QJsdPUGE7BDk7yD-9RUMLNdC1Q8Fqw3GPzy1yZng","token_type":"Bearer","expires_in":86400,"refresh_token":"vZw42872pfWUaRAlqgXyJBdNPXT1pdmF"}

3.アクセス トークンを用いたAPIアクセス

# curl -k --header "Accept: application/*;version=37.0" --header "Authorization: Bearer eyJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbjAxIiwiaXNzIjoiYTkzYzlkYjktNzQ3MS0zMTkyLThkMDktYThmN2VlZGE4NWY5QDMwOTA0ZjIxLTBmMWItNDhkZC05ZTZkLWZmZjA1ZDc1M2E2NiIsInJlZnJlc2hfdG9rZW5faWQiOiJlYzAyMGNmZi1mZTc4LTRmNWItOTdkYy1mMmQ1MjliYzBhMzMiLCJleHAiOjE2OTI4NTQ4MzAsInZlcnNpb24iOiJ2Y2xvdWRfMS4wIiwianRpIjoiMTVmOGVjMDFmYWZjNDAwYjgxZTEyM2E1MmVlODVmOGMifQ.eVI6ywFdxMHed2s7RBgQCbr9sFV2Cs1b2NU88rScnHptUC91LaHlqYZ24fbCrm02IwhvnDdnuwd11jVSTUBRf03BZ09LH_XlIyzPwivemep1mKlUBrhTMaa7Q8yBnOnoo7HTrEdkydQbN-n86Zkxxcp7MUWhz9hcB_REIC9Vm3wKOUtrKY90B9O3v5ZHEZHX58LfWjh2p74PQY_-XiDJPxpHPxnontlyhPAPdqB9nVMJUEvhLk_2bItIGGzmh6lQMp_l7zyBzrCwKU_5SBhDBl3SLSucbAP1ovpKwSC2VOUdc9QJsdPUGE7BDk7yD-9RUMLNdC1Q8Fqw3GPzy1yZng"  --request GET https://172.16.21.20/api/org

レスポンス
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<OrgList xmlns="http://www.vmware.com/vcloud/v1.5" xmlns:vmext="http://www.vmware.com/vcloud/extension/v1.5" xmlns:ovf="http://schemas.dmtf.org/ovf/envelope/1" xmlns:vssd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_VirtualSystemSettingData" xmlns:common="http://schemas.dmtf.org/wbem/wscim/1/common" xmlns:rasd="http://schemas.dmtf.org/wbem/wscim/1/cim-schema/2/CIM_ResourceAllocationSettingData" xmlns:vmw="http://www.vmware.com/schema/ovf" xmlns:ovfenv="http://schemas.dmtf.org/ovf/environment/1" xmlns:ns9="http://www.vmware.com/vcloud/versions" href="https://172.16.21.20/api/org/" type="application/vnd.vmware.vcloud.orgList+xml">
    <Org href="https://172.16.21.20/api/org/a93c9db9-7471-3192-8d09-a8f7eeda85f9" type="application/vnd.vmware.vcloud.org+xml" name="System"/>
    <Org href="https://172.16.21.20/api/org/36598838-26b7-4b47-8bc4-abaad7753995" type="application/vnd.vmware.vcloud.org+xml" name="Provider"/>
    <Org href="https://172.16.21.20/api/org/c92fb3a7-97b7-41c8-ae32-9532b1bf11d3" type="application/vnd.vmware.vcloud.org+xml" name="Tenant01"/>
</OrgList>