/// <summary> /// Authenticate request at Remote Radius Server with user-name and password /// </summary> private async Task <PacketCode> ProcessRadiusAuthentication(PendingRequest request, ClientConfiguration clientConfig) { try { //sending request as is to Remote Radius Server using (var client = new RadiusClient(clientConfig.ServiceClientEndpoint, _logger)) { _logger.Debug($"Sending AccessRequest message with id={{id}} to Remote Radius Server {clientConfig.NpsServerEndpoint}", request.RequestPacket.Identifier); var requestBytes = _packetParser.GetBytes(request.RequestPacket); var response = await client.SendPacketAsync(request.RequestPacket.Identifier, requestBytes, clientConfig.NpsServerEndpoint, TimeSpan.FromSeconds(5)); if (response != null) { var responsePacket = _packetParser.Parse(response, request.RequestPacket.SharedSecret, request.RequestPacket.Authenticator); _logger.Debug("Received {code:l} message with id={id} from Remote Radius Server", responsePacket.Code.ToString(), responsePacket.Identifier); if (responsePacket.Code == PacketCode.AccessAccept) { var userName = request.RequestPacket.UserName; _logger.Information($"User '{{user:l}}' credential and status verified successfully at {clientConfig.NpsServerEndpoint}", userName); } request.ResponsePacket = responsePacket; return(responsePacket.Code); //Code received from remote radius } else { _logger.Warning("Remote Radius Server did not respond on message with id={id}", request.RequestPacket.Identifier); return(PacketCode.AccessReject); //reject by default } } } catch (Exception ex) { _logger.Error(ex, "Radius authentication error"); } return(PacketCode.AccessReject); //reject by default }
/// <summary> /// Authenticate request at Network Policy Server with user-name and password /// </summary> private PacketCode ProcessRadiusAuthentication(PendingRequest request) { try { //sending request as is to Network Policy Server using (var client = new RadiusClient(_configuration.ServiceClientEndpoint, _logger)) { _logger.Debug($"Sending Access-Request message with Id={request.RequestPacket.Identifier} to Network Policy Server {_configuration.NpsServerEndpoint}"); var requestBytes = _packetParser.GetBytes(request.RequestPacket); var response = client.SendPacketAsync(request.RequestPacket.Identifier, requestBytes, _configuration.NpsServerEndpoint, TimeSpan.FromSeconds(5)).Result; if (response != null) { var responsePacket = _packetParser.Parse(response, request.RequestPacket.SharedSecret, request.RequestPacket.Authenticator); _logger.Debug($"Received {responsePacket.Code} message with Id={responsePacket.Identifier} from Network Policy Server"); if (responsePacket.Code == PacketCode.AccessAccept) { var userName = request.RequestPacket.UserName; _logger.Information($"User '{userName}' credential and status verified successfully at {_configuration.NpsServerEndpoint}"); } request.ResponsePacket = responsePacket; return(responsePacket.Code); //Code received from NPS } else { _logger.Warning($"Network Policy Server did not respond on message with Id={request.RequestPacket.Identifier}"); return(PacketCode.AccessReject); //reject by default } } } catch (Exception ex) { _logger.Error(ex, "Radius authentication error"); } return(PacketCode.AccessReject); //reject by default }