Midway.ServiceClient.Client.AuthenticateWithCertificate C# (CSharp) Method

AuthenticateWithCertificate() public method

Получение токена при авторизации по сертификату
public AuthenticateWithCertificate ( string certHash, string applicationId = null ) : bool
certHash string отпечаток сертификата
applicationId string
return bool
        public bool AuthenticateWithCertificate(string certHash, string applicationId = null)
        {
            var encryptedToken = client.AuthenticateWithCertificate(certHash, applicationId);
            if (encryptedToken == null)
                return false;
            EncryptedToken = encryptedToken;
            var token = Crypto.CryptoApiHelper.Decrypt(Convert.FromBase64String(encryptedToken));
            var tokenId = new Guid(token).ToString();
            TakeToken(tokenId);
            if (!IsAuthorized)
                return false;
            return true;
        }

Usage Example

示例#1
0
        private static void Main(string[] args)
        {
            // публичный адрес подключения к SOAP сервису
            var url = "https://service.synerdocs.ru/exchangeservice.svc";
            // необязательный параметр - идентификатор клиентского приложения,
            // может использоваться при авторизации для различения подключений с разных клиентов
            var appId = new Guid().ToString();
            var login = "******";
            var password = "******";

            var client = new Client(url, false, false, "", "WSHttpsBinding_IExchangeService");

            // авторизуемся по логину и паролю, получаем токен
            if (client.Authenticate(login, password, appId))
            {
                Console.WriteLine("Успешная авторизация по логину и паролю, получен токен:");
                Console.WriteLine(client.Token);
            }
            else
            {
                Console.WriteLine("Ошибка авторизации, неверный логин или пароль?");
            }

            var filesDir = "../../../../..";
            // путь до файла сертификата БЕЗ закртытого ключа
            var certificatePath = filesDir + "/Certificates/certificate.crt";
            if (!File.Exists(certificatePath))
            {
                Console.WriteLine("Файл сертификата не был найден по пути: \n {0} \n. " +
                                  "Для работы необходимо наличие файла сертификата по указанному пути.\n" +
                                  "Для получения сертификата обратитесь в техническую поддержку", certificatePath);
                Console.ReadLine();
                return;
            }

            // бинарное содержимое сертификата
            var certificateBytes = File.ReadAllBytes(certificatePath);
            // получим сертификат для входа по сертификату БЕЗ возможности подписания, т.к. в certificate при таком способе
            // фактически - это структура данных с отобржаением свойств сертификата
            // ! для создания подписей необходимо получить сертификат из локального хранилища по другому (см. Samples.SendDocument)
            var certificate = new X509Certificate2(certificateBytes);

            // авторизуемся по сертификату
            if (client.AuthenticateWithCertificate(certificate.Thumbprint, appId))
            {
                Console.WriteLine("Успешная авторизация по сертификату, получен токен:");
                Console.WriteLine(client.Token);
            }
            else
            {
                Console.WriteLine("Ошибка авторизации по сертификату");
            }

            Console.WriteLine("Для выхода нажмите enter");
            Console.ReadLine();
        }
All Usage Examples Of Midway.ServiceClient.Client::AuthenticateWithCertificate
Client