aliyun-oss-react-native

AliyunAuthManager.java 5.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. package com.reactlibrary;
  2. import android.content.Context;
  3. import android.util.Log;
  4. import com.alibaba.sdk.android.oss.ClientConfiguration;
  5. import com.alibaba.sdk.android.oss.OSS;
  6. import com.alibaba.sdk.android.oss.OSSClient;
  7. import com.alibaba.sdk.android.oss.common.OSSConstants;
  8. import com.alibaba.sdk.android.oss.common.auth.OSSCredentialProvider;
  9. import com.alibaba.sdk.android.oss.common.auth.OSSCustomSignerCredentialProvider;
  10. import com.alibaba.sdk.android.oss.common.auth.OSSFederationCredentialProvider;
  11. import com.alibaba.sdk.android.oss.common.auth.OSSPlainTextAKSKCredentialProvider;
  12. import com.alibaba.sdk.android.oss.common.auth.OSSFederationToken;
  13. import com.alibaba.sdk.android.oss.common.auth.OSSStsTokenCredentialProvider;
  14. import com.alibaba.sdk.android.oss.common.utils.IOUtils;
  15. import com.facebook.react.bridge.ReactMethod;
  16. import com.facebook.react.bridge.ReadableMap;
  17. import com.reactlibrary.utils.ConfigUtils;
  18. import org.json.JSONObject;
  19. import java.io.InputStream;
  20. import java.net.HttpURLConnection;
  21. import java.net.URL;
  22. public class AliyunAuthManager {
  23. private OSS mOSS;
  24. private Context mContext;
  25. private AuthListener mAuthListener;
  26. /**
  27. * AliyunAuthManager constructor
  28. * @param context
  29. * @param listener
  30. */
  31. public AliyunAuthManager(Context context, AuthListener listener) {
  32. OSSLogToFileUtils.getInstance().setUseSdCard(false);
  33. mContext = context;
  34. mAuthListener = listener;
  35. }
  36. /**
  37. * inteface AuthListener
  38. */
  39. public interface AuthListener {
  40. void onAuthFinished(OSS oss);
  41. }
  42. /**
  43. * initWithSigner
  44. * @param signature
  45. * @param accessKey
  46. * @param endPoint
  47. * @param configuration
  48. */
  49. public void initWithSigner(final String signature,
  50. final String accessKey,
  51. String endPoint,
  52. ReadableMap configuration) {
  53. OSSCredentialProvider credentialProvider = new OSSCustomSignerCredentialProvider() {
  54. @Override
  55. public String signContent(String content) {
  56. return "OSS " + accessKey + ":" + signature;
  57. }
  58. };
  59. // init conf
  60. ClientConfiguration conf = ConfigUtils.initAuthConfig(configuration);
  61. mOSS = new OSSClient(mContext, endPoint, credentialProvider, conf);
  62. Log.d("AliyunOSS", "OSS initWithSigner ok!");
  63. mAuthListener.onAuthFinished(mOSS);
  64. }
  65. /**
  66. * initWithPlainTextAccessKey
  67. * @param accessKeyId
  68. * @param accessKeySecret
  69. * @param endPoint
  70. * @param configuration
  71. */
  72. public void initWithPlainTextAccessKey(String accessKeyId,
  73. String accessKeySecret,
  74. String endPoint,
  75. ReadableMap configuration) {
  76. OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider(accessKeyId,accessKeySecret);
  77. // init conf
  78. ClientConfiguration conf = ConfigUtils.initAuthConfig(configuration);
  79. mOSS = new OSSClient(mContext, endPoint, credentialProvider, conf);
  80. Log.d("AliyunOSS", "OSS initWithKey ok!");
  81. mAuthListener.onAuthFinished(mOSS);
  82. }
  83. /**
  84. * initWithPlainTextAccessKey
  85. * @param securityToken
  86. * @param accessKeyId
  87. * @param accessKeySecret
  88. * @param endPoint
  89. * @param configuration
  90. */
  91. public void initWithSecurityToken(String securityToken,
  92. String accessKeyId,
  93. String accessKeySecret,
  94. String endPoint,
  95. ReadableMap configuration) {
  96. OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken);
  97. // init conf
  98. ClientConfiguration conf = ConfigUtils.initAuthConfig(configuration);
  99. mOSS = new OSSClient(mContext, endPoint, credentialProvider, conf);
  100. Log.d("AliyunOSS", "OSS initWithKey ok!");
  101. mAuthListener.onAuthFinished(mOSS);
  102. }
  103. /**
  104. * initWithServerSTS
  105. * @param server
  106. * @param endPoint
  107. * @param configuration
  108. */
  109. public void initWithServerSTS(final String server,
  110. String endPoint,
  111. ReadableMap configuration) {
  112. OSSCredentialProvider credentialProvider = new OSSFederationCredentialProvider() {
  113. @Override
  114. public OSSFederationToken getFederationToken() {
  115. try {
  116. URL stsUrl = new URL(server);
  117. HttpURLConnection conn = (HttpURLConnection) stsUrl.openConnection();
  118. InputStream input = conn.getInputStream();
  119. String jsonText = IOUtils.readStreamAsString(input, OSSConstants.DEFAULT_CHARSET_NAME);
  120. JSONObject jsonObjs = new JSONObject(jsonText);
  121. String ak = jsonObjs.getString("AccessKeyId");
  122. String sk = jsonObjs.getString("AccessKeySecret");
  123. String token = jsonObjs.getString("SecurityToken");
  124. String expiration = jsonObjs.getString("Expiration");
  125. return new OSSFederationToken(ak, sk, token, expiration);
  126. } catch (Exception e) {
  127. e.printStackTrace();
  128. }
  129. return null;
  130. }
  131. };
  132. // init conf
  133. ClientConfiguration conf = ConfigUtils.initAuthConfig(configuration);
  134. mOSS = new OSSClient(mContext, endPoint, credentialProvider, conf);
  135. Log.d("AliyunOSS", "OSS initWithKey ok!");
  136. mAuthListener.onAuthFinished(mOSS);
  137. }
  138. }