/** * Autogenerated by Thrift Compiler (0.9.2) * * DO NOT EDIT UNLESS YOU ARE SURE THAT YOU KNOW WHAT YOU ARE DOING * @generated */ package com.xiaomi.infra.galaxy.sds.thrift; import libthrift091.scheme.IScheme; import libthrift091.scheme.SchemeFactory; import libthrift091.scheme.StandardScheme; import libthrift091.scheme.TupleScheme; import libthrift091.protocol.TTupleProtocol; import libthrift091.protocol.TProtocolException; import libthrift091.EncodingUtils; import libthrift091.TException; import libthrift091.async.AsyncMethodCallback; import libthrift091.server.AbstractNonblockingServer.*; import java.util.List; import java.util.ArrayList; import java.util.Map; import java.util.HashMap; import java.util.EnumMap; import java.util.Set; import java.util.HashSet; import java.util.EnumSet; import java.util.Collections; import java.util.BitSet; import java.nio.ByteBuffer; import java.util.Arrays; import javax.annotation.Generated; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @SuppressWarnings({"cast", "rawtypes", "serial", "unchecked"}) public class AuthenticationConstants { /** * 登录方式是否支持签名 */ public static final Map<UserType,Boolean> SIGNATURE_SUPPORT = new HashMap<UserType,Boolean>(); static { SIGNATURE_SUPPORT.put(com.xiaomi.infra.galaxy.sds.thrift.UserType.DEV_XIAOMI_SSO, false); SIGNATURE_SUPPORT.put(com.xiaomi.infra.galaxy.sds.thrift.UserType.DEV_XIAOMI, true); SIGNATURE_SUPPORT.put(com.xiaomi.infra.galaxy.sds.thrift.UserType.APP_SECRET, true); SIGNATURE_SUPPORT.put(com.xiaomi.infra.galaxy.sds.thrift.UserType.APP_ACCESS_TOKEN, true); SIGNATURE_SUPPORT.put(com.xiaomi.infra.galaxy.sds.thrift.UserType.APP_XIAOMI_SSO, false); SIGNATURE_SUPPORT.put(com.xiaomi.infra.galaxy.sds.thrift.UserType.APP_ANONYMOUS, false); } /** * 内容为TJSONTransport.encode(HttpAuthorizationHeader) */ public static final String HK_AUTHORIZATION = "Authorization"; /** * 签名相关的HTTP头, * 根据分层防御的设计,使用HTTPS也建议进行签名: * http://bitcoin.stackexchange.com/questions/21732/why-api-of-bitcoin-exchanges-use-hmac-over-https-ssl */ public static final String HK_HOST = "Host"; /** * 签名时间,1970/0/0开始的秒数,如客户端与服务器时钟相差较大,会返回CLOCK_TOO_SKEWED错误 */ public static final String HK_TIMESTAMP = "X-Xiaomi-Timestamp"; public static final String HK_CONTENT_MD5 = "X-Xiaomi-Content-MD5"; public static final String MI_DATE = "x-xiaomi-date"; public static final String XIAOMI_HEADER_PREFIX = "x-xiaomi-"; /** * 认证相关的HTTP头 */ public static final String HK_VERSION = "X-Xiaomi-Version"; public static final String HK_USER_TYPE = "X-Xiaomi-User-Type"; public static final String HK_SECRET_KEY_ID = "X-Xiaomi-Secret-Key-Id"; /** * 直接使用secretKey,此项被设置时,signature将被忽略, * 非安全传输应使用签名 */ public static final String HK_SECRET_KEY = "X-Xiaomi-Secret-Key"; /** * 如secretKey未设置,则认为使用签名,此时必须设置, * 被签名的正文格式:header1[\nheader2[\nheader3[...]]], * 如使用默认SUGGESTED_SIGNATURE_HEADERS时为:$host\n$timestamp\n$md5 */ public static final String HK_SIGNATURE = "X-Xiaomi-Signature"; /** * 签名HMAC算法,客户端可定制, * 使用签名时必须设置 */ public static final String HK_MAC_ALGORITHM = "X-Xiaomi-Mac-Algorithm"; /** * 向后兼容,在APP_SECRET的用户身份下成为DevelopUser */ public static final String HK_SUPPORT_ACCOUNT_KEY = "X-Xiaomi-Support-Account-Key"; /** * 建议签名应包含的HTTP头,包含所有签名涉及到的部分,服务端未强制必须使用所列headers, * 定制的client自己负责签名的安全强度,使用签名时必须设置 */ public static final List<String> SUGGESTED_SIGNATURE_HEADERS = new ArrayList<String>(); static { SUGGESTED_SIGNATURE_HEADERS.add("Host"); SUGGESTED_SIGNATURE_HEADERS.add("X-Xiaomi-Timestamp"); SUGGESTED_SIGNATURE_HEADERS.add("X-Xiaomi-Content-MD5"); } }