I am missing (real) SSO



  • Hi all,

    I am vary excited to see what cloudron has achieved so far. Almost every app that runs within our internal infrastructure is available at cloudron. Switching to cloudron would mean a big relief for us.

    Key things that I miss in clourdron:

    • real SSO, meaning not only shared user credentials but only a single sign on is needed to access all apps
    • an option that makes an app only available to authenticated users, that is separate from the app itself. This is for security reasons, so an app is not exposed to the public internet. Practically, that means that all traffic needs to run through a proxy
    • With the above it becomes possible to do things like 2FA more easily and consistent

    At the current state it is not possible to fulfill security best practices that become a requirement at many companies now.

    That wish needs a lot of basic architectural changes, so I don't expect that this comes fast.

    In the meantime please clarify SSO in the docs. Better say clearly that you don't have SSO yet and that it is a shared user database and single credential login.



  • We have had many discussions around this in the past and with the current state of the apps it is simply not viable to implement deeper SSO integration of what we currently have. Already the current state is not possible with some apps. From my perspective this would likely only be possible with something like an OAuth flow, but we even stepped away from that from some apps, since it breaks the app's native login flow often. So as you say this is something for the longer term future, which will only work if the app authors would start working on it.

    Regarding the private apps, you can already set access controls for apps, but they will still be available publicly. For the moment this is likely out of scope for Cloudron. Not sure maybe this belongs to some VPN setup for organizations with this requirement?



  • We use a reverse proxy setup. Many applications support extracting the logged in user from the HTTP headers. See this example for an explanation:
    https://wiki.jenkins.io/display/JENKINS/Reverse+Proxy+Auth+Plugin

    This way, OAuth or SAML or whatever auth protocol you choose needs only be supported by the reverse proxy.

    So far we were able to provide SSO for every application in our extranet.

    Regarding the private apps, you can already set access controls for apps, but they will still be available publicly. For the moment this is likely out of scope for Cloudron. Not sure maybe this belongs to some VPN setup for organizations with this requirement?

    Maybe there is a misunderstanding. For clarification:

    Every app in our setup is theoretically accessible from the public internet. If the user is not authenticated and does not have rights to access the app, no HTTP traffic is getting through to the app. This improves security. The app is accessible from the public internet, but not directly exposed to it.



  • Since all apps are running within containers there is a reverse proxy (Nginx) running that facilitates access to these apps. While it is currently not possible to configure this through the Cloudron UI (and manual modifications will likely be overwritten) I think it could be a good idea to have options to add ip access restrictions to apps and optionally also do sso on the webserver (nginx running on cloudron, not in the app) level.

    Something like https://github.com/vouch/vouch-proxy/ could then do the oauth part towards the cloudron user management.



  • We started out with wanting OAuth across apps (and is what we implemented). Sadly, we failed because most apps don't support this very well. I try to use the term 'Central user management' when possible to describe Cloudron's situation but maybe there are places in the docs that needs to be fixed. I will do a quick check and fix them up.


Log in to reply