日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Android如何配置訪問憑證

更新時(shí)間:
重要

本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業(yè)務(wù)造成影響,請務(wù)必仔細(xì)閱讀。

使用Android SDK發(fā)起OSS請求,您需要配置訪問憑證。阿里云服務(wù)會通過訪問憑證驗(yàn)證您的身份信息和訪問權(quán)限。您可以根據(jù)使用場景對認(rèn)證和授權(quán)的要求,選擇不同的方式提供憑證。

前提條件

在配置訪問憑證前,您需要安裝OSS Android SDK。詳情請參見安裝。

初始化憑證提供者

憑證提供者選型

OSS支持多種方式初始化憑證提供者,您可以根據(jù)使用場景對認(rèn)證和授權(quán)的要求,選擇對應(yīng)的方式初始化憑證提供者。

憑證提供者初始化方式

適用場景

是否需要提供前置的AKSTS Token

底層實(shí)現(xiàn)基于的憑證

憑證有效期

憑證輪轉(zhuǎn)或刷新方式

方式一:使用AK

部署運(yùn)行在安全、穩(wěn)定且不易受外部攻擊的環(huán)境的應(yīng)用程序,無需頻繁輪轉(zhuǎn)憑證就可以長期訪問云服務(wù)

AK

長期

手動(dòng)輪轉(zhuǎn)

方式二:使用STS Token

部署運(yùn)行在不可信的環(huán)境的應(yīng)用程序,希望能控制訪問的有效期、權(quán)限

STS Token

臨時(shí)

自定義

方式三:使用CredentialsURI

需要通過外部系統(tǒng)獲取訪問憑證的應(yīng)用程序

STS Token

臨時(shí)

自動(dòng)刷新

方式一:使用AK

如果您的應(yīng)用程序部署運(yùn)行在安全、穩(wěn)定且不易受外部攻擊的環(huán)境中,需要長期訪問您的OSS,且不能頻繁輪轉(zhuǎn)憑證時(shí),您可以使用阿里云主賬號或RAM用戶的AK(Access Key ID、Access Key Secret)初始化憑證提供者。需要注意的是,該方式需要您手動(dòng)維護(hù)一個(gè)AK,存在安全性風(fēng)險(xiǎn)和維護(hù)復(fù)雜度增加的風(fēng)險(xiǎn)。如何獲取AK,請參見CreateAccessKey - 創(chuàng)建主賬號或RAM用戶訪問密鑰

警告

此方式存在安全問題,移動(dòng)端不推薦使用。阿里云賬號擁有資源的全部權(quán)限,AK一旦泄露,會給系統(tǒng)帶來巨大風(fēng)險(xiǎn),如果需要使用此方式,建議使用最小化授權(quán)的RAM用戶的AK。

代碼示例

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

OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider(ak, sk);

方式二:使用STS Token

如果您的應(yīng)用程序需要臨時(shí)訪問OSS,細(xì)化訪問控制,實(shí)時(shí)調(diào)整權(quán)限,以提高安全性和靈活性,您可以使用通過STS服務(wù)獲取的臨時(shí)身份憑證(Access Key ID、Access Key SecretSecurity Token)初始化憑證提供者。需要注意的是,該方式需要您手動(dòng)維護(hù)一個(gè)STS Token,存在安全性風(fēng)險(xiǎn)和維護(hù)復(fù)雜度增加的風(fēng)險(xiǎn)。如何獲取STS Token,請參見AssumeRole - 獲取扮演角色的臨時(shí)身份憑證。

您可以在代碼中使用AKSecurity Token來引用憑證,以下為使用憑證更新StsToken的示例。

手動(dòng)更新StsToken

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);

自動(dòng)更新StsToken

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

        /* 獲取ak/sk/token/expiration,
         * 示例從應(yīng)用服務(wù)器獲取ak/sk/token/expiration:
         * 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>";

        // 用ak/sk/token/expiration構(gòu)建OSSFederationToken
        OSSFederationToken federationToken = new OSSFederationToken(ak, sk, token, expiration);
        return federationToken;
    }
};

方式三:使用CredentialsURI

如果您的應(yīng)用程序需要通過外部系統(tǒng)或自定義配置獲取和自動(dòng)更新阿里云憑證,從而實(shí)現(xiàn)靈活的憑證管理和無密鑰訪問,您可以使用CredentialsURI初始化憑證提供者。該方式底層實(shí)現(xiàn)是STS Token。Credentials工具通過您提供的URI獲取STS Token,完成憑證客戶端初始化。該方式無需您提供一個(gè)AKSTS Token,消除了手動(dòng)維護(hù)AKSTS Token的風(fēng)險(xiǎn)。

  1. 為了使Credentials工具正確解析和使用STS Token,URI必須遵循以下響應(yīng)協(xié)議:

    • 響應(yīng)狀態(tài)碼:200

    • 響應(yīng)體結(jié)構(gòu):

      {
        "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);
    /* 如果數(shù)據(jù)被加密,可通過如下代碼解密
     * credentialProvider.setDecoder(new OSSAuthCredentialsProvider.AuthDecoder() {
     *     @Override
     *     public String decode(String data) {
     *         String result = null;
     *         // 解密
     *         // result = ...
     *         return result;
     *     }
     * });
     */