Tüm Ürünler
Search
Belge Merkezi

Object Storage Service:Configure access credentials (Android SDK)

Son Güncelleme:Oct 01, 2026

Android SDK üzerinden OSS'e istek göndermek için erişim kimlik bilgilerini yapılandırın. Kimlik doğrulama ve yetkilendirme gereksinimlerinize bağlı olarak farklı kimlik bilgi sağlayıcılarını seçebilirsiniz.

Ön koşullar

OSS Android SDK yüklüdür. Android SDK'yı yükleyin.

Kimlik bilgi sağlayıcısını başlatma

Bir kimlik bilgi sağlayıcısı seçin

OSS, birden fazla kimlik bilgi sağlayıcısı başlatma yöntemini destekler. Senaryonuzuna uygun bir yöntem seçin.

Önemli

Mobil cihazlar güvenilmeyen ortamlardır. Uzun süreli bir AccessKey çifti veya geçici bir STS belirteci gibi tam erişim sağlayan herhangi bir kimlik bilgisinin istemciye ulaşması durumunda, bu bilgiler tersine mühendislik veya çalışma zamanı hata ayıklama yoluyla ele geçirilebilir. Veri sızıntısı riskini azaltmak için mobil uygulamanız ile OSS arasındaki erişim yolunu aşağıdaki şekilde yapılandırın:

  • Uzun süreli AccessKey çiftlerini uygulama sunucunuzda saklayın. Bunları asla mobil istemciye göndermeyin.

  • Mobil uygulamanın OSS'i çağırmadan önce uygulama sunucunuzdan bir STS geçici kimlik bilgisi veya önceden imzalanmış URL almasını sağlayın.

  • STS geçici kimlik bilgilerini kullanırken, izinleri tek bir kullanıcının nesne yolu ön ekiyle sınırlayan bir RAM ilkesi uygulayın ve kısa bir geçerlilik süresi belirleyin.

  • Kimlik kartları, yüz görüntüleri, ödeme kimlik bilgileri veya tıbbi kayıtlar gibi hassas verilerin yüklenmesi ve indirilmesi için, uygulama sunucunuzun mobil uygulama tarafından kullanılacak bir önceden imzalanmış URL oluşturmasını sağlayın. Mobil uygulamanın kendisi hiçbir zaman bir kimlik bilgisi tutmamalıdır. Önceden imzalanmış URL'ler hakkında ayrıntılı bilgi için bkz. Erişimi yetkilendirme (Android SDK).


Kimlik bilgi sağlayıcısı başlatma yöntemi


Senaryo


Önceden yapılandırılmış AccessKey çifti veya STS belirteci gerektirir


Altta yatan kimlik bilgisi türü


Kimlik bilgisi geçerliliği


Kimlik bilgisi döndürme veya yenileme yöntemi


Yöntem 1: AccessKey çifti kullanma


Dış saldırılara karşı savunmasız olmayan, uzun süreli erişim gerektiren ve sık kimlik bilgisi döndürmesine ihtiyaç duymayan güvenli, kararlı ortamlar.


Evet


AccessKey


Uzun süreli


Manuel döndürme


Yöntem 2: STS belirteci kullanma


Kimlik bilgisi geçerliliğini ve izinlerini kontrol etmeniz gereken güvenilmeyen ortamlar.


Evet


STS belirteci


Geçici


Özel


Yöntem 3: CredentialsURI kullanma


Kimlik bilgilerini harici bir sistemden alan uygulamalar.


Hayır


STS belirteci


Geçici


Otomatik yenileme

Yöntem 1: AccessKey çifti kullanma

Kimlik bilgi sağlayıcısını başlatmak için bir Alibaba Cloud hesabının veya bir RAM kullanıcısının AccessKey çiftini (AccessKey ID ve AccessKey secret) kullanın. Bu yöntem; güvenli, kararlı ortamlar ile sık kimlik bilgisi döndürmesine ihtiyaç duymayan uzun süreli OSS erişimi gerektiren senaryolar için uygundur. Manuel anahtar bakımı güvenlik riskleri oluşturur ve bakım karmaşıklığını artırır. Bir AccessKey çifti elde etmek için CreateAccessKey - Alibaba Cloud hesabı veya RAM kullanıcısı için AccessKey çifti oluşturma işlemini çağırın.

Uyarı

Bu yöntem mobil istemciler için önerilmez. Bir Alibaba Cloud hesabı tüm kaynaklar üzerinde tam izne sahiptir. Bir Alibaba Cloud hesabının AccessKey çiftinin sızması durumunda sisteminiz yüksek güvenlik riskleriyle karşı karşıya kalır. Bu yöntemi kullanmanız gerekirse, minimum gerekli izinlere sahip bir RAM kullanıcısının AccessKey çiftini kullanın.

Örnek kod

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

CredentialProvider credentialProvider = new DefaultCredentialProvider(ak, sk);

Yöntem 2: STS belirteci kullanma

Kimlik bilgi sağlayıcısını başlatmak için STS'den gelen geçici kimlik bilgilerini kullanın. Bu yöntem; geçici OSS erişimi gerektiren ve ince taneli, gerçek zamanlı izin kontrolüne ihtiyaç duyan uygulamalar için uygundur. Kimlik bilgileri bir AccessKey ID, bir AccessKey secret ve bir STS belirteci içerir. Manuel belirteç bakımı güvenlik riskleri oluşturur ve bakım karmaşıklığını artırır. Bir STS belirteci elde etmek için AssumeRole - RAM rolü için geçici kimlik bilgileri alma işlemini çağırın.

Aşağıdaki örnekler, STS belirtecini manuel veya otomatik olarak nasıl güncelleyeceğinizi gösterir.

STS belirtecini manuel olarak güncelleme

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

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

STS belirtecini otomatik olarak güncelleme

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

        /* Obtain the AccessKey ID, AccessKey secret, STS token, and expiration time.
         * The following example shows how to obtain the credentials from an application server:
         * 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>";

        // Construct an OSSFederationToken object from the AccessKey ID, AccessKey secret, STS token, and expiration time.
        OSSFederationToken federationToken = new OSSFederationToken(ak, sk, token, expiration);
        return federationToken;
    }
};

Yöntem 3: CredentialsURI kullanma

Uygulamanızın esnek kimlik bilgisi yönetimi ve anahtarsız erişim için kimlik bilgilerini harici bir sistemden alması gerektiğinde kimlik bilgi sağlayıcısını başlatmak için CredentialsURI kullanın. Altta yatan uygulama bir STS belirteci kullanır. Credentials aracı, sağladığınız URI'yi kullanarak bir STS belirteci alır ve istemciyi başlatır. Bu sayede bir AccessKey çiftini veya STS belirtecini doğrudan sağlamanıza gerek kalmaz.

remote_url (örnek kodda authServerUrl) kendi dağıttığınız bir arka uç hizmeti tarafından sağlanmalıdır. Bu, Alibaba Cloud tarafından sağlanan bir URL değildir. Credentials aracı bu URL'ye bir HTTP GET isteği gönderir ve arka uç hizmetiniz aşağıda açıklanan protokole uygun geçici kimlik bilgilerini döndürmelidir.

  1. URI, aşağıdaki protokole uygun bir yanıt döndürmelidir:

    • Yanıt durum kodu: 200

    • Yanıt gövdesi yapısı:

      {
        "StatusCode":200,
        "AccessKeyId":"AccessKeyId",
        "AccessKeySecret":"AccessKeySecret",
        "Expiration":"2015-11-03T09:52:59Z",
        "SecurityToken":"SecurityToken"
      }                    

      Yanıt gövdesinde, StatusCode arka uç hizmetiniz tarafından 200 olarak ayarlanır. AccessKeyId, AccessKeySecret, Expiration ve SecurityToken alanları, STS'nin AssumeRole işlemi tarafından döndürülen Credentials nesnesinden gelir. Arka uç hizmetiniz bu değerleri almak için AssumeRole işlemini çağırmalı ve ardından bunları yanıt gövdesine dahil etmelidir. AssumeRole hakkında daha fazla bilgi için bkz. OSS'e erişmek için STS geçici erişim kimlik bilgilerini kullanma.

    Örnek arka uç hizmeti (Python):

    from alibabacloud_sts20150401.client import Client as StsClient
    from alibabacloud_sts20150401 import models as sts_models
    import json
    
    def get_credentials():
        request = sts_models.AssumeRoleRequest(
            role_arn='<your_role_arn>',
            role_session_name='<your_session_name>'
        )
        response = sts_client.assume_role(request)
        creds = response.body.credentials
        return json.dumps({
            'StatusCode': 200,
            'AccessKeyId': creds.access_key_id,
            'AccessKeySecret': creds.access_key_secret,
            'Expiration': creds.expiration,
            'SecurityToken': creds.security_token
        })

    Örnek arka uç hizmeti (Node.js):

    const STS = require("@alicloud/sts20150401");
    const stsClient = new STS.default({
      accessKeyId: "<yourAccessKeyId>",
      accessKeySecret: "<yourAccessKeySecret>",
      endpoint: "sts.aliyuncs.com",
    });
    const result = await stsClient.assumeRole("<roleArn>", "<sessionName>");
    const creds = result.body.credentials;
    res.status(200).json({
      StatusCode: 200,
      AccessKeyId: creds.accessKeyId,
      AccessKeySecret: creds.accessKeySecret,
      Expiration: creds.expiration,
      SecurityToken: creds.securityToken,
    });
  2. URI kimlik bilgisini erişim kimlik bilgisi olarak yapılandırın.

    String authServerUrl = "<remote_url>";
    OSSAuthCredentialsProvider credentialProvider = new OSSAuthCredentialsProvider(authServerUrl);
    /* If the data is encrypted, you can use the following code to decrypt it.
     * credentialProvider.setDecoder(new OSSAuthCredentialsProvider.AuthDecoder() {
     *     @Override
     *     public String decode(String data) {
     *         String result = null;
     *         // Decrypt the data.
     *         // result = ...
     *         return result;
     *     }
     * });
     */