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

Add support for oCIS - ownCloud Infinite Scale #14166

Open
2 of 7 tasks
dkocher opened this issue Jan 31, 2023 · 5 comments
Open
2 of 7 tasks

Add support for oCIS - ownCloud Infinite Scale #14166

dkocher opened this issue Jan 31, 2023 · 5 comments
Assignees
Labels
feature owncloud ownCloud Server

Comments

@dkocher
Copy link
Contributor

dkocher commented Jan 31, 2023

New concept of spaces accessible using LibreGraph

  • Generate from Swagger Spec the implementation to retrieve drives for a user
  • Reuse our current Microsoft Graph Client implementation.

oCIS uses WebFinger RFC7033 to locate the oCIS instance for an End-User.

Now uses OAuth for authentication. Must discover the OAuth endpoints somehow.

@dkocher dkocher added feature owncloud ownCloud Server labels Jan 31, 2023
@dkocher dkocher self-assigned this Feb 1, 2023
@dkocher
Copy link
Contributor Author

dkocher commented Sep 15, 2023

With #14877 we allow to configure usage of OAuth for WebDAV connections in connection profiles.

@michaelstingl
Copy link

michaelstingl commented Sep 18, 2023

Legacy OAuth 2.0 vs Basic Auth detection (still works in oC10 + oCIS as of today)

In an unauthenticated PROPFIND to the WebDAV endpoint, ownCloud clients check for Www-Authenticate: Bearer header.

curl -s -I --http1.1 "https://demo.owncloud.org/remote.php/dav/files/" | grep -i -e "HTTP/" -e "www-authenticate"
HTTP/1.1 401 Unauthorized
Www-Authenticate: Basic realm="ownCloud", charset="UTF-8"

➡️ ownCloud clients use Basic Auth

curl -s -I --http1.1 "https://demo.owncloud.com/remote.php/dav/files/" | grep -i -e "HTTP/" -e "www-authenticate"
HTTP/1.1 401 Unauthorized
Www-Authenticate: Bearer realm="ownCloud"
Www-Authenticate: Basic realm="ownCloud", charset="UTF-8"

➡️ ownCloud clients use OAuth 2.0 (if there's no trace of OpenID connect)
➡️ open /index.php/apps/oauth2/authorize in web UI

Here you can find more information:

Legacy OpenID Connect detection (still works in oC10 + oCIS as of today)

After Www-Authenticate: Bearer was detected, ownCloud clients check for /.well-known/openid-configuration on that instance, mirrored from the IdP.

After detection of /.well-known/openid-configuration, ownCloud clients proceed with the instructions provided there.

curl -s --http1.1 "https://ocis.ocis-traefik.latest.owncloud.works/.well-known/openid-configuration" | jq | grep -i "authorization_endpoint"
  "authorization_endpoint": "https://ocis.ocis-traefik.latest.owncloud.works/signin/v1/identifier/_/authorize",

@michaelstingl
Copy link

michaelstingl commented Sep 18, 2023

New, Webfinger based OpenId Connect discovery

Latest oCIS versions and latest ownCloud clients perform an unauthenticated GET request to the /.well-known/webfinger. It tells them where to authenticate and get tokens.

Here you can find more information 1.

Footnotes

  1. https://owncloud.dev/services/webfinger/#openid-connect-discovery

@dkocher
Copy link
Contributor Author

dkocher commented Apr 29, 2024

The LibreGraph API seems to miss support for versioning 1. That will not allow us to replace the OCS API implementation currently used.

Footnotes

  1. https://owncloud.dev/ocis/adr/0007-api-for-spaces/#open-topics

@dkocher
Copy link
Contributor Author

dkocher commented May 1, 2024

The LibreGraph API seems to miss support for versioning 1. That will not allow us to replace the OCS API implementation currently used.

Footnotes

  1. https://owncloud.dev/ocis/adr/0007-api-for-spaces/#open-topics

The DAV meta API is used for the versions and is considered future proof.

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

No branches or pull requests

2 participants