OAuth/OIDC SSO Replacement (Authelia, Authentik, etc.) #150

Closed
opened 2025-11-13 11:51:27 -06:00 by GiteaMirror · 35 comments
Owner

Originally created by @miloschwartz on GitHub (Mar 16, 2025).

Originally assigned to: @miloschwartz on GitHub.

Discussed in https://github.com/orgs/fosrl/discussions/119

Originally posted by niffelheimba January 30, 2025
In lieu of using the built-in authentication/SSO service, allow for third-party integrations to replace both the authentication for Pangolin itself and the services it is proxying for (forward proxy/authentication for services that don't support SSO internally).

Personally, and seemingly for other users on Reddit, this would be the biggest feature to allow me to fully integrate into Pangolin. Nginx Proxy Manager is not well supported and is one of the most popular applications without an SSO integration. Though obviously this is primarily meant (at least currently) as a cloudflare tunnel replacement, this would make for an awesome all-in-one solution.

Originally created by @miloschwartz on GitHub (Mar 16, 2025). Originally assigned to: @miloschwartz on GitHub. ### Discussed in https://github.com/orgs/fosrl/discussions/119 <div type='discussions-op-text'> <sup>Originally posted by **niffelheimba** January 30, 2025</sup> In lieu of using the built-in authentication/SSO service, allow for third-party integrations to replace both the authentication for Pangolin itself and the services it is proxying for (forward proxy/authentication for services that don't support SSO internally). Personally, and seemingly for other users on Reddit, this would be the biggest feature to allow me to fully integrate into Pangolin. Nginx Proxy Manager is not well supported and is one of the most popular applications without an SSO integration. Though obviously this is primarily meant (at least currently) as a cloudflare tunnel replacement, this would make for an awesome all-in-one solution.</div>
GiteaMirror added the new feature label 2025-11-13 11:51:27 -06:00
Author
Owner

@miloschwartz commented on GitHub (Mar 17, 2025):

Note for later to revisit: #351

@miloschwartz commented on GitHub (Mar 17, 2025): Note for later to revisit: #351
Author
Owner

@adrianipopescu commented on GitHub (Mar 20, 2025):

If this can run with pocket-id and tinyauth it'd be the simplest to configure zero trust tunneling system, while still keeping a unified experience on and offsite.

@adrianipopescu commented on GitHub (Mar 20, 2025): If this can run with pocket-id and tinyauth it'd be the simplest to configure zero trust tunneling system, while still keeping a unified experience on and offsite.
Author
Owner

@TheLinuxGuy commented on GitHub (Mar 24, 2025):

I would love it if Authentik could be used.

@TheLinuxGuy commented on GitHub (Mar 24, 2025): I would love it if Authentik could be used.
Author
Owner

@gigaion commented on GitHub (Mar 25, 2025):

Keycloak would be awsome as well. Looking forward to this!

@gigaion commented on GitHub (Mar 25, 2025): Keycloak would be awsome as well. Looking forward to this!
Author
Owner

@HRNasr commented on GitHub (Mar 25, 2025):

Casdoor would be awsome as well

@HRNasr commented on GitHub (Mar 25, 2025): Casdoor would be awsome as well
Author
Owner

@michelkroon commented on GitHub (Mar 25, 2025):

Would love to use AzureAD with this project. OAuth or SAML is easy to setup (if you do it al lot 😄 )

@michelkroon commented on GitHub (Mar 25, 2025): Would love to use AzureAD with this project. OAuth or SAML is easy to setup (if you do it al lot 😄 )
Author
Owner

@FilipeRamalho commented on GitHub (Mar 25, 2025):

Does this include https://github.com/orgs/fosrl/discussions/21?

Or are you just going to make it possible to replace the built-in solution with an external OIDC provider for now?

@FilipeRamalho commented on GitHub (Mar 25, 2025): Does this include https://github.com/orgs/fosrl/discussions/21? Or are you just going to make it possible to replace the built-in solution with an external OIDC provider for now?
Author
Owner

@miloschwartz commented on GitHub (Mar 26, 2025):

@FilipeRamalho I think first step is going to be using another provider to replace the built in

@miloschwartz commented on GitHub (Mar 26, 2025): @FilipeRamalho I think first step is going to be using another provider to replace the built in
Author
Owner

@nikolaishields commented on GitHub (Mar 30, 2025):

Bumping this! Very excited and would love to use this with existing auth systems.

@nikolaishields commented on GitHub (Mar 30, 2025): Bumping this! Very excited and would love to use this with existing auth systems.
Author
Owner

@blechinger commented on GitHub (Apr 1, 2025):

This is a killer feature and I'm stoked to see it in the Short Term swimlane. As-is I'd have to choose between simplifying access control and tunneling with Pangolin (which I'd very much like to do) or retaining existing robust identity management and SSO integrations (which is necessary for my use case). Options for integrating Pangolin with IAM solutions will allow a separation of concerns without adding tons of administrative overhead or scope bloat and enables a much wider range of practical applications.

@blechinger commented on GitHub (Apr 1, 2025): This is a killer feature and I'm stoked to see it in the [Short Term swimlane](https://github.com/orgs/fosrl/projects/1/views/1). As-is I'd have to choose between simplifying access control and tunneling with Pangolin (which I'd very much like to do) or retaining existing robust identity management and SSO integrations (which is necessary for my use case). Options for integrating Pangolin with IAM solutions will allow a separation of concerns without adding tons of administrative overhead or scope bloat and enables a much wider range of practical applications.
Author
Owner

@orhanveli commented on GitHub (Apr 3, 2025):

With this feature, Pangolin will become "the solution" that I'm looking for :) I think it's time to buy a licence, keep up the great work guys 💪🏻

@orhanveli commented on GitHub (Apr 3, 2025): With this feature, Pangolin will become "the solution" that I'm looking for :) I think it's time to buy a licence, keep up the great work guys 💪🏻
Author
Owner

@snowy-jaguar commented on GitHub (Apr 3, 2025):

I'd love to see this feature added. I'm probably going to roll out a Pangolin instance soon regardless but being able to tie it in to Authentik (when I've got that functionally useable) would be amazing.

@snowy-jaguar commented on GitHub (Apr 3, 2025): I'd love to see this feature added. I'm probably going to roll out a Pangolin instance soon regardless but being able to tie it in to Authentik (when I've got that functionally useable) would be amazing.
Author
Owner

@alexdelprete commented on GitHub (Apr 7, 2025):

I was keeping an eye on Pangolin, but it was missing an OIDC integration. Glad to see it is on the roadmap now.

Right now, for my homelab, I'm using Traefik with Zitadel, thanks to this great OIDC auth middleware by @sevensolutions: https://github.com/sevensolutions/traefik-oidc-auth

Supported/Unsupported providers:
Image

@alexdelprete commented on GitHub (Apr 7, 2025): I was keeping an eye on Pangolin, but it was missing an OIDC integration. Glad to see it is on the roadmap now. Right now, for my homelab, I'm using Traefik with Zitadel, thanks to this great OIDC auth middleware by @sevensolutions: https://github.com/sevensolutions/traefik-oidc-auth Supported/Unsupported providers: ![Image](https://github.com/user-attachments/assets/c8f31298-f35c-41d9-beb8-832d76969081)
Author
Owner

@Cilenco commented on GitHub (Apr 8, 2025):

Not exactly sure how this would work, can the user management then still be done by Pangolin? Would be nice to still manage the users there but login only once to access all proxied sites (which atm might use Authentik or similar)

@Cilenco commented on GitHub (Apr 8, 2025): Not exactly sure how this would work, can the user management then still be done by Pangolin? Would be nice to still manage the users there but login only once to access all proxied sites (which atm might use Authentik or similar)
Author
Owner

@adrianipopescu commented on GitHub (Apr 8, 2025):

imo we should just add traefik's oidc proxy plugin and configure that via the ui and what sites to use it or not

you can use pangolin to expose your oidc system to the net and control access and roles from it / site.

what I'd love would be able to sign in into pangolin via oidc

@adrianipopescu commented on GitHub (Apr 8, 2025): imo we should just add traefik's oidc proxy plugin and configure that via the ui and what sites to use it or not you can use pangolin to expose your oidc system to the net and control access and roles from it / site. what I'd love would be able to sign in into pangolin via oidc
Author
Owner

@miloschwartz commented on GitHub (Apr 8, 2025):

Currently the goal is to add a generic OAuth2 provider as an auth method. You would define a Pangolin user but specify the auth method as Internal or OAuth2 (aka external). You would then expose the provider UI such as Authentik using Pangolin (or other proxy; doesn't really matter). When you go to authenticate with a resource, it redirects you to the auth provider to complete the log in step and then back to the resource. So ideally you still create the user object and manage it Pangolin, we just offload the auth step to the provider. This is very similar to how other apps handle it to my knowledge, for example Portainer.

@miloschwartz commented on GitHub (Apr 8, 2025): Currently the goal is to add a generic OAuth2 provider as an auth method. You would define a Pangolin user but specify the auth method as Internal or OAuth2 (aka external). You would then expose the provider UI such as Authentik using Pangolin (or other proxy; doesn't really matter). When you go to authenticate with a resource, it redirects you to the auth provider to complete the log in step and then back to the resource. So ideally you still create the user object and manage it Pangolin, we just offload the auth step to the provider. This is very similar to how other apps handle it to my knowledge, for example Portainer.
Author
Owner

@sevensolutions commented on GitHub (Apr 8, 2025):

Currently the goal is to add a generic OAuth2 provider as an auth method. You would define a Pangolin user but specify the auth method as Internal or OAuth2 (aka external). You would then expose the provider UI such as Authentik using Pangolin (or other proxy; doesn't really matter). When you go to authenticate with a resource, it redirects you to the auth provider to complete the log in step and then back to the resource. So ideally you still create the user object and manage it Pangolin, we just offload the auth step to the provider. This is very similar to how other apps handle it to my knowledge, for example Portainer.

This is exactly how you would do it normally and what i also would suggest.
The original idea of my proxy plugin was securing apps which doesnt have their own login handling, like simple static websites.

@sevensolutions commented on GitHub (Apr 8, 2025): > Currently the goal is to add a generic OAuth2 provider as an auth method. You would define a Pangolin user but specify the auth method as Internal or OAuth2 (aka external). You would then expose the provider UI such as Authentik using Pangolin (or other proxy; doesn't really matter). When you go to authenticate with a resource, it redirects you to the auth provider to complete the log in step and then back to the resource. So ideally you still create the user object and manage it Pangolin, we just offload the auth step to the provider. This is very similar to how other apps handle it to my knowledge, for example Portainer. This is exactly how you would do it normally and what i also would suggest. The original idea of my proxy plugin was securing apps which doesnt have their own login handling, like simple static websites.
Author
Owner

@oidebrett commented on GitHub (Apr 8, 2025):

I am looking forward to seeing the implementation of this feature. I am hoping that this might open up the possibility of pangolin supporting the authorisation of users of MCP. Here's the draft MCP specification on authorisation flow

The agents are coming 😀 I love to help contribute on this.

@oidebrett commented on GitHub (Apr 8, 2025): I am looking forward to seeing the implementation of this feature. I am hoping that this might open up the possibility of pangolin supporting the authorisation of users of MCP. Here's the [draft MCP specification on authorisation flow](https://github.com/modelcontextprotocol/modelcontextprotocol/blob/6859c74dfaddd9e0be35fdb55a7741841ebedaa6/docs/specification/2025-03-26/basic/authorization.mdx) The agents are coming 😀 I love to help contribute on this.
Author
Owner

@Cilenco commented on GitHub (Apr 8, 2025):

Currently the goal is to add a generic OAuth2 provider as an auth method. You would define a Pangolin user but specify the auth method as Internal or OAuth2 (aka external).

Thanks for the explanation, im still not getting it completely tho. How does the external Oauth provider know about the user resource defined in Pangolin and if the user is allowed to access to the requested resources? Wouldn't Pangolin have to act like a mini LDAP then?

@Cilenco commented on GitHub (Apr 8, 2025): > Currently the goal is to add a generic OAuth2 provider as an auth method. You would define a Pangolin user but specify the auth method as Internal or OAuth2 (aka external). Thanks for the explanation, im still not getting it completely tho. How does the external Oauth provider know about the user resource defined in Pangolin and if the user is allowed to access to the requested resources? Wouldn't Pangolin have to act like a mini LDAP then?
Author
Owner

@jacobalberty commented on GitHub (Apr 18, 2025):

@Cilenco pangolin would look at the subject to determine what pgl user to map to. I hope we get some auto adding user features maybe with some default permissions, mapping groups would be even better but thats a little more complex to get right

@jacobalberty commented on GitHub (Apr 18, 2025): @Cilenco pangolin would look at the subject to determine what pgl user to map to. I hope we get some auto adding user features maybe with some default permissions, mapping groups would be even better but thats a little more complex to get right
Author
Owner

@TheLinuxGuy commented on GitHub (Apr 18, 2025):

is this FR implemented? I came across https://github.com/hhftechnology/middleware-manager which seems to do authentik integration.

@TheLinuxGuy commented on GitHub (Apr 18, 2025): is this FR implemented? I came across https://github.com/hhftechnology/middleware-manager which seems to do authentik integration.
Author
Owner

@miloschwartz commented on GitHub (Apr 18, 2025):

@TheLinuxGuy That tool is a third party tool that will let you add forward auth middleware to a Traefik instance to use Authentik, but it does not integrate directly with Pangolin's auth system (aka not our upcoming first part external identity provider feature).

@miloschwartz commented on GitHub (Apr 18, 2025): @TheLinuxGuy That tool is a third party tool that will let you add forward auth middleware to a Traefik instance to use Authentik, but it does not integrate directly with Pangolin's auth system (aka not our upcoming first part external identity provider feature).
Author
Owner

@miloschwartz commented on GitHub (Apr 18, 2025):

@jacobalberty There will be an auto provision feature with the ability to map the external IDP groups to Pangolin roles and organizations!

@miloschwartz commented on GitHub (Apr 18, 2025): @jacobalberty There will be an auto provision feature with the ability to map the external IDP groups to Pangolin roles and organizations!
Author
Owner

@jacobalberty commented on GitHub (Apr 18, 2025):

@miloschwartz just don't let Zitadel derail your MVP, its groups are different. I like it from an engineering perspective but no one else uses the same group type and it sucks. There is an action us Zitadel users can use to fix things as long as we can pick the claim to pull from.

@jacobalberty commented on GitHub (Apr 18, 2025): @miloschwartz just don't let Zitadel derail your MVP, its groups are different. I like it from an engineering perspective but no one else uses the same group type and it sucks. There is an action us Zitadel users can use to fix things as long as we can pick the claim to pull from.
Author
Owner

@miloschwartz commented on GitHub (Apr 18, 2025):

@jacobalberty Good to know to look out for this. I've been testing with Authentik.

I took inspiration from Grafana, and current MVP allows picking from the claims using JMESPath as a selector. Therefore hopefully very flexible from a user perspective.

@miloschwartz commented on GitHub (Apr 18, 2025): @jacobalberty Good to know to look out for this. I've been testing with Authentik. I took inspiration from Grafana, and current MVP allows picking from the claims using JMESPath as a selector. Therefore hopefully very flexible from a user perspective.
Author
Owner

@jacobalberty commented on GitHub (Apr 18, 2025):

@miloschwartz excellent choice to take inspiration from Grafana. They support the nested permissions of Zitadel natively so you've got a leg up! That's more than I was hoping for!

@jacobalberty commented on GitHub (Apr 18, 2025): @miloschwartz excellent choice to take inspiration from Grafana. They support the nested permissions of Zitadel natively so you've got a leg up! That's more than I was hoping for!
Author
Owner

@varialflip commented on GitHub (Apr 26, 2025):

Will OIDC IDP be a Pro licenced feature ?

@varialflip commented on GitHub (Apr 26, 2025): Will OIDC IDP be a Pro licenced feature ?
Author
Owner

@adrianipopescu commented on GitHub (Apr 26, 2025):

the project so far has been one of my few donated-to due to how little intrusiveness they have, hope that doesn't change

(but if they want a supporter subscription that's fully opt-in with just a heart being shown on the dash, I'm down)

@adrianipopescu commented on GitHub (Apr 26, 2025): the project so far has been one of my few donated-to due to how little intrusiveness they have, hope that doesn't change (but if they want a supporter subscription that's fully opt-in with just a heart being shown on the dash, I'm down)
Author
Owner

@varialflip commented on GitHub (Apr 30, 2025):

If i understand the diffs correctly, it seems like OIDC will be behind a paywall (àla https://sso.tax/)
If so, I really hope there will be a homelab / selfhosted option for us

@varialflip commented on GitHub (Apr 30, 2025): If i understand the diffs correctly, it seems like OIDC will be behind a paywall (àla https://sso.tax/) If so, I really hope there will be a homelab / selfhosted option for us
Author
Owner

@TriasRichard commented on GitHub (May 2, 2025):

If i understand the diffs correctly, it seems like OIDC will be behind a paywall (àla https://sso.tax/) If so, I really hope there will be a homelab / selfhosted option for us

26e93ccac6

This is in the docs:

The Supporter Program is a way to support the project and remove the
support marks. It is a one time donation. No features are unlocked.

The Professional plan is a paid license that allows you to use the
software in a commercial environment that unlocks features and

Current features that are available with the Professional license:

  • OIDC IDP automatic user importing
  • Stable public API with access control

Pangolin will always be free and open source but some features geared more to businesses will be covered under a different license than the AGPL in order to allow us to grow Pangolin.

@TriasRichard commented on GitHub (May 2, 2025): > If i understand the diffs correctly, it seems like OIDC will be behind a paywall (àla https://sso.tax/) If so, I really hope there will be a homelab / selfhosted option for us https://github.com/fosrl/docs/commit/26e93ccac6d485d235dc583d9fff63056e68ea6b This is in the docs: The Supporter Program is a way to support the project and remove the support marks. It is a one time donation. No features are unlocked. The Professional plan is a paid license that allows you to use the software in a commercial environment that unlocks features and Current features that are available with the Professional license: - OIDC IDP automatic user importing - Stable public API with access control Pangolin will always be free and open source but some features geared more to businesses will be covered under a different license than the AGPL in order to allow us to grow Pangolin.
Author
Owner

@adrianipopescu commented on GitHub (May 2, 2025):

automatic user importing = if a user doesn’t exist previously create it on first login?

meaning for non-commerical use, we can manually create the users and associate them with the idp?

@adrianipopescu commented on GitHub (May 2, 2025): automatic user importing = if a user doesn’t exist previously create it on first login? meaning for non-commerical use, we can manually create the users and associate them with the idp?
Author
Owner

@TriasRichard commented on GitHub (May 2, 2025):

automatic user importing = if a user doesn’t exist previously create it on first login?

meaning for non-commerical use, we can manually create the users and associate them with the idp?

It looks like that :

   if (!(await license.isUnlocked())) {
         autoProvision = false;
     }
@TriasRichard commented on GitHub (May 2, 2025): > automatic user importing = if a user doesn’t exist previously create it on first login? > > meaning for non-commerical use, we can manually create the users and associate them with the idp? It looks like that : if (!(await license.isUnlocked())) { autoProvision = false; }
Author
Owner

@oschwartz10612 commented on GitHub (May 2, 2025):

Release in 1.3.0!

@oschwartz10612 commented on GitHub (May 2, 2025): Release in [1.3.0](https://github.com/fosrl/pangolin/releases/tag/1.3.0)!
Author
Owner

@cirrusflyer commented on GitHub (May 2, 2025):

Am I able to install pocket-id on the same Pangolin VPS or do all resources need to reside on the internal network that's being accessed by Pangolin?

@cirrusflyer commented on GitHub (May 2, 2025): Am I able to install pocket-id on the same Pangolin VPS or do all resources need to reside on the internal network that's being accessed by Pangolin?
Author
Owner

@oschwartz10612 commented on GitHub (May 2, 2025):

You can install it on the same VPS and use a local site to expose it from Pangolin!

@oschwartz10612 commented on GitHub (May 2, 2025): You can install it on the same VPS and use a local site to expose it from Pangolin!
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/pangolin#150