Ejemplo n.º 1
0
        /// <summary>
        /// Only to get Api Server public key, by sending JEdixWin Client Name
        /// </summary>
        /// <param name="token"></param>
        /// <returns></returns>
        public static async Task <bool> ExchangePublicKey(CancellationToken token = new CancellationToken())
        {
            using (var clientKeyExchange = new AparteHttpClient(WinClient.ApiServiceUri, HttpHeader.ExchangePublicKeyHeader()))
            {
                var content = JsonSerializer.GetStringContent(new { Name = KeyFile.JEDIX_WIN_CLIENT_NAME });
                using (var response = await clientKeyExchange.PostAsync("api/Account/ExchangePublicKeys", content, token).ConfigureAwait(false))
                {
                    if (response.IsSuccessStatusCode)
                    {
                        var jwsString = await response.Content.ReadAsStringAsync();

                        var jws = JWT.ParseFromBase64Url(jwsString);
                        WinClient.ServerPublicKey = jws[JWTConstant.CLAIM_PUBLIC_KEY];
                    }
                }
            }
            return(ApiClient.WinClient.IsClientAuthorized);
        }