すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:アクセス認証情報の設定 (Android SDK)

最終更新日:Dec 17, 2025

Android SDK を使用して Object Storage Service (OSS) にリクエストを送信するには、アクセス認証情報を設定する必要があります。Alibaba Cloud サービスは、アクセス認証情報を使用して、ID とアクセス権限を検証します。認証と権限付与の要件に応じて、さまざまな方法で認証情報を提供できます。

前提条件

アクセス認証情報を設定する前に、OSS Android SDK をインストールする必要があります。詳細については、「Android SDK のインストール」をご参照ください。

認証情報プロバイダーの初期化

認証情報プロバイダーの選択

OSS は、認証情報プロバイダーを初期化するための複数のメソッドをサポートしています。シナリオの認証および権限付与の要件を満たすメソッドを選択できます。

認証情報プロバイダーの初期化メソッド

シナリオ

事前に設定された AccessKey ペアまたは STS トークンが必要か

基盤となる認証情報タイプ

認証情報の有効期間

認証情報のローテーションまたは更新メソッド

方法 1:AccessKey ペアの使用

安全で安定した環境で実行され、外部からの攻撃に対して脆弱ではなく、頻繁な認証情報のローテーションなしで Alibaba Cloud サービスへの長期的なアクセスが必要なアプリケーション。

はい

AccessKey

長期的

手動ローテーション

方法 2:STS トークンの使用

アクセス認証情報の有効期間と権限を制御する必要がある、信頼できない環境で実行されるアプリケーション。

はい

STS トークン

一時的

カスタム

方法 3:CredentialsURI の使用

外部システムからアクセス認証情報を取得する必要があるアプリケーション。

いいえ

STS トークン

一時的

自動更新

方法 1:AccessKey ペアの使用

アプリケーションが安全で安定した環境で実行され、外部からの攻撃に対して脆弱ではなく、OSS への長期的なアクセスが必要で、頻繁な認証情報のローテーションが許可されていない場合は、Alibaba Cloud アカウントまたは Resource Access Management (RAM) ユーザーの AccessKey ペア (AccessKey ID と AccessKey Secret) を使用して認証情報プロバイダーを初期化できます。ただし、この方法では AccessKey ペアを手動でメンテナンスする必要があり、セキュリティリスクをもたらし、メンテナンスの複雑さが増します。AccessKey ペアの取得方法の詳細については、「CreateAccessKey - Alibaba Cloud アカウントまたは RAM ユーザーの AccessKey ペアの作成」をご参照ください。

警告

この方法にはセキュリティリスクがあり、モバイルクライアントには推奨されません。Alibaba Cloud アカウントは、そのすべてのリソースに対する完全な権限を持っています。Alibaba Cloud アカウントの AccessKey ペアが漏洩すると、システムは高いセキュリティリスクにさらされます。この方法を使用する必要がある場合は、必要最小限の権限を持つ RAM ユーザーの AccessKey ペアを使用してください。

サンプルコード

String ak = "<ALIBABA_CLOUD_ACCESS_KEY_ID>";
String sk = "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>";

OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider(ak, sk);

方法 2:STS トークンの使用

アプリケーションが OSS への一時的なアクセス、きめ細かなアクセスの制御、およびセキュリティと柔軟性を向上させるためのリアルタイムの権限調整を必要とする場合は、Security Token Service (STS) から取得した一時的な認証情報を使用して認証情報プロバイダーを初期化できます。これらの認証情報には、AccessKey ID、AccessKey Secret、および STS トークンが含まれます。ただし、この方法では STS トークンを手動でメンテナンスする必要があり、セキュリティリスクをもたらし、メンテナンスの複雑さが増します。STS トークンの取得方法の詳細については、「AssumeRole - RAM ロールの一時的な認証情報の取得」をご参照ください。

コード内の AccessKey ペアと STS トークンを使用して、認証情報を参照できます。次の例では、STS トークンを更新する方法を示します。

STS トークンの手動更新

String ak = "<ALIBABA_CLOUD_ACCESS_KEY_ID>";
String sk = "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>";
String token = "<ALIBABA_CLOUD_SECURITY_TOKEN>";

OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(ak, sk, token);

STS トークンの自動更新

OSSCredentialProvider credentialProvider = new OSSFederationCredentialProvider() {
    @Override
    public OSSFederationToken getFederationToken() {

        /* AccessKey ID、AccessKey Secret、STS トークン、および有効期限を取得します。
         * 次の例では、アプリケーションサーバーから認証情報を取得する方法を示します:
         * URL stsUrl = new URL("<server_url>");
         * HttpURLConnection conn = (HttpURLConnection) stsUrl.openConnection();
         * InputStream input = conn.getInputStream();
         * String jsonText = IOUtils.readStreamAsString(input, OSSConstants.DEFAULT_CHARSET_NAME);
         * JSONObject jsonObjs = new JSONObject(jsonText);
         * String ak = jsonObjs.getString("AccessKeyId");
         * String sk = jsonObjs.getString("AccessKeySecret");
         * String token = jsonObjs.getString("SecurityToken");
         * String expiration = jsonObjs.getString("Expiration");
         */
        String ak = "<ALIBABA_CLOUD_ACCESS_KEY_ID>";
        String sk = "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>";
        String token = "<ALIBABA_CLOUD_SECURITY_TOKEN>";
        String expiration = "<ALIBABA_CLOUD_EXPIRATION>";

        // AccessKey ID、AccessKey Secret、STS トークン、および有効期限から OSSFederationToken オブジェクトを構築します。
        OSSFederationToken federationToken = new OSSFederationToken(ak, sk, token, expiration);
        return federationToken;
    }
};

方法 3:CredentialsURI の使用

アプリケーションが外部システムまたはカスタム構成を通じて Alibaba Cloud の認証情報を取得および自動更新し、柔軟な認証情報管理とキーレスアクセスを実現する必要がある場合は、CredentialsURI を使用して認証情報プロバイダーを初期化できます。このメソッドの基盤となる実装では、STS トークンが使用されます。Credentials ツールは、指定された URI を使用して STS トークンを取得し、クライアントを初期化します。この方法では、AccessKey ペアや STS トークンを提供する必要がないため、手動メンテナンスのリスクが排除されます。

  1. Credentials ツールが STS トークンを正しく解析して使用できるようにするには、URI が次の応答プロトコルに準拠している必要があります:

    • 応答ステータスコード:200

    • 応答本文の構造:

      {
        "StatusCode":200,
        "AccessKeyId":"AccessKeyId",
        "AccessKeySecret":"AccessKeySecret",
        "Expiration":"2015-11-03T09:52:59Z",
        "SecurityToken":"SecurityToken"
      }                    
  2. URI 認証情報をアクセス認証情報として設定します。

    String authServerUrl = "<remote_url>";
    OSSAuthCredentialsProvider credentialProvider = new OSSAuthCredentialsProvider(authServerUrl);
    /* データが暗号化されている場合は、次のコードを使用して復号化できます。
     * credentialProvider.setDecoder(new OSSAuthCredentialsProvider.AuthDecoder() {
     *     @Override
     *     public String decode(String data) {
     *         String result = null;
     *         // データを復号化します。
     *         // result = ...
     *         return result;
     *     }
     * });
     */