aliyun-oss-react-native

AliyunAuthManager.java 5.8KB

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