Authentication
Описание
Параметры аутентификации запроса.Описание полей
| Поле | Описание |
|---|---|
| WmId | WmId вызывающего. |
| Time | Текущее время. Формат: "yyyy-MM-ddTHH:mm:ss.fffffffK". |
| Nonce | Уникальное число. |
| Mac | Подпись запроса. |
Свойство "Mac" string
Замечания
Подпись формируется использую формат указанный в запросах. Формула: Base64(HMacSha256(key = Sha256(Utf8(password)), bytes = Utf8(plainString))). Поля Time, Nonce ограничивают время действия подписи.Замечания
Вычисление Mac на примере запроса TicketGetInput:private string callerWmId_; private string password_; private string secureId_; private DateTimeOffset time_; private long nonce_; private TicketGetInput GetInput() { var plainString = callerWmId_ + ';' + secureId_ + ';' + time_.ToString(@"yyyy-MM-ddTHH:mm:ss.fffffffK", CultureInfo.InvariantCulture) + ';' + nonce_.ToString(CultureInfo.InvariantCulture); return new TicketGetInput { Authentication = new Authentication { WmId = callerWmId_, Mac = Mac(password_, plainString), Time = time_, Nonce = nonce_, }, SecureId = secureId_, }; } private static string Mac(string password, string plainString) { var encoding = Encoding.UTF8; var passwordBytes = Sha256(encoding.GetBytes(password)); var bytes = HMacSha256(passwordBytes, encoding.GetBytes(plainString)); var mac = Convert.ToBase64String(bytes); return mac; } private static byte[] Sha256(byte[] bytes) { using (var h = new SHA256Managed()) return h.ComputeHash(bytes); } private static byte[] HMacSha256(byte[] key, byte[] bytes) { using (var h = new HMACSHA256(key)) return h.ComputeHash(bytes); }