This is an automated email from the ASF dual-hosted git repository.
dbarnes pushed a commit to branch support/1.15
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/support/1.15 by this push:
new 81ae2db3e5 GEODE-10390: User guide: update authentication expiry
instructions (#7809)
81ae2db3e5 is described below
commit 81ae2db3e54f093cb7d0bbcc6d462d4cf6141873
Author: Dave Barnes <[email protected]>
AuthorDate: Thu Jun 16 16:37:15 2022 -0700
GEODE-10390: User guide: update authentication expiry instructions (#7809)
---
.../implementing_authentication.html.md.erb | 1 +
.../implementing_authentication_expiry.html.md.erb | 22 +++++++++-------------
2 files changed, 10 insertions(+), 13 deletions(-)
diff --git
a/geode-docs/managing/security/implementing_authentication.html.md.erb
b/geode-docs/managing/security/implementing_authentication.html.md.erb
index a79e5d14c6..972ed9d57a 100644
--- a/geode-docs/managing/security/implementing_authentication.html.md.erb
+++ b/geode-docs/managing/security/implementing_authentication.html.md.erb
@@ -36,6 +36,7 @@ which is discussed in detail in the
[authorization](authorization_overview.html)
In case of an `AuthenticationExpiredException` the <%=vars.product_name%>
client code will make one automatic attempt
to re-connect to the member that sent the exception.
+A `SecurityManager` implementation that supports reauthentication using
expiring credentials must also support non-expiring credentials for cluster
members.
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.
diff --git
a/geode-docs/managing/security/implementing_authentication_expiry.html.md.erb
b/geode-docs/managing/security/implementing_authentication_expiry.html.md.erb
index b535f1afac..d6f5131249 100644
---
a/geode-docs/managing/security/implementing_authentication_expiry.html.md.erb
+++
b/geode-docs/managing/security/implementing_authentication_expiry.html.md.erb
@@ -19,15 +19,17 @@ See the License for the specific language governing
permissions and
limitations under the License.
-->
+Authentication expiry is supported only with client connections.
+The use of expirable credentials is most common when used in combination with
token-based authentication and authorization.
Authentication expiry makes it possible for cluster administrators to limit
the life span of client
-and peer connections within the cluster. The use of expirable credentials is
most common when used in
-combination with token based authentication and authorization.
+connections within the cluster.
-Client connections are notified of expiry through
`AuthenticationExpiredException`,
+Client connections are notified of expiry by `AuthenticationExpiredException`,
which is thrown in the implementations of `SecurityManager.authenticate` or
`SecurityManager.authorize`.
-Clients will do one automatic attempt to reconnect. Upon receiving a second
`AuthenticationExpiredException`
-the exception will be propagated up the chain for the user to handle. There
are some differences in
+Upon receiving the AuthenticationExpiredException, clients will make one
automatic attempt to gather new credentials and reconnect
(AuthInitialize.getCredentials()).
+Upon receiving a second `AuthenticationExpiredException`
+the exception is thrown back to the user to handle. There are some differences
in
behavior between older and newer clients.
**Support for Automatic Reconnect**
@@ -56,15 +58,9 @@ The common cycle for authentication and authorization is the
following:
AuthInitialize.getCredentials(...) -> SecurityManager.authenticate(...) ->
SecurityManager.authorize(...)
```
-Where `AuthInitialize.getCredentials()` provides the `security properties` for
`SecurityManager.authenticate()`
-which in turn provides the `principal object` for
`SecurityManager.authorize()`. It's important to
-understand that some time will pass between the
`AuthInitialize.getCredentials()` call and the
-`SecurityManager.authorize()` call. The specific amount of time depends on the
implementation and
-runtime environment details.
-
In case of the use of an external token provider we assume that this token
provider will be asked for
-a token in the `AuthInitialize.getCredentials()` call. A token provider can
return existing tokens for
-a given user so it is recommended that implementers of the `AuthInitialize`
and `SecurityManager`
+a token in the `AuthInitialize.getCredentials()` call. A token provider can
return existing tokens (which are about to expire) for
+a given user, so it is recommended that implementers of the `AuthInitialize`
and `SecurityManager`
interfaces take imminent timeout and token refresh in consideration to avoid
receiving multiple
unintended `AuthenticationExpiredException`s in a row and having to deal with
the propagation of these
exceptions.