The UUC (Unused Client Cleanup) is a facility/tool for removing clients that have either never been accessed or have not been access according to various criteria. There are many cases where automatic removal of clients is desireable. For instance, if OA4MP is configured to be a standalone issuer, it may permit only public clients and auto-approve them on registration. A common case though is that a user registers a client and then never actually uses it. This causes a massive accumulation of clients in the store and no easy way to remove them. It is suggested to enable this at the initial server deployment so that it is not grafted onto an already running OA4MP install. See the onlyCreatedAfter property below.
What can it do? Here are the supported rules that may be configured
In addition to the rules, each may have filtering applied to restrict the clients to which the rule applies. You may also set filtering at the top level for alll rules.
Attribute | Required? | Default | Description |
alarms | N | false | Comma delimited list of times of the form hh:mm:ss. Times are on a 24 hour clock and fractions of seconds are ignored. Monitoring will happen daily at these times. These have right of way over setting an interval. |
blacklist | N | - | A collection of either client_id elements or regex elements that are always deleted when found. See the note below on the syntax. |
debug | N | false | This enabled low-level debugging of the thread used in the UUC. It is intended for tracking down odd server behavior and will be quite verbose, so don't enable this unless you really need to. Note especially that this is entirely independent of the server debug/logging flags. the reason is that you do not want this spitting out messages unless you plan it. |
enabled | N | false | Whether or not to enable this. If disabled, then the thread on the server will not be run. In the CLI you can override this and run the cleanup manually. |
gracePeriod | N | 6 hours | Specifies that time an unused client may be on the system before getting removed. Default is in seconds, but you can specify any standard unit. E.g. If this is 3600 (one hour), then unused clients that were created/modified more than 3600 seconds ago are removed. See A note on time and units |
interval | N | false | The length of time for the thread to sleep between looking for unused clients. You may set this or set the alarms. See A note on time and units |
testModeOn | N | false | A boolean. If set to true, then no actual deletes are done. This overrides all configurations and allows you to toggle printing the results vs. having them executed. In the CLI you can print out the client ids that would have been removed. |
whitelist | N | - | A collection of either client_id elements or regex elements that are never deleted when found. See the note below on the syntax. |
Attribute | Required? | Default | Description |
action | N | delete | Specifies one of delete, acrchive or
test as the arctions for this rule. The results are
|
deleteVersions | N | false | If true, then versions of clients are also removed if they match the criteria of the configuration. |
Attribute | Required? | Default | Description |
archived | N | -- | Options are
|
date | N | -- | Element that refers to a date. |
Note on absolute dates and relative times You may use either. Dates are ISO 8601, e.g., 2024-02-08T20:22:48-05:00 or 2024-02-07T14:12:11Z.
The whitelist and blacklist configurations have the same set of internal tags. One reason for having them in tags is that they may be enclose in CDATA tags if there is an issue with escaping:
Attribute | Required? | Default | Description |
clientID | N | N/A | The client identifier. |
regex | N | N/a | A regular expression. |
Attribute | Required? | Default | Description |
when | N | -- | When to apply the date. Options are
|
type | N | N/a | The type of date. Options are
|
A not uncommon situation is that you have had an OA4MP server running for a long time and have noticed all manner of dead client. Obviously, this facility is what you want, but if the version is older (so before 5.4.3) then the statistics this facility needs are not in place and may cause problems. There are two way to do this.
Upgrade OA4MP, let it run for some specified period (a couple of weeks) in which you are sure that everyone who is using the system would have logged in, then enable the UUC. Probably in test mode initially (look in the logs for the stats).
You could enabled this moving forward, so just set the onlyCreatedAfter value to the current date. No client created before this date will be touched. This would allow you to vet those as needed while ensuring that new clients are monitored and removed if they fit your criteria.
<unusedClientCleanup gracePeriod="6 hr" deleteVersions="false" enabled="true" interval="4 hr"> <whitelist> <clientID>template:/basic</clientID> <clientID>template:/cern</clientID> <regex>^localhost.*</regex> <regex>.*comanage.*</regex> </whitelist> <blacklist> <clientID>dev:/registration/test/42</clientID> <regex>^test.*</regex> </blacklist> </unusedClientCleanup>
In this example, every 4 hours the thread wakes up and checks. If a client has been created and not used within the grace period (6 hours) then it is removed. Versions are ignored. There is a white list consisting of a few specific clients (such as templates for creating other clients), any client id that starts with localhost and any client for comanage. The blacklist removes a specific client (used for testing the registration endpoint only) as well as any client id's that start with test.