UaaAppAuthenticator.java 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. package jnpf.yozo.client;
  2. import jnpf.yozo.utils.SecretSignatureUtils;
  3. import jnpf.util.StringUtil;
  4. import java.util.Arrays;
  5. import java.util.Iterator;
  6. import java.util.Map;
  7. public class UaaAppAuthenticator implements AppAuthenticator {
  8. public static final String OPEN_PARAM_PREFIX = "y_";
  9. public static final String OPEN_PARAM_APPID = "y_appid";
  10. public static final String OPEN_PARAM_SIGN = "y_SIGN";
  11. private String signParamName;
  12. private String paramNamePrefix;
  13. private String appidParamName;
  14. public UaaAppAuthenticator() {
  15. }
  16. public UaaAppAuthenticator(String signParamName, String paramNamePrefix, String appidParamName) {
  17. this.signParamName = signParamName;
  18. this.paramNamePrefix = paramNamePrefix;
  19. this.appidParamName = appidParamName;
  20. }
  21. public String getSignParamName() {
  22. return this.signParamName;
  23. }
  24. public void setSignParamName(String signParamName) {
  25. this.signParamName = signParamName;
  26. }
  27. public String getParamNamePrefix() {
  28. return this.paramNamePrefix;
  29. }
  30. public void setParamNamePrefix(String paramNamePrefix) {
  31. this.paramNamePrefix = paramNamePrefix;
  32. }
  33. public String getAppidParamName() {
  34. return this.appidParamName;
  35. }
  36. public void setAppidParamName(String appidParamName) {
  37. this.appidParamName = appidParamName;
  38. }
  39. public String generateSign(String secret, Map<String, String[]> params) throws Exception {
  40. String fullParamStr = this.uniqSortParams(params);
  41. return SecretSignatureUtils.hmacSHA256(fullParamStr, secret);
  42. }
  43. private String uniqSortParams(Map<String, String[]> params) {
  44. boolean prefix = StringUtil.isNotEmpty(this.paramNamePrefix);
  45. params.remove(this.signParamName);
  46. String[] paramKeys = new String[params.keySet().size()];
  47. int idx = 0;
  48. Iterator var5 = params.keySet().iterator();
  49. while(true) {
  50. String param;
  51. do {
  52. if (!var5.hasNext()) {
  53. Arrays.sort(paramKeys, 0, idx);
  54. StringBuilder builder = new StringBuilder();
  55. String[] var16 = paramKeys;
  56. int var7 = paramKeys.length;
  57. for(int var8 = 0; var8 < var7; ++var8) {
  58. String key = var16[var8];
  59. String[] values = (String[])((String[])params.get(key));
  60. if (values != null && values.length > 0) {
  61. Arrays.sort(values);
  62. String[] var11 = values;
  63. int var12 = values.length;
  64. for(int var13 = 0; var13 < var12; ++var13) {
  65. String val = var11[var13];
  66. builder.append(key).append("=").append(val);
  67. }
  68. } else {
  69. builder.append(key).append("=");
  70. }
  71. }
  72. return builder.toString();
  73. }
  74. param = (String)var5.next();
  75. } while(prefix && param.startsWith(this.paramNamePrefix));
  76. paramKeys[idx++] = param;
  77. }
  78. }
  79. }