The authentication operator is an
OpenShift ClusterOperator.
It installs and maintains the Authentication Custom Resource in a cluster and can be viewed with:
oc get clusteroperator authentication -o yaml
The Custom Resource Definition
authentications.operator.openshift.io
can be viewed in a cluster with:
$ oc get crd authentications.operator.openshift.io -o yamlThe authentication operator manages the following operands:
- oauth-openshift — the OAuth server deployment in the
openshift-authenticationnamespace. Handles user authentication flows, login templates, and token generation. - oauth-apiserver — the OAuth API server deployment in the
openshift-oauth-apiservernamespace. Serves the OAuth API resources (OAuthAccessTokens,OAuthAuthorizeTokens,OAuthClients).
For each operand, the operator manages the associated Deployments, Services, RBAC, NetworkPolicies, PodDisruptionBudgets, and monitoring resources (PrometheusRules, ServiceMonitor).
For a deeper look at the operator's architecture, see ARCHITECTURE.md.
Many OpenShift ClusterOperators share common build, test, deployment, and update methods. For more information about how to build, deploy, test, update, and develop OpenShift ClusterOperators, see OpenShift ClusterOperator and Operand Developer Document.
To deploy OpenShift with your test cluster-authentication-operator image, see Testing a ClusterOperator/Operand image in a cluster.
For contribution guidelines, including pre-submit checks, dependency management, and testing expectations, see CONTRIBUTING.md.
The most common identity provider for demoing and testing is the HTPasswd IdP.
To set it up, take the following steps:
- Create a new htpasswd file
$ htpasswd -bBc /tmp/htpasswd testuser testpasswd
- (optional) Add more users
$ htpasswd -bB /tmp/htpasswd testuser2 differentpassword
- Create a secret from that htpasswd in the
openshift-confignamespace
oc create secret generic myhtpasswdidp-secret -n openshift-config --from-file=/tmp/htpasswd
- Configure the OAuth server to use the HTPasswd IdP from the secret by editing the spec of the cluster-wide OAuth/cluster object so that it looks like the one in this example:
apiVersion: config.openshift.io/v1
kind: OAuth
metadata:
name: cluster
spec:
identityProviders:
- name: htpassidp
type: HTPasswd
htpasswd:
fileData:
name: myhtpasswdidp-secret
- The operator will now restart the OAuth server deployment and mount the new config
- When the operator is available again (
oc get clusteroperator authentication), you should be able to log in:
oc login -u testuser -p testpasswd
This repository is compatible with the OpenShift Tests Extension (OTE) framework.
make build# Run a specific test suite
./cluster-authentication-operator-tests-ext run-suite openshift/cluster-authentication-operator/operator/parallel
# Run with parallel execution (4 workers)
./cluster-authentication-operator-tests-ext run-suite openshift/cluster-authentication-operator/operator/parallel -c 4
# Run with JUnit output
./cluster-authentication-operator-tests-ext run-suite openshift/cluster-authentication-operator/operator/parallel --junit-path "${ARTIFACT_DIR}/junit.xml"
# Run a specific test
./cluster-authentication-operator-tests-ext run-test "test-name"# List all test suites
./cluster-authentication-operator-tests-ext list suites
# List tests in a suite
./cluster-authentication-operator-tests-ext list tests --suite=openshift/cluster-authentication-operator/operator/parallelFor more information about the OTE framework, see the openshift-tests-extension documentation.