Replies: 4 comments
-
I think it'd be better not to guard against other use-cases, rather the extension/server could do some smart things to decide whether the server is running under http or https, but always have a scape hatch to allow developers to force a given schema. I agree that defaults are important to avoid unintended consequences (someone not using https without being aware of the full consequences). But I also think in the end software should be configurable to meet the needs of users that "know what they are doing". For example, just off the top of my head I can come up with another use-case: Running a POD on a local network, and not bother adding https because the traffic within this network is trusted. I'm sure there could be more use-cases that escape our imagination (now or in the future). |
Beta Was this translation helpful? Give feedback.
-
Your point is valid. I think what I am looking for is not so much to guard against use-cases, but to guard the constraint within which use-case will be allowed. So "constraint" might be a better word than "guard". I've updated the wording to better reflect this intent. Some constraints that come to mind are:
As to configuration, the question arises what the configuration path should be. Should it come from a DB? Environment? Is a UI needed?
I think we should at least mention some use cases to give an idea of intent. I agree that this should be informative, not exhaustive. |
Beta Was this translation helpful? Give feedback.
-
If we are not going to enforce HTTPS, we should remove it completely from the implementation and follow whatever the protocol schema is that is used to access it. This will allow configurations where a Nextcloud configuration is on both http and https and still produce the expected results. Automatically following whatever our 'host' is doing will also remove the need for another thing to configure in the solid app. |
Beta Was this translation helpful? Give feedback.
-
I think removing the current implementation would check all the boxes:
With the exception of
Since it would be up to the Nextcloud serving specifics wether either protocal, or both, are allowed. But this point would become redundant, as the responsibility is shifted "up" to the Nextcloud instance itself. I think it also neatly connect to "least surprise" and would also be sufficient to protect unaware users against themselves. We could still add mention in the documentation (specifically for development) about the details of http/https. |
Beta Was this translation helpful? Give feedback.
-
The Solid Specification states:
Originally, both Solid Nextcloud and the PHP Standalone severs had
https
hard-coded for all relevant URLs.This was done, in part, to protect unknowing users against themselves.
The standalone PHP server soon had logic added that also allowed running the server over
http
, in order to support development using the built-in web server (as that does not supporthttps
).This was first done by requiring an environmental variable
ENVIRONMENT
to be set to "development", under the assumption that "production" would always run over HTTPS.At a later point, a use-case arose in which the server should be able to run over HTTP in production.
The use-case was that the solid pod was served behind either a proxy or a load balancer. The outward facing server was HTTPS, but the inner server was required to run HTP.
In order to support this (and similar) use-cases, the name of the environmental variable was changed to
PROXY_MODE
.As @NoelDeMartin mentions in pdsinterop/solid-nextcloud#121, this problem (being able to serve the pod over HTTP) is also present in Solid Nextcloud, but has not been addressed there.
I've given my assurance that this topic would be discussed "internally" but as there is no reason to hold this discussion behind closed doors, I've decided to open this discussion instead.
This can also serve as documentation and as a decision document for future reference.
Things that this discussion should address:
I would specifically like input from @ylebre, as he was involved in this discussion at the time for the standalone server.
Beta Was this translation helpful? Give feedback.
All reactions