aliyun-oss-react-native

AliyunAuthManager.java 5.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  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. mContext = context;
  33. mAuthListener = listener;
  34. }
  35. /**
  36. * inteface AuthListener
  37. */
  38. public interface AuthListener {
  39. void onAuthFinished(OSS oss);
  40. }
  41. /**
  42. * initWithSigner
  43. * @param signature
  44. * @param accessKey
  45. * @param endPoint
  46. * @param configuration
  47. */
  48. public void initWithSigner(final String signature,
  49. final String accessKey,
  50. String endPoint,
  51. ReadableMap configuration) {
  52. OSSCredentialProvider credentialProvider = new OSSCustomSignerCredentialProvider() {
  53. @Override
  54. public String signContent(String content) {
  55. return "OSS " + accessKey + ":" + signature;
  56. }
  57. };
  58. // init conf
  59. ClientConfiguration conf = ConfigUtils.initAuthConfig(configuration);
  60. mOSS = new OSSClient(mContext, endPoint, credentialProvider, conf);
  61. Log.d("AliyunOSS", "OSS initWithSigner ok!");
  62. mAuthListener.onAuthFinished(mOSS);
  63. }
  64. /**
  65. * initWithPlainTextAccessKey
  66. * @param accessKeyId
  67. * @param accessKeySecret
  68. * @param endPoint
  69. * @param configuration
  70. */
  71. public void initWithPlainTextAccessKey(String accessKeyId,
  72. String accessKeySecret,
  73. String endPoint,
  74. ReadableMap configuration) {
  75. OSSCredentialProvider credentialProvider = new OSSPlainTextAKSKCredentialProvider(accessKeyId,accessKeySecret);
  76. // init conf
  77. ClientConfiguration conf = ConfigUtils.initAuthConfig(configuration);
  78. mOSS = new OSSClient(mContext, endPoint, credentialProvider, conf);
  79. Log.d("AliyunOSS", "OSS initWithKey ok!");
  80. mAuthListener.onAuthFinished(mOSS);
  81. }
  82. /**
  83. * initWithPlainTextAccessKey
  84. * @param securityToken
  85. * @param accessKeyId
  86. * @param accessKeySecret
  87. * @param endPoint
  88. * @param configuration
  89. */
  90. public void initWithSecurityToken(String securityToken,
  91. String accessKeyId,
  92. String accessKeySecret,
  93. String endPoint,
  94. ReadableMap configuration) {
  95. OSSCredentialProvider credentialProvider = new OSSStsTokenCredentialProvider(accessKeyId, accessKeySecret, securityToken);
  96. // init conf
  97. ClientConfiguration conf = ConfigUtils.initAuthConfig(configuration);
  98. mOSS = new OSSClient(mContext, endPoint, credentialProvider, conf);
  99. Log.d("AliyunOSS", "OSS initWithKey ok!");
  100. mAuthListener.onAuthFinished(mOSS);
  101. }
  102. /**
  103. * initWithServerSTS
  104. * @param server
  105. * @param endPoint
  106. * @param configuration
  107. */
  108. public void initWithServerSTS(final String server,
  109. String endPoint,
  110. ReadableMap configuration) {
  111. OSSCredentialProvider credentialProvider = new OSSFederationCredentialProvider() {
  112. @Override
  113. public OSSFederationToken getFederationToken() {
  114. try {
  115. URL stsUrl = new URL(server);
  116. HttpURLConnection conn = (HttpURLConnection) stsUrl.openConnection();
  117. InputStream input = conn.getInputStream();
  118. String jsonText = IOUtils.readStreamAsString(input, OSSConstants.DEFAULT_CHARSET_NAME);
  119. JSONObject jsonObjs = new JSONObject(jsonText);
  120. String ak = jsonObjs.getString("AccessKeyId");
  121. String sk = jsonObjs.getString("AccessKeySecret");
  122. String token = jsonObjs.getString("SecurityToken");
  123. String expiration = jsonObjs.getString("Expiration");
  124. return new OSSFederationToken(ak, sk, token, expiration);
  125. } catch (Exception e) {
  126. e.printStackTrace();
  127. }
  128. return null;
  129. }
  130. };
  131. // init conf
  132. ClientConfiguration conf = ConfigUtils.initAuthConfig(configuration);
  133. mOSS = new OSSClient(mContext, endPoint, credentialProvider, conf);
  134. Log.d("AliyunOSS", "OSS initWithKey ok!");
  135. mAuthListener.onAuthFinished(mOSS);
  136. }
  137. }