Creating new plugins requires minimal effort. See the example for details.
Really tring to alleviate the following primary challenges:
- needing to deploy an additional
proxy
(oauth2_proxy
,keycloak-gatekeeper
, etc) - static configurations
- issuer/provider specific implementations
- reverse proxy specific implementations
- inability to make complex assertions on the claims/tokens
Development goals:
- maintain original host/port/path for all callbacks to ensure return to the proper location (callbacks detected by setting GET param on original URI with query stripped)
- signed: ensures only trusted apps/proxies can use the service
- encrypted: allows for identity operators to hide client_{id,secret} (and other configuration options) from reverse proxy operators
- config aud: ensures users cannot use token (cookie) from one configuration/site and use it with another
- not cache'ing the discovery docs
- does not allow for deeper validation on iss/groups/other attrs/etc
redirect_uri
when set on multiple hosts/routes becomes difficult (nokia/kong-oidc#118)- not generic to work with all proxies
- cumbersome to deploy and intrusive to the overall process (sidecars in kubernetes, etc)
- must be deployed unique to each service (ie, new deployment of the proxy for
each
client_id
andclient_secret
etc)
- allow per-path and/or per-method checks (https://www.keycloak.org/docs/latest/securing_apps/index.html#_keycloak_generic_adapter)
-
https://www.keycloak.org/docs/latest/securing_apps/index.html#_keycloak_generic_adapter
-
https://docs.traefik.io/configuration/entrypoints/#forward-authentication
-
https://www.getambassador.io/reference/services/auth-service/
-
https://github.com/ajmyyra/ambassador-auth-oidc/blob/master/README.md
-
https://docs.microsoft.com/en-us/azure/active-directory/develop/v1-protocols-openid-connect-code
-
https://itnext.io/protect-kubernetes-dashboard-with-openid-connect-104b9e75e39c
-
https://developer.okta.com/authentication-guide/implementing-authentication/auth-code/
-
https://redbyte.eu/en/blog/using-the-nginx-auth-request-module/
-
https://nginx.org/en/docs/http/ngx_http_auth_request_module.html
-
https://kubernetes.github.io/ingress-nginx/examples/auth/oauth-external-auth/
-
https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/
-
https://developer.okta.com/blog/2017/07/25/oidc-primer-part-1
-
https://developer.okta.com/blog/2017/07/25/oidc-primer-part-2
-
https://developer.okta.com/blog/2017/08/01/oidc-primer-part-3
-
https://blog.runscope.com/posts/understanding-oauth-2-and-openid-connect
-
https://developers.google.com/identity/protocols/OpenIDConnect
-
Servers SHOULD NOT include more than one Set-Cookie header field in the same response with the same cookie-name.
-
^ why we do not allow setting the cookie on multiple domains
-
https://devforum.okta.com/t/oauth-2-0-authentication-and-redirect-uri-wildcards/1015/2
-
https://www.troyhunt.com/promiscuous-cookies-and-their-impending-death-via-the-samesite-policy/
- emissary-ingress/emissary#216
- https://www.getambassador.io/reference/services/auth-service/
- https://www.getambassador.io/reference/host/
- https://www.getambassador.io/reference/add_request_headers/