UWIT-IAM / uw-idp-custom

Local IdP configuration and etc customizations
0 stars 0 forks source link

Script to manage OIDC client metadata #51

Open mar235av opened 4 weeks ago

mar235av commented 4 weeks ago

Currently, the metadata for all OIDC clients is a single monolithic file in JSON format stored on each IdP server. There are several problems with this situation:

  1. Any (necessarily manual) edit to the file risks corrupting the file which would break all OIDC integrations.
  2. The client secrets are stored in the file, so any review or edit exposes these client secrets.
  3. Combining secret and non-secret information is bad practice and would make containerization difficult.

Desired:

  1. Create new files that hold the metadata for each client in a separate file.
  2. Remove the client secrets from those files and store them in a separate location.
  3. Write a script that combines the secrets and the non-secret metadata into the single file that Shibboleth needs.
  4. The script should perform basic validation on the generated file: (a) require valid JSON; (b) require a list of objects, each of which is a set of key/value pairs; (c) warn on unknown key; (d) require valid data type for each value depending on its key.

The eventual vision is to store at least the metadata in the SPRegistry database (with lack of clarity on how the secrets should be stored), so the design should support migration to that future state.