本文介紹如何在應用中接入ID Verification- KYC服務。
前提條件
您已開通ID Verification- KYC服務。具體操作,請參見開通ID Verification- KYC服務。
操作步驟
登入RAM存取控制台,擷取AccessKey。具體操作,請參見建立AccessKey。
您可以根據實際情況,使用阿里雲帳號或者RAM使用者進行相關業務的開發和管理。關於如何建立RAM使用者及相關操作,請參見授權RAM使用者訪問服務。
警告阿里雲帳號具有所有雲產品的訪問和控制許可權,一旦泄露將導致極大的安全風險,強烈建議您根據最小許可權原則建立並使用RAM使用者來使用金融級ID Verification服務。
進行API簽名。具體操作,請參見API簽名機制。
根據業務需要,接入目標產品方案。
API簽名機制
對於每一次HTTP或者HTTPS協議請求,我們會根據訪問中的簽名資訊驗證訪問要求者身份。具體由使用AccessKeyID和AccessKeySecret對稱式加密驗證實現。
構造正常化請求字串。通過以上步驟得到了正常化請求字串(CanonicalizedQueryString),其結構遵循請求結構的要求。
參數排序。 將所有公用請求參數按照首字母順序排序。
說明當使用GET方法提交請求時,這些參數就是請求URL中的參數部分,即URL中?之後由&串連的部分。
參數編碼。 使用UTF-8字元集按照RFC3986規則編碼請求參數和參數取值,編碼規則如下。
private static final String ENCODING = "UTF-8"; private static String percentEncode(String value) throws UnsupportedEncodingException { return value != null ? URLEncoder.encode(value, ENCODING).replace("+", "%20").replace("*", "%2A").replace("%7E", "~") : null; }
說明不編碼以下內容:字元A~Z、a~z、0~9以及字元-、_、.、~。
其它字元編碼成%XY的格式,其中XY是字元對應ASCII碼的16進位。樣本:半形雙引號(")對應%22。
擴充的UTF-8字元,編碼成%XY%ZA…的格式。
空格( )編碼成%20,而不是加號(+)。該編碼方式與application/x-www-form-urlencodedMIME格式編碼演算法相似,但又有所不同。如果您使用的是Java標準庫中的java.net.URLEncoder,可以先用標準庫中percentEncode編碼,然後將編碼後的字元中加號(+)替換為%20、星號(*)替換為%2A、%7E替換為波浪號(~),即可得到上述規則描述的編碼字串。
使用等號(=)串連編碼後的請求參數和參數取值。
使用與號(&)串連編碼後的請求參數,注意參數排序與第1步描述一致。
建構簽章字串。
構造待簽名字串StringToSign。您可以同樣使用percentEncode處理上一步構造的正常化請求字串,規則如下。
String ToSign = HTTPMethod + "&" + //HTTPMethod:發送請求的 HTTP 方法,例如 GET。 percentEncode("/") + "&" + //percentEncode("/"):字元(/)UTF-8 編碼得到的值,即 %2F。 percentEncode(CanonicalizedQueryString); //您的正常化請求字串。
按照RFC2104的定義,計算待簽名字串StringToSign的HMAC-SHA1值。樣本中使用的是Java Base64編碼方法。
Signature = Base64( HMAC-SHA1( AccessSecret, UTF-8-Encoding-Of(StringToSign) ) )
說明計算簽名時,RFC2104規定的Key值是您的AccessKey Secret並加上與號(&),其ASCII值為38。更多資訊,請參見建立AccessKey。
添加根據RFC3986規則編碼後的參數Signature到正常化請求字串URL中。