thatstatsguy commented on code in PR #177:
URL: https://github.com/apache/arrow-cookbook/pull/177#discussion_r847534142
##########
python/source/flight.rst:
##########
@@ -605,3 +605,138 @@ Or if we use the wrong credentials on login, we also get
an error:
server.shutdown()
.. _(HTTP) basic authentication:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Authentication#basic_authentication_scheme
+
+Authentication with certificates
+=================================
+
+Following on from the previous scenario where traffic to the server is managed
via a username and password,
+HTTPS (more specifically TLS) communication allows an additional layer of
security by encrypting messages
+between the client and server. This is achieved using certificates. During
development, the easiest
+approach is developing with self-signed certificates. At startup, the server
loads the public and private
+key and the client client authenticates itself to the server with the tls root
certificate.
+
+.. note:: In production environments it is recommended to make use of a
certificate signed by a certificate authority.
+
+**Step 1 - Generating the Self Signed Certificate**
+
+Generate a self-signed certificate by using dotnet on `Windows`_, or
`openssl`_ on Linux or MacOS.
+Alternatively, the self-signed certificate from the `Arrow testing data
repository`_ can be used.
+Depending on the file generated, you may need to convert it to a .crt and .key
file as required for the Arrow server.
+One method to achieve this is openssl, please visit this `IBM article`_ for
more info.
+
+
+**Step 2 - Running a server with TLS enabled**
+
+The code below is a minimal working example of an Arrow server used to receive
data with TLS. For a full server example, please visit the Arrow `GitHub
repo`_.
+
+.. testcode::
+
+ import argparse
+ import pyarrow
+ import pyarrow.flight
+
+
+ class FlightServer(pyarrow.flight.FlightServerBase):
+ def __init__(self, host="localhost", location=None,
+ tls_certificates=None, verify_client=False,
+ root_certificates=None, auth_handler=None):
+ super(FlightServer, self).__init__(
+ location, auth_handler, tls_certificates, verify_client,
+ root_certificates)
+ self.flights = {}
+ self.host = host
+ self.tls_certificates = tls_certificates
Review Comment:
Should be used by lines 681-682
`server = FlightServer(host, location, tls_certificates=tls_certificates)`
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]