aliyun-oss-react-native

AliyunAuthManager.java 6.5KB

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