gitextract_0njidk3i/ ├── .dockerignore ├── .editorconfig ├── .envrc ├── .github/ │ ├── .editorconfig │ ├── CODE_OF_CONDUCT.md │ ├── DCO │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.yaml │ │ ├── config.yml │ │ └── feature_request.yaml │ ├── PULL_REQUEST_TEMPLATE.md │ ├── SECURITY.md │ ├── dependabot.yaml │ ├── release.yml │ └── workflows/ │ ├── analysis-scorecard.yaml │ ├── artifacts.yaml │ ├── checks.yaml │ ├── ci.yaml │ ├── release.yaml │ └── trivydb-cache.yaml ├── .gitignore ├── .gitpod.yml ├── .golangci.yaml ├── ADOPTERS.md ├── Dockerfile ├── LICENSE ├── MAINTAINERS ├── Makefile ├── README.md ├── api/ │ ├── api.pb.go │ ├── api.proto │ ├── api_grpc.pb.go │ └── v2/ │ ├── api.pb.go │ ├── api.proto │ ├── api_grpc.pb.go │ ├── go.mod │ └── go.sum ├── cmd/ │ ├── dex/ │ │ ├── config.go │ │ ├── config_test.go │ │ ├── excluding_handler.go │ │ ├── excluding_handler_test.go │ │ ├── logger.go │ │ ├── main.go │ │ ├── serve.go │ │ ├── serve_test.go │ │ └── version.go │ └── docker-entrypoint/ │ ├── main.go │ └── main_test.go ├── config.dev.yaml ├── config.docker.yaml ├── config.yaml.dist ├── connector/ │ ├── atlassiancrowd/ │ │ ├── atlassiancrowd.go │ │ └── atlassiancrowd_test.go │ ├── authproxy/ │ │ ├── authproxy.go │ │ └── authproxy_test.go │ ├── bitbucketcloud/ │ │ ├── bitbucketcloud.go │ │ └── bitbucketcloud_test.go │ ├── connector.go │ ├── gitea/ │ │ ├── gitea.go │ │ └── gitea_test.go │ ├── github/ │ │ ├── github.go │ │ └── github_test.go │ ├── gitlab/ │ │ ├── gitlab.go │ │ ├── gitlab_test.go │ │ └── testdata/ │ │ ├── rootCA.pem │ │ ├── server.crt │ │ └── server.key │ ├── google/ │ │ ├── google.go │ │ └── google_test.go │ ├── keystone/ │ │ ├── keystone.go │ │ └── keystone_test.go │ ├── ldap/ │ │ ├── gen-certs.sh │ │ ├── ldap.go │ │ ├── ldap_test.go │ │ └── testdata/ │ │ ├── certs/ │ │ │ ├── ca.crt │ │ │ ├── ca.key │ │ │ ├── dhparam.pem │ │ │ ├── ldap.crt │ │ │ └── ldap.key │ │ └── schema.ldif │ ├── linkedin/ │ │ └── linkedin.go │ ├── microsoft/ │ │ ├── microsoft.go │ │ └── microsoft_test.go │ ├── mock/ │ │ └── connectortest.go │ ├── oauth/ │ │ ├── oauth.go │ │ └── oauth_test.go │ ├── oidc/ │ │ ├── oidc.go │ │ └── oidc_test.go │ ├── openshift/ │ │ ├── openshift.go │ │ └── openshift_test.go │ └── saml/ │ ├── saml.go │ ├── saml_test.go │ ├── testdata/ │ │ ├── assertion-signed.tmpl │ │ ├── assertion-signed.xml │ │ ├── bad-ca.crt │ │ ├── bad-ca.key │ │ ├── bad-status.tmpl │ │ ├── bad-status.xml │ │ ├── ca.crt │ │ ├── ca.key │ │ ├── gen.sh │ │ ├── good-resp.tmpl │ │ ├── good-resp.xml │ │ ├── idp-cert.pem │ │ ├── idp-resp-signed-assertion.xml │ │ ├── idp-resp-signed-assertion0.xml │ │ ├── idp-resp-signed-message-and-assertion.xml │ │ ├── idp-resp-signed-message.xml │ │ ├── idp-resp.xml │ │ ├── oam-ca.pem │ │ ├── oam-resp.xml │ │ ├── okta-ca.pem │ │ ├── okta-resp.xml │ │ ├── tampered-resp.xml │ │ ├── two-assertions-first-signed.tmpl │ │ └── two-assertions-first-signed.xml │ └── types.go ├── docker-compose.override.yaml.dist ├── docker-compose.test.yaml ├── docker-compose.yaml ├── docs/ │ ├── README.md │ └── enhancements/ │ ├── README.md │ ├── _title-YYYY-MM-DD-#issue.md │ ├── auth-sessions-2026-02-18.md │ ├── cel-expressions-2026-02-28.md │ ├── id-jag-2026-03-02#4600.md │ └── token-exchange-2023-02-03-#2812.md ├── examples/ │ ├── .gitignore │ ├── config-ad-kubelogin.yaml │ ├── config-dev.yaml │ ├── example-app/ │ │ ├── handlers.go │ │ ├── handlers_device.go │ │ ├── handlers_userinfo.go │ │ ├── main.go │ │ ├── static/ │ │ │ ├── app.js │ │ │ ├── device.js │ │ │ ├── style.css │ │ │ └── token.js │ │ ├── templates/ │ │ │ ├── device.html │ │ │ ├── index.html │ │ │ └── token.html │ │ ├── templates.go │ │ └── utils.go │ ├── go.mod │ ├── go.sum │ ├── grpc-client/ │ │ ├── .gitignore │ │ ├── README.md │ │ ├── cert-destroy │ │ ├── cert-gen │ │ ├── client.go │ │ ├── config.yaml │ │ └── openssl.conf │ ├── k8s/ │ │ ├── .gitignore │ │ ├── dex.yaml │ │ └── gencert.sh │ ├── ldap/ │ │ ├── config-ldap.ldif │ │ ├── config-ldap.yaml │ │ └── docker-compose.yaml │ └── oidc-conformance/ │ ├── config.yaml.tmpl │ └── run.sh ├── flake.nix ├── go.mod ├── go.sum ├── pkg/ │ ├── cel/ │ │ ├── cel.go │ │ ├── cel_test.go │ │ ├── cost.go │ │ ├── cost_test.go │ │ ├── doc.go │ │ ├── library/ │ │ │ ├── doc.go │ │ │ ├── email.go │ │ │ ├── email_test.go │ │ │ ├── groups.go │ │ │ └── groups_test.go │ │ └── types.go │ ├── featureflags/ │ │ ├── doc.go │ │ ├── flag.go │ │ └── set.go │ ├── groups/ │ │ ├── doc.go │ │ ├── groups.go │ │ └── groups_test.go │ └── httpclient/ │ ├── doc.go │ ├── httpclient.go │ ├── httpclient_test.go │ ├── readme.md │ └── testdata/ │ ├── rootCA.key │ ├── rootCA.pem │ ├── rootCA.srl │ ├── server.crt │ ├── server.csr │ ├── server.csr.cnf │ ├── server.key │ └── v3.ext ├── scripts/ │ ├── git-version │ ├── manifests/ │ │ ├── .editorconfig │ │ └── crds/ │ │ ├── authcodes.yaml │ │ ├── authrequests.yaml │ │ ├── connectors.yaml │ │ ├── devicerequests.yaml │ │ ├── devicetokens.yaml │ │ ├── oauth2clients.yaml │ │ ├── offlinesessionses.yaml │ │ ├── passwords.yaml │ │ ├── refreshtokens.yaml │ │ └── signingkeies.yaml │ └── update-gomplate ├── server/ │ ├── api.go │ ├── api_cache_test.go │ ├── api_test.go │ ├── deviceflowhandlers.go │ ├── deviceflowhandlers_test.go │ ├── doc.go │ ├── errors.go │ ├── errors_test.go │ ├── handlers.go │ ├── handlers_approval_test.go │ ├── handlers_test.go │ ├── internal/ │ │ ├── codec.go │ │ ├── types.pb.go │ │ └── types.proto │ ├── introspectionhandler.go │ ├── introspectionhandler_test.go │ ├── mfa.go │ ├── oauth2.go │ ├── oauth2_test.go │ ├── prompt.go │ ├── prompt_test.go │ ├── refreshhandlers.go │ ├── refreshhandlers_test.go │ ├── server.go │ ├── server_test.go │ ├── session.go │ ├── session_test.go │ ├── signer/ │ │ ├── local.go │ │ ├── local_test.go │ │ ├── mock.go │ │ ├── rotation.go │ │ ├── rotation_test.go │ │ ├── signer.go │ │ ├── utils.go │ │ ├── vault.go │ │ ├── vault_integration_test.go │ │ └── vault_test.go │ ├── templates.go │ └── templates_test.go ├── storage/ │ ├── conformance/ │ │ ├── conformance.go │ │ ├── gen_jwks.go │ │ ├── jwks.go │ │ └── transactions.go │ ├── doc.go │ ├── ent/ │ │ ├── client/ │ │ │ ├── authcode.go │ │ │ ├── authrequest.go │ │ │ ├── authsession.go │ │ │ ├── client.go │ │ │ ├── connector.go │ │ │ ├── devicerequest.go │ │ │ ├── devicetoken.go │ │ │ ├── keys.go │ │ │ ├── main.go │ │ │ ├── offlinesession.go │ │ │ ├── password.go │ │ │ ├── refreshtoken.go │ │ │ ├── types.go │ │ │ ├── useridentity.go │ │ │ └── utils.go │ │ ├── db/ │ │ │ ├── authcode/ │ │ │ │ ├── authcode.go │ │ │ │ └── where.go │ │ │ ├── authcode.go │ │ │ ├── authcode_create.go │ │ │ ├── authcode_delete.go │ │ │ ├── authcode_query.go │ │ │ ├── authcode_update.go │ │ │ ├── authrequest/ │ │ │ │ ├── authrequest.go │ │ │ │ └── where.go │ │ │ ├── authrequest.go │ │ │ ├── authrequest_create.go │ │ │ ├── authrequest_delete.go │ │ │ ├── authrequest_query.go │ │ │ ├── authrequest_update.go │ │ │ ├── authsession/ │ │ │ │ ├── authsession.go │ │ │ │ └── where.go │ │ │ ├── authsession.go │ │ │ ├── authsession_create.go │ │ │ ├── authsession_delete.go │ │ │ ├── authsession_query.go │ │ │ ├── authsession_update.go │ │ │ ├── client.go │ │ │ ├── connector/ │ │ │ │ ├── connector.go │ │ │ │ └── where.go │ │ │ ├── connector.go │ │ │ ├── connector_create.go │ │ │ ├── connector_delete.go │ │ │ ├── connector_query.go │ │ │ ├── connector_update.go │ │ │ ├── devicerequest/ │ │ │ │ ├── devicerequest.go │ │ │ │ └── where.go │ │ │ ├── devicerequest.go │ │ │ ├── devicerequest_create.go │ │ │ ├── devicerequest_delete.go │ │ │ ├── devicerequest_query.go │ │ │ ├── devicerequest_update.go │ │ │ ├── devicetoken/ │ │ │ │ ├── devicetoken.go │ │ │ │ └── where.go │ │ │ ├── devicetoken.go │ │ │ ├── devicetoken_create.go │ │ │ ├── devicetoken_delete.go │ │ │ ├── devicetoken_query.go │ │ │ ├── devicetoken_update.go │ │ │ ├── ent.go │ │ │ ├── enttest/ │ │ │ │ └── enttest.go │ │ │ ├── hook/ │ │ │ │ └── hook.go │ │ │ ├── keys/ │ │ │ │ ├── keys.go │ │ │ │ └── where.go │ │ │ ├── keys.go │ │ │ ├── keys_create.go │ │ │ ├── keys_delete.go │ │ │ ├── keys_query.go │ │ │ ├── keys_update.go │ │ │ ├── migrate/ │ │ │ │ ├── migrate.go │ │ │ │ └── schema.go │ │ │ ├── mutation.go │ │ │ ├── oauth2client/ │ │ │ │ ├── oauth2client.go │ │ │ │ └── where.go │ │ │ ├── oauth2client.go │ │ │ ├── oauth2client_create.go │ │ │ ├── oauth2client_delete.go │ │ │ ├── oauth2client_query.go │ │ │ ├── oauth2client_update.go │ │ │ ├── offlinesession/ │ │ │ │ ├── offlinesession.go │ │ │ │ └── where.go │ │ │ ├── offlinesession.go │ │ │ ├── offlinesession_create.go │ │ │ ├── offlinesession_delete.go │ │ │ ├── offlinesession_query.go │ │ │ ├── offlinesession_update.go │ │ │ ├── password/ │ │ │ │ ├── password.go │ │ │ │ └── where.go │ │ │ ├── password.go │ │ │ ├── password_create.go │ │ │ ├── password_delete.go │ │ │ ├── password_query.go │ │ │ ├── password_update.go │ │ │ ├── predicate/ │ │ │ │ └── predicate.go │ │ │ ├── refreshtoken/ │ │ │ │ ├── refreshtoken.go │ │ │ │ └── where.go │ │ │ ├── refreshtoken.go │ │ │ ├── refreshtoken_create.go │ │ │ ├── refreshtoken_delete.go │ │ │ ├── refreshtoken_query.go │ │ │ ├── refreshtoken_update.go │ │ │ ├── runtime/ │ │ │ │ └── runtime.go │ │ │ ├── runtime.go │ │ │ ├── tx.go │ │ │ ├── useridentity/ │ │ │ │ ├── useridentity.go │ │ │ │ └── where.go │ │ │ ├── useridentity.go │ │ │ ├── useridentity_create.go │ │ │ ├── useridentity_delete.go │ │ │ ├── useridentity_query.go │ │ │ └── useridentity_update.go │ │ ├── generate.go │ │ ├── mysql.go │ │ ├── mysql_test.go │ │ ├── postgres.go │ │ ├── postgres_test.go │ │ ├── schema/ │ │ │ ├── authcode.go │ │ │ ├── authrequest.go │ │ │ ├── authsession.go │ │ │ ├── client.go │ │ │ ├── connector.go │ │ │ ├── devicerequest.go │ │ │ ├── devicetoken.go │ │ │ ├── dialects.go │ │ │ ├── keys.go │ │ │ ├── offlinesession.go │ │ │ ├── password.go │ │ │ ├── refreshtoken.go │ │ │ └── useridentity.go │ │ ├── sqlite.go │ │ ├── sqlite_test.go │ │ ├── types.go │ │ └── utils.go │ ├── etcd/ │ │ ├── config.go │ │ ├── etcd.go │ │ ├── etcd_test.go │ │ └── types.go │ ├── health.go │ ├── kubernetes/ │ │ ├── client.go │ │ ├── client_test.go │ │ ├── doc.go │ │ ├── k8sapi/ │ │ │ ├── client.go │ │ │ ├── crd_extensions.go │ │ │ ├── doc.go │ │ │ ├── extensions.go │ │ │ ├── time.go │ │ │ ├── unversioned.go │ │ │ └── v1.go │ │ ├── lock.go │ │ ├── storage.go │ │ ├── storage_test.go │ │ ├── transport.go │ │ └── types.go │ ├── memory/ │ │ ├── memory.go │ │ ├── memory_test.go │ │ └── static_test.go │ ├── sql/ │ │ ├── config.go │ │ ├── config_test.go │ │ ├── crud.go │ │ ├── crud_test.go │ │ ├── migrate.go │ │ ├── migrate_test.go │ │ ├── postgres_test.go │ │ ├── sql.go │ │ ├── sql_test.go │ │ ├── sqlite.go │ │ ├── sqlite_no_cgo.go │ │ └── sqlite_test.go │ ├── static.go │ └── storage.go └── web/ ├── robots.txt ├── static/ │ └── main.css ├── templates/ │ ├── approval.html │ ├── device.html │ ├── device_success.html │ ├── error.html │ ├── footer.html │ ├── header.html │ ├── login.html │ ├── oob.html │ ├── password.html │ └── totp_verify.html ├── themes/ │ ├── dark/ │ │ └── styles.css │ └── light/ │ └── styles.css └── web.go