IDaaS アプリケーショントークンを取得するための Java SDK をご利用いただくにあたり、事前に環境を準備します。
前提条件
JDK 1.8 以降をインストールします。
Maven をインストールします。
Java SDK のインストール
pom.xml ファイルに、以下の依存関係を追加します。
<dependency>
<groupId>com.cloud-idaas</groupId>
<artifactId>idaas-java-core-sdk</artifactId>
<!-- バージョン番号を SDK の最新バージョンに置き換えます -->
<version>0.0.4-beta</version>
</dependency>SDK の最新バージョンは、https://mvnrepository.com/artifact/com.cloud-idaas/idaas-java-core-sdk でご確認ください。
IDaaS は、Function Compute などのシナリオにおいて OpenAPI 認証をサポートしています。Alibaba Cloud の認証情報(AccessKey ペアや STS トークンなど)を使用して M2M クライアントトークンを取得する場合、pom.xml ファイルに Alibaba Cloud 認証拡張プラグインも追加する必要があります。
<dependency>
<groupId>com.cloud-idaas</groupId>
<artifactId>idaas-java-core-alibabacloud-authentication-plugin</artifactId>
<!-- バージョン番号を Alibaba Cloud 認証拡張プラグインの最新バージョンに置き換えます -->
<version>0.0.1-beta</version>
</dependency>Alibaba Cloud 認証拡張プラグインの最新バージョンは、https://mvnrepository.com/artifact/com.cloud-idaas/idaas-java-core-alibabacloud-authentication-plugin でご確認ください。
構成ファイルの指定
構成ファイルのデフォルトパスは ~/.cloud_idaas/client-config.json です。明示的にパスを指定しない場合、このパスから構成ファイルが取得されます。
構成ファイルのパスは、Java システムプロパティまたは環境変数のいずれかを使用して指定できます。
Java システムプロパティ名:
cloud_idaas_config_path環境変数名:
CLOUD_IDAAS_CONFIG_PATH
Java システムプロパティの設定例:
-Dcloud_idaas_config_path=/.../client-config.json
// Spring Boot プロジェクトの場合、構成ファイルを src/main/resources/ ディレクトリに配置し、クラスパスプレフィックスを使用して参照できます。
-Dcloud_idaas_config_path=classpath:client-config.json環境変数の設定例:
CLOUD_IDAAS_CONFIG_PATH=/.../client-config.json構成ファイル
以下に構成ファイルの例を示します。
{
"idaasInstanceId": "idaas_xxx",
"clientId": "app_xxx",
"issuer":"https://xxx/api/v2/iauths_system/oauth2",
"tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
"scope": "api.example.com|read:file",
"openApiEndpoint":"eiam.[region_id].aliyuncs.com",
"developerApiEndpoint":"eiam-developerapi.[region_id].aliyuncs.com",
"authnConfiguration": {
"identityType": "CLIENT",
"authnMethod": "CLIENT_SECRET_POST",
"clientSecretEnvVarName": "IDAAS_CLIENT_SECRET"
},
"httpConfiguration": {
"connectTimeout": 5000,
"readTimeout": 10000
}
}パラメーター
パラメーター | 説明 |
idaasInstanceId | 必須。Cloud Identity and Access Management (IDaaS EIAM) インスタンスの ID です。 |
clientId | 必須。IDaaS アプリケーションの ID です。アプリケーションの詳細ページで確認できます。 |
issuer | 必須。IDaaS EIAM インスタンスの発行者エンドポイントです。IDaaS EIAM インスタンス内の任意の M2M アプリケーションで確認できます。 |
tokenEndpoint | 必須。IDaaS EIAM インスタンスのトークンエンドポイントです。IDaaS EIAM インスタンス内の任意の M2M アプリケーションで確認できます。 |
scope | 必須。対象となる M2M サーバー側アプリケーションのオーディエンス識別子および権限識別子を指定します。形式は IDaaS が管理する RAM ロールの STS トークンまたは認証情報を取得する場合、このパラメーターは組み込みの範囲である |
openApiEndpoint | 任意。OpenAPI 認証に使用される IDaaS OpenAPI エンドポイントです。 サービスエンドポイントは、Cloud Identity and Access Management (IDaaS EIAM) - Alibaba Cloud OpenAPI Developer Portal から取得できます。 IDaaS インスタンスと同じリージョンの Alibaba Cloud VPC 内にアプリケーションがデプロイされている場合、内部 VPC アドレスを使用できます。 |
developerApiEndpoint | 任意。IDaaS の DeveloperAPI エンドポイントです。IDaaS が管理する RAM ロールの STS トークンまたは認証情報を取得する場合に使用します。 サービスエンドポイントは、Cloud Identity and Access Management (IDaaS EIAM) - Alibaba Cloud OpenAPI Developer Portal から取得できます。 IDaaS インスタンスと同じリージョンの Alibaba Cloud VPC 内にアプリケーションがデプロイされている場合、内部 VPC アドレスを使用できます。 |
authnConfiguration |
|
httpConfiguration | HTTP プロトコルの設定です。このオブジェクトには以下のフィールドが含まれます。
|
authnMethod と authnConfiguration のマッピング
authnMethod | 必須フィールド | フィールドの説明 |
CLIENT_SECRET_BASIC | clientSecretEnvVarName | M2M クライアントアプリケーションのクライアントシークレットを格納する環境変数の名前です。 |
CLIENT_SECRET_POST | ||
CLIENT_SECRET_JWT | ||
PRIVATE_KEY_JWT | privateKeyEnvVarName | M2M クライアントアプリケーションの秘密鍵を格納する環境変数の名前です。 |
PKCS7 | applicationFederatedCredentialName | PKCS7 フェデレーテッド認証情報の名前です。事前にフェデレーテッド信頼ソースを作成する必要があります。「フェデレーテッド認証情報の作成」をご参照ください。 |
clientDeployEnvironment | デプロイメント環境です。現在は | |
OIDC | applicationFederatedCredentialName | OIDC フェデレーテッド認証情報の名前です。事前にフェデレーテッド信頼ソースを作成する必要があります。「フェデレーテッド認証情報の作成」をご参照ください。 |
clientDeployEnvironment | デプロイメント環境です。現在は | |
oidcTokenFilePath | 任意。ServiceAccount トークンファイルのパスです。このパラメーターが設定されていない場合、SDK は | |
oidcTokenFilePathEnvVarName | 任意。ServiceAccount トークンファイルのパスを格納する環境変数の名前です。このパラメーターは、 | |
PCA | applicationFederatedCredentialName | PCA フェデレーテッド認証情報の名前です。事前にフェデレーテッド信頼ソースを作成する必要があります。「フェデレーテッド認証情報の作成」をご参照ください。 |
clientX509Certificate | エンドエンティティ証明書です。以下の形式で指定します。 -----BEGIN CERTIFICATE----- xxx -----END CERTIFICATE----- | |
x509CertChains | 中間証明書のリストです。複数の証明書は改行文字で連結します。フォーマットは以下のとおりです。 -----BEGIN CERTIFICATE----- xxx -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- xxx -----END CERTIFICATE----- | |
privateKeyEnvVarName | M2M クライアントアプリケーションの秘密鍵を格納する環境変数の名前です。 | |
PLUGIN | pluginName |
|
構成例
以下に、さまざまな認証方式の構成例を示します。
例:クライアントシークレット認証情報
{
"idaasInstanceId": "idaas_xxx",
"clientId": "app_xxx",
"issuer":"https://xxx/api/v2/iauths_system/oauth2",
"tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
"scope": "api.example.com|read:file",
"authnConfiguration": {
"identityType": "CLIENT",
"authnMethod": "CLIENT_SECRET_BASIC",
"clientSecretEnvVarName": "IDAAS_CLIENT_SECRET"
},
"httpConfiguration": {
"connectTimeout": 5000,
"readTimeout": 10000
}
}例:公開鍵・秘密鍵認証情報
{
"idaasInstanceId": "idaas_xxx",
"clientId": "app_xxx",
"issuer":"https://xxx/api/v2/iauths_system/oauth2",
"tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
"scope": "api.example.com|read:file",
"authnConfiguration": {
"identityType": "CLIENT",
"authnMethod": "PRIVATE_KEY_JWT",
"privateKeyEnvVarName": "ENV_PRIVATE_KEY"
},
"httpConfiguration": {
"connectTimeout": 5000,
"readTimeout": 10000
}
}例:PKCS7 フェデレーテッド認証情報
{
"idaasInstanceId": "idaas_xxx",
"clientId": "app_xxx",
"issuer":"https://xxx/api/v2/iauths_system/oauth2",
"tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
"scope": "api.example.com|read:file",
"authnConfiguration": {
"identityType": "CLIENT",
"authnMethod": "PKCS7",
"applicationFederatedCredentialName": "your_pkcs7_federated_credential_name",
"clientDeployEnvironment": "ALIBABA_CLOUD_ECS"
},
"httpConfiguration": {
"connectTimeout": 5000,
"readTimeout": 10000
}
}例:OIDC フェデレーテッド認証情報
{
"idaasInstanceId": "idaas_xxx",
"clientId": "app_xxx",
"issuer":"https://xxx/api/v2/iauths_system/oauth2",
"tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
"scope": "api.example.com|read:file",
"authnConfiguration": {
"identityType": "CLIENT",
"authnMethod": "OIDC",
"applicationFederatedCredentialName": "your_oidc_federated_credential_name",
"clientDeployEnvironment": "KUBERNETES",
"oidcTokenFilePath": "/var/run/secrets/.../token",
"oidcTokenFilePathEnvVarName": "ENV_OIDC_TOKEN_FILE_PATH"
},
"httpConfiguration": {
"connectTimeout": 5000,
"readTimeout": 10000
}
}例:PCA フェデレーテッド認証情報
{
"idaasInstanceId": "idaas_xxx",
"clientId": "app_xxx",
"issuer":"https://xxx/api/v2/iauths_system/oauth2",
"tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
"scope": "api.example.com|read:file",
"authnConfiguration": {
"identityType": "CLIENT",
"authnMethod": "PCA",
"applicationFederatedCredentialName": "your_pca_federated_credential_name",
"clientX509Certificate": "-----BEGIN CERTIFICATE-----\nxxxxxx\n-----END CERTIFICATE-----",
"x509CertChains": "-----BEGIN CERTIFICATE-----\nxxxxxx\n-----END CERTIFICATE-----\n-----BEGIN CERTIFICATE-----\nxxxxxx\n-----END CERTIFICATE-----",
"privateKeyEnvVarName": "ENV_PRIVATE_KEY"
},
"httpConfiguration": {
"connectTimeout": 5000,
"readTimeout": 10000
}
}例:OpenAPI 認証
{
"idaasInstanceId": "idaas_xxx",
"clientId": "app_xxx",
"issuer":"https://xxx/api/v2/iauths_system/oauth2",
"tokenEndpoint": "https://xxx/api/v2/iauths_system/oauth2/token",
"scope": "api.example.com|read:file",
"openApiEndpoint":"eiam.[region_id].aliyuncs.com",
"authnConfiguration": {
"identityType": "CLIENT",
"authnMethod": "PLUGIN",
"pluginName": "alibabacloudPluginCredentialProvider"
},
"httpConfiguration": {
"connectTimeout": 5000,
"readTimeout": 10000
}
}