Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

OpenID Connect and OAuth Support behind reverse proxies #261

Closed
Vad1mo opened this issue Apr 24, 2019 · 1 comment
Closed

OpenID Connect and OAuth Support behind reverse proxies #261

Vad1mo opened this issue Apr 24, 2019 · 1 comment

Comments

@Vad1mo
Copy link

Vad1mo commented Apr 24, 2019

This proposal is related to #240 but takes another approach that is simpler to implement and maintain.

Request Header Authentication is a common concept the frees the application authorizaiton and authenticaion complexity.

How reverse auth proxy works

  1. External traffic is directed to the auth proxy.
  2. The Auth Proxy interacts with the IAM (Redirects the user to the IAM add trusted header).
  3. After a successful login the proxy forwards the user to the protected content. Checking if the user is allowed to access the path.
  4. The Auth Proxy is adding upstream trusted headers with eg. the user id/email. The upstream service can read the header and trust the header as it trust the proxy becuase there is no one that could set that header except the proxy.

There are many auth proxy implementations that people can choose, Eg. SAML, Active Directory, Open ID Connect, OAuth etc...

An implementation could look like this:

Read Header:
X-Forwarded-User
X-Forwarded-Email

If "Request Header Authentication" is enabled in Config Fathom will evaluate the HTTP header values. If set the user/email is authenticated. If user does not exist create a new user with that id.

A good reference for possible header might be:

Would "Request Header Authentication" be something that we could implement and provide to fathom?

@JackEllis
Copy link
Collaborator

@Vad1mo You’re the only person after this and it’s not something I personally want to include. If 95% of users were asking for it, I’d consider it, but it’s just you. So with that said, I think you should do a pull of the repository, code this in yourself and deploy it how you want it. That way you’ll get it exactly the way you need :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants