This is an automated email from the ASF dual-hosted git repository.

dbarnes pushed a commit to branch support/1.14
in repository https://gitbox.apache.org/repos/asf/geode.git


The following commit(s) were added to refs/heads/support/1.14 by this push:
     new 1c4d8f3  GEODE-9628: Documentation fix for setting credentials in 
client (#6928)
1c4d8f3 is described below

commit 1c4d8f3a896657a63668f95a67a3632df1b46be6
Author: Dave Barnes <[email protected]>
AuthorDate: Tue Oct 5 09:22:33 2021 -0700

    GEODE-9628: Documentation fix for setting credentials in client (#6928)
    
    * GEODE-9568 Documentation fix for setting credentials in client (format & 
style)
---
 .../implementing_authentication.html.md.erb        | 221 +++++++++++----------
 1 file changed, 113 insertions(+), 108 deletions(-)

diff --git 
a/geode-docs/managing/security/implementing_authentication.html.md.erb 
b/geode-docs/managing/security/implementing_authentication.html.md.erb
index bf0c596..4429708 100644
--- a/geode-docs/managing/security/implementing_authentication.html.md.erb
+++ b/geode-docs/managing/security/implementing_authentication.html.md.erb
@@ -23,128 +23,133 @@ Authentication lends a measure of security to a cluster
 by verifying the identity of components as they connect to the system.
 All components use the same authentication mechanism.
 
-## How Authentication Works
+## <a id="authentication-how-it-works"></a>How Authentication Works
 
-When a component initiates a connection to the cluster,
-the `SecurityManager.authenticate` method is invoked.
-The component provides its credentials in the form of properties
-as a parameter to the `authenticate` method.
-The credential is presumed to be the two properties
-`security-username` and `security-password`.
+When a component initiates a connection to the cluster, the 
`SecurityManager.authenticate` method is invoked.
+The component provides its credentials in the form of properties as a 
parameter to the `authenticate` method.
+
+The credentials parameter is generated by the `security-client-auth-init` 
class's `getCredentials()` call,
+for example a token, a certificate, or a user/password combination.
 The `authenticate` method is expected to either return an object
 representing a principal or throw an `AuthenticationFailedException`.
 
-A well-designed `authenticate` method will have a set of known user and 
password pairs that can be
-compared to the credential presented or will have a way of obtaining those 
pairs.
+A well-designed `authenticate` method will have a set of known credentials, 
such as user and password pairs, that can be
+compared to the credentials presented or will have a way of obtaining those 
credentials.
 
-## How a Server Sets Its Credential
+## <a id="authentication-server-set-creds"></a>How a Server Sets Its 
Credentials
 
-In order to connect with a locator that does authentication,
-a server will need to set its credential, composed of the two properties
+In order to connect with a locator that performs authentication,
+a server must set its credentials, a username and password specified as the 
two properties
 `security-username` and `security-password`.
-Choose one of these two ways to accomplish this:
-
-- Set `security-username` and `security-password` in the server's
-`gfsecurity.properties` file that will be read upon server start up,
-as in the example
-
-    ``` pre
-    security-username=admin
-    security-password=xyz1234
-    ```
-    The user name and password are stored in the clear, so the
-    `gfsecurity.properties` file must be protected by restricting access with
-    file system permissions.
-
-- Implement `AuthInitialize` interface for the server.
-    
-    - Set the property `security-peer-auth-init`,
-    so that an object of the class that implements the `AuthInitialize`
-    interface will be instantiated.
-    Set the property to one of these two values:
-
-        - Set property `security-peer-auth-init` to the fully-qualified
-        class name that implements the `AuthInitialize` interface
-        as in the example
-
-        ``` pre
-        security-peer-auth-init=com.example.security.ServerAuthenticate
-        ```
-        - Set property `security-peer-auth-init` to the fully-qualified
-        method name of a method that instantiates an object of the class
-        that implements the `AuthInitialize` interface
-        as in the example
-
-        ``` pre
-        security-peer-auth-init=com.example.security.ServerAuthenticate.create
-        ```
-
-    - Implement the `getCredentials` method within the `AuthInitialize`
-    interface to acquire values for
-    the `security-username` and `security-password` properties
-    in whatever way it wishes.
-    It might look up values in a database or another external resource.
-
-Gateway senders and receivers communicate as a component of their
-server member.
-Therefore, the credential of the server become those of the gateway
-sender or receiver.
-
-## How a Client Cache Sets Its Credential
-
-In order to connect with a locator or a server that does authentication,
-a client will need to set its credential, composed of the two properties
-`security-username` and `security-password`.
-Choose one of these two ways to accomplish this:
 
-- Set the `security-username` and `security-password` properties for the client
-using the API:
+Choose one of two ways to set the server credentials:
+
+- Add settings to the server properties file, if the credentials comprise a 
simple username/password combination,  or
+- Implement the `AuthInitialize` interface for the server
+
+### <a id="authentication-setserverprops"></a>Add Settings to the Server 
Properties File
+
+Set `security-username` and `security-password` in the server's
+`gfsecurity.properties` file, which is read upon server startup.
+For example:
+
+``` pre
+security-username=admin
+security-password=xyz1234
+```
+The username and password are stored in the clear, so the
+`gfsecurity.properties` file must be protected by restricting access with
+file system permissions.
+
+### <a id="authentication-implementserverinterface"></a>Implement the 
AuthInitialize Interface for the Server
+
+To implement the `AuthInitialize` interface for the server, set the
+`security-peer-auth-init` property so that an object of the class that 
implements the `AuthInitialize`
+interface will be instantiated. There are two ways to do this:
+
+- You can set the `security-peer-auth-init` property to the fully-qualified 
class name that implements
+   the `AuthInitialize` interface as in the example
+
+  ``` pre
+  security-peer-auth-init=com.example.security.ServerAuthenticate
+  ```
+
+- You can set the `security-peer-auth-init` property to the fully-qualified 
method name of a method
+that instantiates an object of the class that implements the `AuthInitialize` 
interface as in the
+example
+
+  ``` pre
+  security-peer-auth-init=com.example.security.ServerAuthenticate.create
+  ```
+
+Implement the `getCredentials` method within the `AuthInitialize` interface to 
acquire values for
+the `security-username` and `security-password` properties in whatever way you 
wish.  For example,
+it might look up values in a database or another external resource.
+
+Gateway senders and receivers communicate as components of their respective 
server members. Therefore, the
+credentials of the server become those of the gateway sender or receiver.
+
+## <a id="authentication-client-set-creds"></a>How a Client Cache Sets its 
Credentials
+
+In order to connect with a locator or a server that performs authentication,
+a client must set its credentials. The credentials parameter is generated by 
the `security-client-auth-init` class's `getCredentials()` call,
+for example a token, a certificate, or a user/password combination.
+
+You must perform two actions to set to set the client credentials:
+
+- Implement the `AuthInitialize` interface for the client
+- Provide `Authinitialize.getCredentials()` with secure access to the client 
credentials
+
+### <a id="authentication-implementclientinterface"></a>Implement the 
AuthInitialize Interface for the Client
+
+To implement the `AuthInitialize` interface for the client, set the 
`security-client-auth-init` property,
+so that an object of the class that implements the `AuthInitialize` interface 
will be instantiated.
+There are two ways to do this:
+
+- You can set the `security-client-auth-init` property to the fully-qualified
+class name that implements the `AuthInitialize` interface as in the example:
+
+  ``` pre
+  security-client-auth-init=com.example.security.ClientAuthInitialize
+  ```
+
+- You can set the `security-client-auth-init` property to the fully-qualified
+name of a static method that instantiates an object of the class
+that implements the `AuthInitialize` interface as in the example
+
+  ``` pre
+  security-client-auth-init=com.example.security.ClientAuthInitialize.create
+  ```
 
-    ``` pre
-    Properties properties = new Properties();
-    properties.setProperty("security-username", "exampleuser23");
-    properties.setProperty("security-password", "xyz1234");
-    ClientCache cache = new ClientCacheFactory(properties).create();
-    ```
+Implement the `getCredentials()` method of the `AuthInitialize` interface for 
the client to acquire values for
+the `security-username` and `security-password` properties in whatever way
+wish. For example, it might look up values in a database or another external 
resource,
+or it might prompt for values.
 
-    Take care that credentials set in this manner are not accessible
-    to observers of the code.
- 
-- Implement `AuthInitialize` interface for the client.
 
-    - Set the property `security-client-auth-init`,
-    so that an object of the class that implements the
-    `AuthInitialize` interface will be instantiated.
-    Set the property to one of these two values:
+### <a id="authentication-provideclientcredaccess"></a>Provide Secure Access 
to Client Credentials
 
-        - Set property `security-client-auth-init` to the fully-qualified
-        class name that implements the `AuthInitialize` interface:
+Set the `security-username` and `security-password` properties for the client 
in a way that can be
+accessed by the `getCredentials` implementation in `AuthInitialize`. This can 
be done via the APIs,
+properties file or other external sources:
 
-        ``` pre
-        security-client-auth-init=com.example.security.ClientAuthInitialize
-        ```
-        - Set property `security-client-auth-init` to the fully-qualified
-        name of a static method that instantiates an object of the class
-        that implements the `AuthInitialize` interface:
+``` pre
+Properties properties = new Properties();
+properties.setProperty("security-username", "exampleuser23");
+properties.setProperty("security-password", "xyz1234");
+ClientCache cache = new ClientCacheFactory(properties).create();
+```
 
-        ``` pre
-        
security-client-auth-init=com.example.security.ClientAuthInitialize.create
-        ```
+For security, take care that credentials set in this manner are not accessible 
to observers of the code.
 
-    - Implement the `getCredentials` method of the `AuthInitialize` interface
-    for the client.
-    The implementation of `getCredentials` acquires values for
-    the `security-username` and `security-password` properties in whatever way
-    it wishes.
-    It might look up values in a database or another external resource,
-    or it might prompt for values.
 
-## How Other Components Set Their Credentials
+## <a id="authentication-component-set-creds"></a>How Other Components Set 
Their Credentials
 
-`gfsh` prompts for the user name and password upon invocation of
-a`gfsh connect` command.
+`gfsh` prompts for the username and password upon invocation of
+a`gfsh connect` command. These username/password combinations will be provided 
as properties
+to the `authenticate` method in the keys of `security-username` and 
`security-password`.
 
-Pulse prompts for the user name and password upon start up.
+Pulse prompts for the username and password upon start up.
 
 Due to the stateless nature of the REST API,
 a web application or other component that speaks to a server or locator
@@ -152,18 +157,18 @@ via the REST API goes through authentication on each 
request.
 The header of the request needs to include attributes that define values for
 `security-username` and `security-password`.
 
-## Implement SecurityManager Interface
+## <a id="authentication-implement-security-mgr"></a>Implement SecurityManager 
Interface
 
 Complete these items to implement authentication done by either a
 locator or a server.
 
 - Decide upon an authentication algorithm.
 The [Authentication Example](authentication_examples.html)
-stores a set of user name and
+stores a set of username and
 password pairs that represent the identities of components
 that will connect to the system.
-This simplistic algorithm returns the user name as a principal
-if the user name and password passed to the `authenticate` method
+This simplistic algorithm returns the username as a principal
+if the username and password passed to the `authenticate` method
 are a match for one of the stored pairs.
 - Define the `security-manager` property.
 See [Enable Security with Property Definitions](enable_security.html)

Reply via email to