From 011f8ba81f1228a59a48d2c79853ab112c08862f Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Thu, 31 Aug 2023 15:24:34 +0100 Subject: [PATCH 01/15] feat: server-side rendering --- 021-server-side-rendering.md | 280 +++++++++++++++++++++++++++++++++++ 1 file changed, 280 insertions(+) create mode 100644 021-server-side-rendering.md diff --git a/021-server-side-rendering.md b/021-server-side-rendering.md new file mode 100644 index 0000000..034a1dd --- /dev/null +++ b/021-server-side-rendering.md @@ -0,0 +1,280 @@ +# Server Side Rendering + +- Implementation Owner: @loks0n +- Start Date: 31-08-2023 +- Target Date: Unknown + +## Summary + +[summary]: #summary + + +Appwrite Auth is currently tailored towards client side rendered (CSR) applications. This RFC proposes to add support for server side rendered (SSR) applications. + +## Problem Statement (Step 1) + +[problem-statement]: #problem-statement + +**What problem are you trying to solve?** + +Many popular web frameworks, such as Next.js, Nuxt.jsm and SvelteKit, support and recommend SSR, by default. When developers attempt to use Appwrite Auth with these frameworks, they run into issues with the current implementation. + +SSR is popular for a number of reasons: +- It enables search engines to crawl the site and index the content +- It improves performance by reducing the time to first render, and reducing the amount of JavaScript required to render the page +- It improves accessibility by ensuring that the page is usable even if JavaScript is disabled +- It prevents flash of unauthenticated content. + + + + + + +## Design proposal (Step 2) + +[design-proposal]: #design-proposal + +**Solution #1: Basic account session cookies are not accessible from SDK** + +To authenticate using anonymous sessions, email-password sessions and magic URL sessions, the Appwrite SDKs make a POST request to the relevant endpoint. The response body contains the session ID, but not the + +The SDK currently obscures the session cookie value with the [call method](https://github.com/appwrite/sdk-for-node/blob/aaea14a36d5b7daac859eaa8dc44d2253fbcbcef/lib/client.js#L120C86-L120C86) which only returns the response body. + +A popular hacky workaround for this involves making a manual fetch request, bypassing the SDK and parsing the cookie from the response headers. + +```js +import { parse } from "set-cookie-parser"; + +const response = await fetch( + `https://cloud.appwrite.io/v1/account/sessions/anonymous`, + { + method: "POST", + headers: { + "x-appwrite-project": "PROJECT_ID", + }, + } +); + +const cookies = response.headers.get("set-cookie") || ""; +const sessionCookie = parse(cookies).find( + (cookie) => cookie.name === "a_session" +); +const sessionToken = sessionCookie?.value; +``` + +The document proposes that the Account service should return the token within the session object, simplifying the code above to: + +```js +import { Client, Account } from "appwrite"; + +const client = new Client(); +client.setEndpoint("https://cloud.appwrite.io/v1"); +client.setProject("PROJECT_ID"); + +const account = new Account(client); +const session = await account.createAnonymousSession(); +const sessionToken = session.token; +``` + +**Solution #2: OAuth2 session cookies are not accessible from SDK** + + +**Solution #3: Making authenticated requests with the SDK** + +Now, you've got a session token, you want to make authenticated requests. For example, getting the user's account details. To set a session token on the server-side, we have to use the `X-Fallback-Cookies` header + + +```js +import { Client, Account } from "appwrite"; + +const client = new Client(); +client.setEndpoint("https://cloud.appwrite.io/v1"); +client.setProject("PROJECT_ID"); + +const serialisedCookies = JSON.stringify({ + "a_session_PROJECT_ID": sessionToken, +}); + +client.headers["X-Fallback-Cookies"] = serialisedCookies; + +const account = new Account(client); +const currentUser = account.get(); +``` + +We propose a new SDK helper method to simplify this process. + +```js +import { Client, Account } from "appwrite"; + +const client = new Client(); +client.setEndpoint("https://cloud.appwrite.io/v1"); +client.setProject("PROJECT_ID"); + +client.setSession(sessionToken); + +const account = new Account(client); +const currentUser = account.get(); +``` + +**Solution #4: Persisting cookie sessions on client** + +On the web, SSR applications will need to set cookies under the SSR domain, but the cookie returned by Appwrite is set under the Appwrite domain. + +Each SSR framework has an interface for setting cookies in the response. +For example, in Next.js, you can use the [setCookie](https://nextjs.org/docs/api-reference/next/cookies#setcookie) method. +SvelteKit has a [cookie](https://kit.svelte.dev/docs#modules-cookie) module. + +For Next.js, the code would look like this: + +```js + +import { cookies } from "next/headers"; + +const cookieList = cookies() +cookieList.set({ + name: "my_cookie_name", + value: session.token, + path: "/", + sameSite: "none", + secure: true, + httpOnly: true, + maxAge: session.expire, +}); +``` + +We propose a helper method for popular SSR frameworks to set the cookie in the response. + +```js +import { cookies } from "next/headers"; +import { createSessionCookie } from "appwrite/nextjs"; + +const cookieList = cookies() +cookieList.set(createSessionCookie(session, 'my_cookie_name')); +``` + + + + + + + +### API Endpoints + + + +### Data Structure + + + +### Supporting Libraries + + + +### Breaking Changes + + + +### Reliability (Tests & Benchmarks) + +#### Scaling + + + +#### Benchmarks + + + +#### Tests (UI, Unit, E2E) + + + +### Documentation & Content + + + +### Prior art + +[prior-art]: #prior-art + + + +### Unresolved questions + +[unresolved-questions]: #unresolved-questions + + + + + +### Future possibilities + +[future-possibilities]: #future-possibilities + + + + From 797ff14da444f12e76bf5e57b58e49019000b176 Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Mon, 11 Sep 2023 15:32:25 +0100 Subject: [PATCH 02/15] feat: cont --- 021-server-side-rendering.md | 280 ---------------- .../021-server-side-rendering.md | 304 ++++++++++++++++++ 021-server-side-rendering/csr-oauth-flow.png | Bin 0 -> 126829 bytes 021-server-side-rendering/ssr-oauth-flow.png | Bin 0 -> 251739 bytes 4 files changed, 304 insertions(+), 280 deletions(-) delete mode 100644 021-server-side-rendering.md create mode 100644 021-server-side-rendering/021-server-side-rendering.md create mode 100644 021-server-side-rendering/csr-oauth-flow.png create mode 100644 021-server-side-rendering/ssr-oauth-flow.png diff --git a/021-server-side-rendering.md b/021-server-side-rendering.md deleted file mode 100644 index 034a1dd..0000000 --- a/021-server-side-rendering.md +++ /dev/null @@ -1,280 +0,0 @@ -# Server Side Rendering - -- Implementation Owner: @loks0n -- Start Date: 31-08-2023 -- Target Date: Unknown - -## Summary - -[summary]: #summary - - -Appwrite Auth is currently tailored towards client side rendered (CSR) applications. This RFC proposes to add support for server side rendered (SSR) applications. - -## Problem Statement (Step 1) - -[problem-statement]: #problem-statement - -**What problem are you trying to solve?** - -Many popular web frameworks, such as Next.js, Nuxt.jsm and SvelteKit, support and recommend SSR, by default. When developers attempt to use Appwrite Auth with these frameworks, they run into issues with the current implementation. - -SSR is popular for a number of reasons: -- It enables search engines to crawl the site and index the content -- It improves performance by reducing the time to first render, and reducing the amount of JavaScript required to render the page -- It improves accessibility by ensuring that the page is usable even if JavaScript is disabled -- It prevents flash of unauthenticated content. - - - - - - -## Design proposal (Step 2) - -[design-proposal]: #design-proposal - -**Solution #1: Basic account session cookies are not accessible from SDK** - -To authenticate using anonymous sessions, email-password sessions and magic URL sessions, the Appwrite SDKs make a POST request to the relevant endpoint. The response body contains the session ID, but not the - -The SDK currently obscures the session cookie value with the [call method](https://github.com/appwrite/sdk-for-node/blob/aaea14a36d5b7daac859eaa8dc44d2253fbcbcef/lib/client.js#L120C86-L120C86) which only returns the response body. - -A popular hacky workaround for this involves making a manual fetch request, bypassing the SDK and parsing the cookie from the response headers. - -```js -import { parse } from "set-cookie-parser"; - -const response = await fetch( - `https://cloud.appwrite.io/v1/account/sessions/anonymous`, - { - method: "POST", - headers: { - "x-appwrite-project": "PROJECT_ID", - }, - } -); - -const cookies = response.headers.get("set-cookie") || ""; -const sessionCookie = parse(cookies).find( - (cookie) => cookie.name === "a_session" -); -const sessionToken = sessionCookie?.value; -``` - -The document proposes that the Account service should return the token within the session object, simplifying the code above to: - -```js -import { Client, Account } from "appwrite"; - -const client = new Client(); -client.setEndpoint("https://cloud.appwrite.io/v1"); -client.setProject("PROJECT_ID"); - -const account = new Account(client); -const session = await account.createAnonymousSession(); -const sessionToken = session.token; -``` - -**Solution #2: OAuth2 session cookies are not accessible from SDK** - - -**Solution #3: Making authenticated requests with the SDK** - -Now, you've got a session token, you want to make authenticated requests. For example, getting the user's account details. To set a session token on the server-side, we have to use the `X-Fallback-Cookies` header - - -```js -import { Client, Account } from "appwrite"; - -const client = new Client(); -client.setEndpoint("https://cloud.appwrite.io/v1"); -client.setProject("PROJECT_ID"); - -const serialisedCookies = JSON.stringify({ - "a_session_PROJECT_ID": sessionToken, -}); - -client.headers["X-Fallback-Cookies"] = serialisedCookies; - -const account = new Account(client); -const currentUser = account.get(); -``` - -We propose a new SDK helper method to simplify this process. - -```js -import { Client, Account } from "appwrite"; - -const client = new Client(); -client.setEndpoint("https://cloud.appwrite.io/v1"); -client.setProject("PROJECT_ID"); - -client.setSession(sessionToken); - -const account = new Account(client); -const currentUser = account.get(); -``` - -**Solution #4: Persisting cookie sessions on client** - -On the web, SSR applications will need to set cookies under the SSR domain, but the cookie returned by Appwrite is set under the Appwrite domain. - -Each SSR framework has an interface for setting cookies in the response. -For example, in Next.js, you can use the [setCookie](https://nextjs.org/docs/api-reference/next/cookies#setcookie) method. -SvelteKit has a [cookie](https://kit.svelte.dev/docs#modules-cookie) module. - -For Next.js, the code would look like this: - -```js - -import { cookies } from "next/headers"; - -const cookieList = cookies() -cookieList.set({ - name: "my_cookie_name", - value: session.token, - path: "/", - sameSite: "none", - secure: true, - httpOnly: true, - maxAge: session.expire, -}); -``` - -We propose a helper method for popular SSR frameworks to set the cookie in the response. - -```js -import { cookies } from "next/headers"; -import { createSessionCookie } from "appwrite/nextjs"; - -const cookieList = cookies() -cookieList.set(createSessionCookie(session, 'my_cookie_name')); -``` - - - - - - - -### API Endpoints - - - -### Data Structure - - - -### Supporting Libraries - - - -### Breaking Changes - - - -### Reliability (Tests & Benchmarks) - -#### Scaling - - - -#### Benchmarks - - - -#### Tests (UI, Unit, E2E) - - - -### Documentation & Content - - - -### Prior art - -[prior-art]: #prior-art - - - -### Unresolved questions - -[unresolved-questions]: #unresolved-questions - - - - - -### Future possibilities - -[future-possibilities]: #future-possibilities - - - - diff --git a/021-server-side-rendering/021-server-side-rendering.md b/021-server-side-rendering/021-server-side-rendering.md new file mode 100644 index 0000000..6a6c013 --- /dev/null +++ b/021-server-side-rendering/021-server-side-rendering.md @@ -0,0 +1,304 @@ +# Server Side Rendering + +- Implementation Owner: @loks0n +- Start Date: 31-08-2023 +- Target Date: Unknown + +## Summary + +[summary]: #summary + +Appwrite Auth is currently tailored towards client side rendered (CSR) applications. This RFC proposes to add support for server side rendered (SSR) applications. + +## Problem Statement (Step 1) + +[problem-statement]: #problem-statement + +**What problem are you trying to solve?** + +Many popular web frameworks, such as Next.js, Nuxt.jsm and SvelteKit, support and recommend SSR, by default. When developers attempt to use Appwrite Auth with these frameworks, they run into issues with the current implementation. + +SSR is popular for a number of reasons: + +- It enables search engines to crawl the site and index the content +- It improves performance by reducing the time to first render, and reducing the amount of JavaScript required to render the page +- It improves accessibility by ensuring that the page is usable even if JavaScript is disabled +- It prevents flash of unauthenticated content. + +**Problem #1: Accessing basic sessions** + +To authenticate using anonymous sessions, email-password sessions and magic URL sessions, the Appwrite SDKs make a POST request to the relevant endpoint. The response body contains the session ID, but not the + +The SDK currently obscures the session cookie value with the [call method](https://github.com/appwrite/sdk-for-node/blob/aaea14a36d5b7daac859eaa8dc44d2253fbcbcef/lib/client.js#L120C86-L120C86) which only returns the response body. + +A popular hacky workaround for this involves making a manual fetch request, bypassing the SDK and parsing the cookie from the response headers. + +```js +import { parse } from "set-cookie-parser"; + +const response = await fetch( + `https://cloud.appwrite.io/v1/account/sessions/anonymous`, + { + method: "POST", + headers: { + "x-appwrite-project": "PROJECT_ID", + }, + } +); + +const cookies = response.headers.get("set-cookie") || ""; +const sessionCookie = parse(cookies).find((cookie) => + cookie.name.startsWith("a_session") +); +const sessionToken = sessionCookie?.value; +``` + +The SDK for flutter has a similiar problem, but bypasses it by adding and interceptor to the Client requests. The interceptor sets cookies (in the apps 'cookie jar') when receiving set-cookie responses, and retrieves the cookie when making requests. For server side SDKs, this is not possible, as there isn't an equivalent method persistent storage. + +**Problem #2: Accessing OAuth2 sessions** + +The current oauth2 flow looks something like this: + +![CSR OAuth2 Flow Sequence Diagram](csr-oauth-flow.png) + +1. Browser makes a GET request to the Appwrite API. +2. Appwrite API redirects the browser to the OAuth2 provider. +3. User authenticates with the OAuth2 provider. +4. OAuth2 provider redirects the browser back to the Appwrite API. +5. Appwrite API sets the session cookie on the Appwrite domain. +6. Appwrite API redirects the browser back to the client application. + +This is incompatible with SSR applications, because the session cookie is set on the Appwrite domain, and not the SSR domain. + +Interestingly, there is an undocumented workaround for this. If the developer sets the success parameter to `{SSR_DOMAIN}/auth/oauth2/success` the Appwrite API will include the session cookie as a query parameter in the redirect URL. [Source here](https://github.com/appwrite/appwrite/blob/3f3d518f3664bcab281ee00b45dd2f2d387ffc72/app/controllers/api/account.php#L870). This method is vunerable to session spying attacks, as the session token is exposed in the URL, and could be used to hijack the session. + +**Problem #3: Using session tokens with the SDK** + +Now, you've got a session token, you want to make authenticated requests. For example, getting the user's account details. To set a session token on the server-side, we have to use the `X-Fallback-Cookies` header + +```js +import { Client, Account } from "appwrite"; + +const client = new Client(); +client.setEndpoint("https://cloud.appwrite.io/v1"); +client.setProject("PROJECT_ID"); + +const serialisedCookies = JSON.stringify({ + a_session_PROJECT_ID: sessionToken, +}); + +client.headers["X-Fallback-Cookies"] = serialisedCookies; + +const account = new Account(client); +const currentUser = account.get(); +``` + +## Design proposal (Step 2) + +[design-proposal]: #design-proposal + +**Problem #1: Solution A - Return session token in response body** + +Return the token within the session object, resulting in the follow example code: + +```js +import { Client, Account } from "appwrite"; + +const client = new Client(); +client.setEndpoint("https://cloud.appwrite.io/v1"); +client.setProject("PROJECT_ID"); + +const account = new Account(client); +const session = await account.createAnonymousSession(); +const sessionToken = session.token; +``` + +**Problem #1: Solution B - Include headers within the response** + +Return the session cookie in the response headers. + +```js +import { parse } from "set-cookie-parser"; +import { Client, Account } from "appwrite"; + +const client = new Client(); +client.setEndpoint("https://cloud.appwrite.io/v1"); +client.setProject("PROJECT_ID"); + +const account = new Account(client); +const session = await account.createAnonymousSession(); + +const sessionToken = parse(session.headers["set-cookie"]).find((cookie) => + cookie.name.startsWith("a_session") +).value; +``` + +**Problem #2: Solution A - Temporary OAuth2 token exchange for session** + +- Modify the oauth2 flow to include a temporary token in the final redirect. +- Implement a new endpoint, or extend the existing functionality of the magic URL endpoint, to exchange the temporary token for a session token. + +![SSR OAuth2 Flow Sequence Diagram](ssr-oauth-flow.png) + +1. Browser makes a GET request to the SSR application. +2. SSR application makes a GET request to the Appwrite API. +3. Appwrite API redirects the SSR application to the OAuth2 provider. +4. The SSR application redirects the client to the OAuth2 provider. +5. User authenticates with the OAuth2 provider. +6. OAuth2 provider redirects the browser back to the Appwrite API. +7. Appwrite API sets the session cookie on the Appwrite domain. +8. Appwrite API redirects the browser back to the client application. **Now, the redirect URL includes a userId & temporary token.** e.g. `myssrapp.com/oauth2/success?userId=loks0n&token=TEMPORARY_TOKEN` +9. The SSR application makes a POST request to the Appwrite API to exchange the temporary token for a session token. + +The SSR application must set up the success page to call the exchange endpoint. The page can then set session cookie on the SSR domain. +` + +**Problem #3: Solution A - setSession helper method** + +A new SDK helper method, called `setSession`, to set the session token of future requests. + +```js +import { Client, Account } from "appwrite"; + +const client = new Client(); +client.setEndpoint("https://cloud.appwrite.io/v1"); +client.setProject("PROJECT_ID"); + +client.setSession(sessionToken); + +const account = new Account(client); +const currentUser = account.get(); +``` + + + +### New API Endpoints + +**PUT /v1/account/sessions/oauth/exchange** - Exchange a temporary OAuth2 token for a session token. + +**Request** + +| Name | Type | Description | +| ------ | ------ | ----------------------- | +| token | String | Temporary OAuth2 token. | +| userId | String | User ID. | + +**Response** + +Session object. + +### Data Structure + +**Session Object Additions** + +| Name | Type | Description | +| ------ | ------ | -------------- | +| secret | String | Session token. | + +### Documentation & Content + +#### What **docs** would support this feature? + +- SDK docs and examples for the new helper method. +- SDK docs and examples for the new token exchange endpoint. + +#### What **tutorials** (text/video) might help developers understand this feature scope, capabilities, and possible use-cases? + +- Generic Tutorial for using Appwrite for SSR +- Tutorial for using Appwrite and Next.js for SSR +- Tutorial for using Appwrite and SvelteKit for SSR + +#### What **demo applications** can help us demonstrate this feature APIs and capabilities? + +- Update Almost SSR examples. + +### Prior art + +[prior-art]: #prior-art + +- https://supabase.com/docs/guides/auth/server-side-rendering +- https://firebase.nuxtjs.org/tutorials/ssr.html +- https://github.com/gladly-team/next-firebase-auth + +### Unresolved questions + +[unresolved-questions]: #unresolved-questions + +**Problem #1** + +1.1. Which solution should we implement? A or B? + +**Problem #2** + +2.1. Should we remove the undocumented workaround? + +2.2. Do we need to add a new endpoint to exchange the temporary token for a session token? Can we reuse the existing magic URL exchange endpoint? + +2.3. The Create OAuth2 Session endpoints are not included with Server Side SDKs. Should we include them? If so, server side apps need the Location header to forward to the user. How should we make this accessible from the SDK? + +**Problem #3** + +3.1. Should the helper method be available in Server Side SDKs? How do we seperate requests that are authenticated with a session token, and requests that are authenticated with an API key? + +### Future possibilities + +[future-possibilities]: #future-possibilities + +**Cookie helper methods for SSR frameworks** + +On the web, SSR applications will need to set cookies under the SSR domain, but the cookie returned by Appwrite is set under the Appwrite domain. + +Each SSR framework has an interface for setting cookies in the response. +For example, in Next.js, you can use the [setCookie](https://nextjs.org/docs/api-reference/next/cookies#setcookie) method. +SvelteKit has a [cookie](https://kit.svelte.dev/docs#modules-cookie) module. + +For Next.js, the code would look like this: + +```js +import { cookies } from "next/headers"; + +const cookieList = cookies(); +cookieList.set({ + name: "my_cookie_name", + value: session.token, + path: "/", + sameSite: "none", + secure: true, + httpOnly: true, + maxAge: session.expire, +}); +``` + +We can provide a helper method for popular SSR frameworks to set the cookie in the response. + +```js +import { cookies } from "next/headers"; +import { createSessionCookie } from "appwrite/nextjs"; + +const cookieList = cookies(); +cookieList.set(createSessionCookie(session, "my_cookie_name")); +``` + +Popular JS frameworks worth including: + +- Next +- SvelteKit +- Nuxt +- Remix diff --git a/021-server-side-rendering/csr-oauth-flow.png b/021-server-side-rendering/csr-oauth-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..3c6f7f0b08767aaa886d1bc3d00d74a49e9fa6df GIT binary patch literal 126829 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%0AaNU+CgKr*)xZMlK|oX&Sx0zeqUz5odPC?#DRTa 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�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 Date: Tue, 12 Sep 2023 10:24:40 +0100 Subject: [PATCH 03/15] feat: para --- 021-server-side-rendering/021-server-side-rendering.md | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/021-server-side-rendering/021-server-side-rendering.md b/021-server-side-rendering/021-server-side-rendering.md index 6a6c013..75d9e6b 100644 --- a/021-server-side-rendering/021-server-side-rendering.md +++ b/021-server-side-rendering/021-server-side-rendering.md @@ -27,9 +27,8 @@ SSR is popular for a number of reasons: **Problem #1: Accessing basic sessions** -To authenticate using anonymous sessions, email-password sessions and magic URL sessions, the Appwrite SDKs make a POST request to the relevant endpoint. The response body contains the session ID, but not the - -The SDK currently obscures the session cookie value with the [call method](https://github.com/appwrite/sdk-for-node/blob/aaea14a36d5b7daac859eaa8dc44d2253fbcbcef/lib/client.js#L120C86-L120C86) which only returns the response body. +Basic sessions, such as anonymous sessions, email-password sessions and magic URL sessions, are not accessible from SSR applications using the SDK. +When a client uses the SDK to make a POST request to Appwrite, the SDK obscures the session cookie value with the [call method](https://github.com/appwrite/sdk-for-node/blob/aaea14a36d5b7daac859eaa8dc44d2253fbcbcef/lib/client.js#L120C86-L120C86) and only returns the response body. A popular hacky workaround for this involves making a manual fetch request, bypassing the SDK and parsing the cookie from the response headers. From 4a92c8a476b595fed5f9a1d47f07c60a6f58f170 Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Tue, 12 Sep 2023 10:44:58 +0100 Subject: [PATCH 04/15] feat: improvements --- .../021-server-side-rendering.md | 38 +++++++------------ 1 file changed, 13 insertions(+), 25 deletions(-) diff --git a/021-server-side-rendering/021-server-side-rendering.md b/021-server-side-rendering/021-server-side-rendering.md index 75d9e6b..6b2a105 100644 --- a/021-server-side-rendering/021-server-side-rendering.md +++ b/021-server-side-rendering/021-server-side-rendering.md @@ -52,7 +52,7 @@ const sessionCookie = parse(cookies).find((cookie) => const sessionToken = sessionCookie?.value; ``` -The SDK for flutter has a similiar problem, but bypasses it by adding and interceptor to the Client requests. The interceptor sets cookies (in the apps 'cookie jar') when receiving set-cookie responses, and retrieves the cookie when making requests. For server side SDKs, this is not possible, as there isn't an equivalent method persistent storage. +> SDK for Flutter has a similiar problem, but bypasses it by adding an 'interceptor' to requests. With any response containing a `set-cookie` header, the interceptor stores the cookies within a Flutter implementation of cookie storage. Before making any request, the session cookie is retrieved from storage and added to the request headers. **Problem #2: Accessing OAuth2 sessions** @@ -69,11 +69,12 @@ The current oauth2 flow looks something like this: This is incompatible with SSR applications, because the session cookie is set on the Appwrite domain, and not the SSR domain. -Interestingly, there is an undocumented workaround for this. If the developer sets the success parameter to `{SSR_DOMAIN}/auth/oauth2/success` the Appwrite API will include the session cookie as a query parameter in the redirect URL. [Source here](https://github.com/appwrite/appwrite/blob/3f3d518f3664bcab281ee00b45dd2f2d387ffc72/app/controllers/api/account.php#L870). This method is vunerable to session spying attacks, as the session token is exposed in the URL, and could be used to hijack the session. +> There is an undocumented workaround for SSR. To use it, when creating an OAuth2 session, set success parameter is set to `{SSR_DOMAIN}/auth/oauth2/success`. Now, Appwrite will append the session secret as a query parameter when redirecting to this URL. You can find the source code for this [here](https://github.com/appwrite/appwrite/blob/3f3d518f3664bcab281ee00b45dd2f2d387ffc72/app/controllers/api/account.php#L870). +> Although this workaround has good developer experience, it is not secure. The session secret is exposed in the URL, and can be intercepted. **Problem #3: Using session tokens with the SDK** -Now, you've got a session token, you want to make authenticated requests. For example, getting the user's account details. To set a session token on the server-side, we have to use the `X-Fallback-Cookies` header +After acquiring a session token, you want to make authenticated requests. For example, getting the user's account details. Currently, to set a session token on the server-side, we have to set the `X-Fallback-Cookies` header. ```js import { Client, Account } from "appwrite"; @@ -89,9 +90,11 @@ const serialisedCookies = JSON.stringify({ client.headers["X-Fallback-Cookies"] = serialisedCookies; const account = new Account(client); -const currentUser = account.get(); +const currentUser = await account.get(); ``` +This is not intuitive, and requires the developer to understanding details of Appwrite that don't need to be exposed. + ## Design proposal (Step 2) [design-proposal]: #design-proposal @@ -154,7 +157,7 @@ The SSR application must set up the success page to call the exchange endpoint. **Problem #3: Solution A - setSession helper method** -A new SDK helper method, called `setSession`, to set the session token of future requests. +A new SDK helper method, called `setSession`, `setToken`, `setSecret`, or `setSessionSecret` to set the session token of future requests. ```js import { Client, Account } from "appwrite"; @@ -166,28 +169,9 @@ client.setProject("PROJECT_ID"); client.setSession(sessionToken); const account = new Account(client); -const currentUser = account.get(); +const currentUser = await account.get(); ``` - - ### New API Endpoints **PUT /v1/account/sessions/oauth/exchange** - Exchange a temporary OAuth2 token for a session token. @@ -256,6 +240,10 @@ Session object. 3.1. Should the helper method be available in Server Side SDKs? How do we seperate requests that are authenticated with a session token, and requests that are authenticated with an API key? +**General** + +4.1. Incorporating some of these SSR changes reduces the distinction between the Server Side and Client Side SDKs. Which SDKs would be recommended for SSR applications? + ### Future possibilities [future-possibilities]: #future-possibilities From a249bb2dc4ffd2fe7e4209c545f2dc6d773ac379 Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Tue, 12 Sep 2023 11:47:31 +0100 Subject: [PATCH 05/15] feat: clarify oauth2 flows --- .../021-server-side-rendering.md | 41 +++++++++++-------- 1 file changed, 23 insertions(+), 18 deletions(-) diff --git a/021-server-side-rendering/021-server-side-rendering.md b/021-server-side-rendering/021-server-side-rendering.md index 6b2a105..1833ef4 100644 --- a/021-server-side-rendering/021-server-side-rendering.md +++ b/021-server-side-rendering/021-server-side-rendering.md @@ -56,20 +56,22 @@ const sessionToken = sessionCookie?.value; **Problem #2: Accessing OAuth2 sessions** -The current oauth2 flow looks something like this: +Here's a visualisation of the current OAuth2 flow: ![CSR OAuth2 Flow Sequence Diagram](csr-oauth-flow.png) -1. Browser makes a GET request to the Appwrite API. -2. Appwrite API redirects the browser to the OAuth2 provider. -3. User authenticates with the OAuth2 provider. -4. OAuth2 provider redirects the browser back to the Appwrite API. -5. Appwrite API sets the session cookie on the Appwrite domain. -6. Appwrite API redirects the browser back to the client application. +Step by step: + +1. Client makes a 'Create OAuth2 Session' request to the Appwrite,containing the provider, and a success authentication redirect URL. +2. Appwrite returns a URL for a page to authenticate with the OAuth2 provider. +3. User is redirected to the authentication URL, and authenticates with the OAuth2 provider. +4. OAuth2 provider redirects the browser back to Appwrite. +5. Appwrite sets the session cookie on the Appwrite domain, and redirects the browser to the success URL. This is incompatible with SSR applications, because the session cookie is set on the Appwrite domain, and not the SSR domain. -> There is an undocumented workaround for SSR. To use it, when creating an OAuth2 session, set success parameter is set to `{SSR_DOMAIN}/auth/oauth2/success`. Now, Appwrite will append the session secret as a query parameter when redirecting to this URL. You can find the source code for this [here](https://github.com/appwrite/appwrite/blob/3f3d518f3664bcab281ee00b45dd2f2d387ffc72/app/controllers/api/account.php#L870). +> There is an undocumented workaround for SSR. To use it, when creating an OAuth2 session, set success parameter is set to `{SSR_DOMAIN}/auth/oauth2/success`. +> Now, Appwrite will append the session secret as a query parameter when redirecting to this URL. You can find the source code for this [here](https://github.com/appwrite/appwrite/blob/3f3d518f3664bcab281ee00b45dd2f2d387ffc72/app/controllers/api/account.php#L870). > Although this workaround has good developer experience, it is not secure. The session secret is exposed in the URL, and can be intercepted. **Problem #3: Using session tokens with the SDK** @@ -138,19 +140,22 @@ const sessionToken = parse(session.headers["set-cookie"]).find((cookie) => **Problem #2: Solution A - Temporary OAuth2 token exchange for session** - Modify the oauth2 flow to include a temporary token in the final redirect. -- Implement a new endpoint, or extend the existing functionality of the magic URL endpoint, to exchange the temporary token for a session token. +- Add a new endpoint, to exchange the temporary token for a session token. + +Here's a visualisation of the new flow: ![SSR OAuth2 Flow Sequence Diagram](ssr-oauth-flow.png) -1. Browser makes a GET request to the SSR application. -2. SSR application makes a GET request to the Appwrite API. -3. Appwrite API redirects the SSR application to the OAuth2 provider. -4. The SSR application redirects the client to the OAuth2 provider. -5. User authenticates with the OAuth2 provider. -6. OAuth2 provider redirects the browser back to the Appwrite API. -7. Appwrite API sets the session cookie on the Appwrite domain. -8. Appwrite API redirects the browser back to the client application. **Now, the redirect URL includes a userId & temporary token.** e.g. `myssrapp.com/oauth2/success?userId=loks0n&token=TEMPORARY_TOKEN` -9. The SSR application makes a POST request to the Appwrite API to exchange the temporary token for a session token. +Step by step: + +1. Client makes a 'Create OAuth2 Session' request to the Server, containing the user specified provider. +2. Server makes a 'Create OAuth2 Session' request to Appwrite, containing the provider, and a success authentication redirect URL. +3. Appwrite returns a URL for a page to authenticate with the OAuth2 provider. +4. Server returns the authentication URL to the Client. +5. User is redirected to the authentication URL, and authenticates with the OAuth2 provider. +6. OAuth2 provider redirects the browser back to Appwrite. +7. Appwrite sets the session cookie on the Appwrite domain, and redirects the browser to the success URL, **which now includes a userId & temporary token.** e.g. `myssrapp.com/oauth2/success?userId=387asdf7rh42346&token=adfh38khjasd83j` +8. Server exchanges the temporary token for a session token, using the new exchange endpoint, and sets the session cookie on the Server domain. The SSR application must set up the success page to call the exchange endpoint. The page can then set session cookie on the SSR domain. ` From 62615810469d29bc3518041fb8285c44faab644f Mon Sep 17 00:00:00 2001 From: "Luke B. Silver" <22452787+loks0n@users.noreply.github.com> Date: Fri, 15 Sep 2023 12:54:43 +0100 Subject: [PATCH 06/15] Update 021-server-side-rendering/021-server-side-rendering.md Co-authored-by: Thomas G. Lopes <26071571+TGlide@users.noreply.github.com> --- 021-server-side-rendering/021-server-side-rendering.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/021-server-side-rendering/021-server-side-rendering.md b/021-server-side-rendering/021-server-side-rendering.md index 1833ef4..c0f9287 100644 --- a/021-server-side-rendering/021-server-side-rendering.md +++ b/021-server-side-rendering/021-server-side-rendering.md @@ -16,7 +16,7 @@ Appwrite Auth is currently tailored towards client side rendered (CSR) applicati **What problem are you trying to solve?** -Many popular web frameworks, such as Next.js, Nuxt.jsm and SvelteKit, support and recommend SSR, by default. When developers attempt to use Appwrite Auth with these frameworks, they run into issues with the current implementation. +Many popular web frameworks, such as Next.js, Nuxt.js and SvelteKit, support and recommend SSR, by default. When developers attempt to use Appwrite Auth with these frameworks, they run into issues with the current implementation. SSR is popular for a number of reasons: From d48a2295061468a887a202754d91b321500ad0d1 Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Fri, 15 Sep 2023 13:28:23 +0100 Subject: [PATCH 07/15] feat: restructure --- .../021-server-side-rendering.md | 153 ++++++++---------- 1 file changed, 65 insertions(+), 88 deletions(-) diff --git a/021-server-side-rendering/021-server-side-rendering.md b/021-server-side-rendering/021-server-side-rendering.md index c0f9287..0c606c6 100644 --- a/021-server-side-rendering/021-server-side-rendering.md +++ b/021-server-side-rendering/021-server-side-rendering.md @@ -25,7 +25,11 @@ SSR is popular for a number of reasons: - It improves accessibility by ensuring that the page is usable even if JavaScript is disabled - It prevents flash of unauthenticated content. -**Problem #1: Accessing basic sessions** +## Design proposal (Step 2) + +[design-proposal]: #design-proposal + +### Issue #1: Accessing basic sessions Basic sessions, such as anonymous sessions, email-password sessions and magic URL sessions, are not accessible from SSR applications using the SDK. When a client uses the SDK to make a POST request to Appwrite, the SDK obscures the session cookie value with the [call method](https://github.com/appwrite/sdk-for-node/blob/aaea14a36d5b7daac859eaa8dc44d2253fbcbcef/lib/client.js#L120C86-L120C86) and only returns the response body. @@ -54,90 +58,51 @@ const sessionToken = sessionCookie?.value; > SDK for Flutter has a similiar problem, but bypasses it by adding an 'interceptor' to requests. With any response containing a `set-cookie` header, the interceptor stores the cookies within a Flutter implementation of cookie storage. Before making any request, the session cookie is retrieved from storage and added to the request headers. -**Problem #2: Accessing OAuth2 sessions** - -Here's a visualisation of the current OAuth2 flow: - -![CSR OAuth2 Flow Sequence Diagram](csr-oauth-flow.png) - -Step by step: +#### Proposed Solution -1. Client makes a 'Create OAuth2 Session' request to the Appwrite,containing the provider, and a success authentication redirect URL. -2. Appwrite returns a URL for a page to authenticate with the OAuth2 provider. -3. User is redirected to the authentication URL, and authenticates with the OAuth2 provider. -4. OAuth2 provider redirects the browser back to Appwrite. -5. Appwrite sets the session cookie on the Appwrite domain, and redirects the browser to the success URL. +Return the token within the session object. -This is incompatible with SSR applications, because the session cookie is set on the Appwrite domain, and not the SSR domain. - -> There is an undocumented workaround for SSR. To use it, when creating an OAuth2 session, set success parameter is set to `{SSR_DOMAIN}/auth/oauth2/success`. -> Now, Appwrite will append the session secret as a query parameter when redirecting to this URL. You can find the source code for this [here](https://github.com/appwrite/appwrite/blob/3f3d518f3664bcab281ee00b45dd2f2d387ffc72/app/controllers/api/account.php#L870). -> Although this workaround has good developer experience, it is not secure. The session secret is exposed in the URL, and can be intercepted. - -**Problem #3: Using session tokens with the SDK** - -After acquiring a session token, you want to make authenticated requests. For example, getting the user's account details. Currently, to set a session token on the server-side, we have to set the `X-Fallback-Cookies` header. +Developers can then access the token like this: ```js -import { Client, Account } from "appwrite"; +import { Client, Account } from "node-appwrite"; const client = new Client(); client.setEndpoint("https://cloud.appwrite.io/v1"); client.setProject("PROJECT_ID"); -const serialisedCookies = JSON.stringify({ - a_session_PROJECT_ID: sessionToken, -}); - -client.headers["X-Fallback-Cookies"] = serialisedCookies; - const account = new Account(client); -const currentUser = await account.get(); +const session = await account.createAnonymousSession(); +const sessionSecret = session.secret; ``` -This is not intuitive, and requires the developer to understanding details of Appwrite that don't need to be exposed. - -## Design proposal (Step 2) - -[design-proposal]: #design-proposal - -**Problem #1: Solution A - Return session token in response body** - -Return the token within the session object, resulting in the follow example code: - -```js -import { Client, Account } from "appwrite"; +**Session Object Additions** -const client = new Client(); -client.setEndpoint("https://cloud.appwrite.io/v1"); -client.setProject("PROJECT_ID"); +| Name | Type | Description | +| ------ | ------ | -------------- | +| secret | String | Session token. | -const account = new Account(client); -const session = await account.createAnonymousSession(); -const sessionToken = session.token; -``` +### Issue #2: Accessing OAuth2 sessions -**Problem #1: Solution B - Include headers within the response** +Here's a visualisation of the current OAuth2 flow: -Return the session cookie in the response headers. +![CSR OAuth2 Flow Sequence Diagram](csr-oauth-flow.png) -```js -import { parse } from "set-cookie-parser"; -import { Client, Account } from "appwrite"; +Step by step: -const client = new Client(); -client.setEndpoint("https://cloud.appwrite.io/v1"); -client.setProject("PROJECT_ID"); +1. Client makes a 'Create OAuth2 Session' request to the Appwrite,containing the provider, and a success authentication redirect URL. +2. Appwrite returns a URL for a page to authenticate with the OAuth2 provider. +3. User is redirected to the authentication URL, and authenticates with the OAuth2 provider. +4. OAuth2 provider redirects the browser back to Appwrite. +5. Appwrite sets the session cookie on the Appwrite domain, and redirects the browser to the success URL. -const account = new Account(client); -const session = await account.createAnonymousSession(); +This is incompatible with SSR applications, because the session cookie is set on the Appwrite domain, and not the SSR domain. -const sessionToken = parse(session.headers["set-cookie"]).find((cookie) => - cookie.name.startsWith("a_session") -).value; -``` +> There is an undocumented workaround for SSR. To use it, when creating an OAuth2 session, set success parameter is set to `{SSR_DOMAIN}/auth/oauth2/success`. +> Now, Appwrite will append the session secret as a query parameter when redirecting to this URL. You can find the source code for this [here](https://github.com/appwrite/appwrite/blob/3f3d518f3664bcab281ee00b45dd2f2d387ffc72/app/controllers/api/account.php#L870). +> Although this workaround has good developer experience, it is not secure. The session secret is exposed in the URL, and can be intercepted. -**Problem #2: Solution A - Temporary OAuth2 token exchange for session** +#### Proposed Solution - Modify the oauth2 flow to include a temporary token in the final redirect. - Add a new endpoint, to exchange the temporary token for a session token. @@ -158,11 +123,25 @@ Step by step: 8. Server exchanges the temporary token for a session token, using the new exchange endpoint, and sets the session cookie on the Server domain. The SSR application must set up the success page to call the exchange endpoint. The page can then set session cookie on the SSR domain. -` -**Problem #3: Solution A - setSession helper method** +##### New Exchange Token Endpoint -A new SDK helper method, called `setSession`, `setToken`, `setSecret`, or `setSessionSecret` to set the session token of future requests. +**PUT /v1/account/sessions/oauth/exchange** - Exchange a temporary OAuth2 token for a session token. + +**Request** + +| Name | Type | Description | +| ------ | ------ | ----------------------- | +| token | String | Temporary OAuth2 token. | +| userId | String | User ID. | + +**Response** + +Session object. + +#### Issue #3: Using session tokens + +After acquiring a session token, you want to make authenticated requests. For example, getting the user's account details. Currently, to set a session token on the server-side, we have to set the `X-Fallback-Cookies` header. ```js import { Client, Account } from "appwrite"; @@ -171,34 +150,34 @@ const client = new Client(); client.setEndpoint("https://cloud.appwrite.io/v1"); client.setProject("PROJECT_ID"); -client.setSession(sessionToken); +const serialisedCookies = JSON.stringify({ + a_session_PROJECT_ID: sessionToken, +}); + +client.headers["X-Fallback-Cookies"] = serialisedCookies; const account = new Account(client); const currentUser = await account.get(); ``` -### New API Endpoints - -**PUT /v1/account/sessions/oauth/exchange** - Exchange a temporary OAuth2 token for a session token. +This is not intuitive, and requires the developer to understanding details of Appwrite that don't need to be exposed. -**Request** +#### Proposed Solution -| Name | Type | Description | -| ------ | ------ | ----------------------- | -| token | String | Temporary OAuth2 token. | -| userId | String | User ID. | - -**Response** +A new SDK helper method, called `setSession`, `setToken`, `setSecret`, or `setSessionSecret` to set the session token of future requests. -Session object. +```js +import { Client, Account } from "appwrite"; -### Data Structure +const client = new Client(); +client.setEndpoint("https://cloud.appwrite.io/v1"); +client.setProject("PROJECT_ID"); -**Session Object Additions** +client.setSession(sessionToken); -| Name | Type | Description | -| ------ | ------ | -------------- | -| secret | String | Session token. | +const account = new Account(client); +const currentUser = await account.get(); +``` ### Documentation & Content @@ -211,6 +190,8 @@ Session object. - Generic Tutorial for using Appwrite for SSR - Tutorial for using Appwrite and Next.js for SSR +- Tutorial for using Appwrite and Nuxt.js for SSR +- Tutorial for using Appwrite and Remix for SSR - Tutorial for using Appwrite and SvelteKit for SSR #### What **demo applications** can help us demonstrate this feature APIs and capabilities? @@ -229,10 +210,6 @@ Session object. [unresolved-questions]: #unresolved-questions -**Problem #1** - -1.1. Which solution should we implement? A or B? - **Problem #2** 2.1. Should we remove the undocumented workaround? From 4aaf79df53ea0453db34fe4ff3f35cf0ee625cab Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Tue, 19 Sep 2023 14:50:34 +0100 Subject: [PATCH 08/15] feat: clarifications --- .../021-server-side-rendering.md | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/021-server-side-rendering/021-server-side-rendering.md b/021-server-side-rendering/021-server-side-rendering.md index 0c606c6..57e9538 100644 --- a/021-server-side-rendering/021-server-side-rendering.md +++ b/021-server-side-rendering/021-server-side-rendering.md @@ -4,6 +4,7 @@ - Start Date: 31-08-2023 - Target Date: Unknown + ## Summary [summary]: #summary @@ -25,20 +26,23 @@ SSR is popular for a number of reasons: - It improves accessibility by ensuring that the page is usable even if JavaScript is disabled - It prevents flash of unauthenticated content. + ## Design proposal (Step 2) [design-proposal]: #design-proposal -### Issue #1: Accessing basic sessions +### Issue #1: Accessing sessions -Basic sessions, such as anonymous sessions, email-password sessions and magic URL sessions, are not accessible from SSR applications using the SDK. -When a client uses the SDK to make a POST request to Appwrite, the SDK obscures the session cookie value with the [call method](https://github.com/appwrite/sdk-for-node/blob/aaea14a36d5b7daac859eaa8dc44d2253fbcbcef/lib/client.js#L120C86-L120C86) and only returns the response body. +When using Appwrite basic authentication methods, such as anonymous sessions, email-password sessions, and magic URL sessions, the session secret is not accessible using the SDK. -A popular hacky workaround for this involves making a manual fetch request, bypassing the SDK and parsing the cookie from the response headers. +The SDK obscures the session cookie value with the [call method](https://github.com/appwrite/sdk-for-node/blob/aaea14a36d5b7daac859eaa8dc44d2253fbcbcef/lib/client.js#L120C86-L120C86) and only returns the response body. For client-side applications, this is sufficient, because the `set-cookie` header is read by the browser, and the cookie is automatically stored in the browser's cookie storage. + +A popular workaround for this is to make a manual request, bypassing the SDK and parsing the cookie from the response headers. ```js import { parse } from "set-cookie-parser"; +// Make a manual request to create an anonymous session const response = await fetch( `https://cloud.appwrite.io/v1/account/sessions/anonymous`, { @@ -49,14 +53,15 @@ const response = await fetch( } ); +// Parse the session cookie from the response headers const cookies = response.headers.get("set-cookie") || ""; const sessionCookie = parse(cookies).find((cookie) => cookie.name.startsWith("a_session") ); -const sessionToken = sessionCookie?.value; +const sessionSecret = sessionCookie?.value; ``` -> SDK for Flutter has a similiar problem, but bypasses it by adding an 'interceptor' to requests. With any response containing a `set-cookie` header, the interceptor stores the cookies within a Flutter implementation of cookie storage. Before making any request, the session cookie is retrieved from storage and added to the request headers. +> SDK for Flutter bypasses this problem by adding an 'interceptor' to requests. With any response containing a `set-cookie` header, the interceptor stores the cookies within a Flutter implementation of cookie storage. Before making any request, the session cookie is retrieved from storage and added to the request headers. #### Proposed Solution @@ -76,11 +81,6 @@ const session = await account.createAnonymousSession(); const sessionSecret = session.secret; ``` -**Session Object Additions** - -| Name | Type | Description | -| ------ | ------ | -------------- | -| secret | String | Session token. | ### Issue #2: Accessing OAuth2 sessions @@ -90,7 +90,7 @@ Here's a visualisation of the current OAuth2 flow: Step by step: -1. Client makes a 'Create OAuth2 Session' request to the Appwrite,containing the provider, and a success authentication redirect URL. +1. Client makes a 'Create OAuth2 Session' request to the Appwrite, containing the provider, and a success authentication redirect URL. 2. Appwrite returns a URL for a page to authenticate with the OAuth2 provider. 3. User is redirected to the authentication URL, and authenticates with the OAuth2 provider. 4. OAuth2 provider redirects the browser back to Appwrite. @@ -104,6 +104,7 @@ This is incompatible with SSR applications, because the session cookie is set on #### Proposed Solution +- Add the Create OAuth2 session endpoints to the Server SDKs. - Modify the oauth2 flow to include a temporary token in the final redirect. - Add a new endpoint, to exchange the temporary token for a session token. @@ -139,6 +140,7 @@ The SSR application must set up the success page to call the exchange endpoint. Session object. + #### Issue #3: Using session tokens After acquiring a session token, you want to make authenticated requests. For example, getting the user's account details. Currently, to set a session token on the server-side, we have to set the `X-Fallback-Cookies` header. @@ -151,7 +153,7 @@ client.setEndpoint("https://cloud.appwrite.io/v1"); client.setProject("PROJECT_ID"); const serialisedCookies = JSON.stringify({ - a_session_PROJECT_ID: sessionToken, + a_session_PROJECT_ID: sessionSecret, }); client.headers["X-Fallback-Cookies"] = serialisedCookies; @@ -173,12 +175,13 @@ const client = new Client(); client.setEndpoint("https://cloud.appwrite.io/v1"); client.setProject("PROJECT_ID"); -client.setSession(sessionToken); +client.setSession(session); const account = new Account(client); const currentUser = await account.get(); ``` + ### Documentation & Content #### What **docs** would support this feature? @@ -212,19 +215,18 @@ const currentUser = await account.get(); **Problem #2** -2.1. Should we remove the undocumented workaround? +2.1. Should we remove the undocumented OAuth2 SSR workaround? 2.2. Do we need to add a new endpoint to exchange the temporary token for a session token? Can we reuse the existing magic URL exchange endpoint? -2.3. The Create OAuth2 Session endpoints are not included with Server Side SDKs. Should we include them? If so, server side apps need the Location header to forward to the user. How should we make this accessible from the SDK? - **Problem #3** -3.1. Should the helper method be available in Server Side SDKs? How do we seperate requests that are authenticated with a session token, and requests that are authenticated with an API key? +3.1. What should happen if a developer uses `setSession` and `setKey` in the same request? Should the SDK throw an error, or should the `setSession` method override the `setKey` method? **General** -4.1. Incorporating some of these SSR changes reduces the distinction between the Server Side and Client Side SDKs. Which SDKs would be recommended for SSR applications? +4.1. Some of these changes reduce the distinction between the Server and Client Side SDKs. Which SDKs would be recommended for SSR applications? + ### Future possibilities From 6eba47651a046af27e8e57c5c1ab5d94c473a5b4 Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Tue, 19 Sep 2023 22:00:35 +0100 Subject: [PATCH 09/15] feat: rate limit, prebuilt pkce --- .../021-server-side-rendering.md | 41 ++++++++++++++++--- 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/021-server-side-rendering/021-server-side-rendering.md b/021-server-side-rendering/021-server-side-rendering.md index 57e9538..c070e6c 100644 --- a/021-server-side-rendering/021-server-side-rendering.md +++ b/021-server-side-rendering/021-server-side-rendering.md @@ -181,6 +181,28 @@ const account = new Account(client); const currentUser = await account.get(); ``` +### Issue #4: Rate limiting + +Many Appwrite endpoints are rate-limited by IP address to prevent abuse. For example, the Create Account endpoint is limited to 10 requests per minute. Server-side rendered applications will be making requests from the same IP address. This means that if multiple users are using the application at the same time, they will be sharing the same rate limit. + +#### Proposed Solution A + +Allow developers to use `setKey` and `setSession` in combination. In this case, Appwrite should will use the session token for authorization, but disable rate limiting for the request. This solution only works for Server Side SDKs, as the client-side SDKs do not have the `setKey` method. + +```js +import { Client, Account } from "node-appwrite"; + +const client = new Client(); + +client.setEndpoint("https://cloud.appwrite.io/v1"); +client.setProject("PROJECT_ID"); +client.setKey("API_KEY"); +client.setSession("SESSION_SECRET"); +``` + +#### Proposed Solution B + +Use the existing 'Platforms' configuration. Developers should be able to create a new 'Server' type platform, and which will disable rate limiting for requests made from that platform. Pontentially not secure, as the hostname can be spoofed. ### Documentation & Content @@ -219,20 +241,27 @@ const currentUser = await account.get(); 2.2. Do we need to add a new endpoint to exchange the temporary token for a session token? Can we reuse the existing magic URL exchange endpoint? -**Problem #3** - -3.1. What should happen if a developer uses `setSession` and `setKey` in the same request? Should the SDK throw an error, or should the `setSession` method override the `setKey` method? - **General** 4.1. Some of these changes reduce the distinction between the Server and Client Side SDKs. Which SDKs would be recommended for SSR applications? - ### Future possibilities [future-possibilities]: #future-possibilities -**Cookie helper methods for SSR frameworks** +**OAuth2 exchange endpoint pre-built for popular frameworks** + +The OAuth2 exchange endpoint can be pre-built for popular SSR frameworks, such as Next.js, Nuxt.js, SvelteKit, and Remix. + +For example, in Next.js, developers could import an `oauth2ExchangeEndpoint` function from the Appwrite SDK, and use it in the success page. + +```js +import { createOAuth2ExchangeEndpoint } from "appwrite/nextjs"; + +export const GET = createOAuth2ExchangeEndpoint('my_cookie_name'); +``` + +**Cookie helper methods for popular frameworks** On the web, SSR applications will need to set cookies under the SSR domain, but the cookie returned by Appwrite is set under the Appwrite domain. From 0ee42297e45c6daf245267f2ebd9f25e8de2636f Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Wed, 20 Sep 2023 12:53:01 +0100 Subject: [PATCH 10/15] feat: upload api, prebuilt exchange endpoint --- .../021-server-side-rendering.md | 82 ++++++++++++++++++- 1 file changed, 81 insertions(+), 1 deletion(-) diff --git a/021-server-side-rendering/021-server-side-rendering.md b/021-server-side-rendering/021-server-side-rendering.md index c070e6c..d58d445 100644 --- a/021-server-side-rendering/021-server-side-rendering.md +++ b/021-server-side-rendering/021-server-side-rendering.md @@ -204,6 +204,50 @@ client.setSession("SESSION_SECRET"); Use the existing 'Platforms' configuration. Developers should be able to create a new 'Server' type platform, and which will disable rate limiting for requests made from that platform. Pontentially not secure, as the hostname can be spoofed. +### Issue #5: Web SDK File Uploads + +The Web SDK only accepts a `File` object when uploading files. This is not compatible with SSR frameworks, as the `File` object is only available in the browser. + +There is a workaround for this, which involves importing the `File` polyfill from the `formdata-node` package, and converting the blob to an array buffer. + +```js +import fetch from 'node-fetch'; +import { FormData, File } from 'formdata-node'; + +export const uploadFile = async (blob: Blob) => { + const path = `/storage/buckets/${BUCKET_ID}/files`; + const uri = new URL(ENDPOINT + path); + + const formData = new FormData(); + const file = new File([await blob.arrayBuffer()], blob.name); + formData.set('file', file); + formData.set('fileId', ID.unique()); + + const res = await fetch(uri.toString(), { + method: 'post', + headers: { + ...client.headers, + 'x-appwrite-project': PROJECT_ID, + }, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + body: formData as any, + }); + + console.log(res); + + return res; +}; +``` + +#### Proposed Solution + +Match the existing Node SDK which accepts an InputFile helper object. + +```js +storage.createFile('[BUCKET_ID]', '[FILE_ID]', InputFile.fromBlob(blob, 'file.jpg')); +``` + + ### Documentation & Content #### What **docs** would support this feature? @@ -253,7 +297,43 @@ Use the existing 'Platforms' configuration. Developers should be able to create The OAuth2 exchange endpoint can be pre-built for popular SSR frameworks, such as Next.js, Nuxt.js, SvelteKit, and Remix. -For example, in Next.js, developers could import an `oauth2ExchangeEndpoint` function from the Appwrite SDK, and use it in the success page. +For example, in Next.js, the code would currently look like this: + +```js +import { NextResponse } from 'next/server' +import { cookies } from 'next/headers' +import { Client, Account } from 'appwrite' + +export async function GET(request: Request) { + const { searchParams } = new URL(request.url) + + const userId = searchParams.get('userId') + const token = searchParams.get('token') + + const client = new Client() + client.setEndpoint('https://cloud.appwrite.io/v1') + client.setProject('PROJECT_ID') + + const account = new Account(client) + const session = await account.exchangeTokenForSession(userId, token) + + return NextResponse.redirect('/', { + headers: { + 'Set-Cookie': cookieList.set({ + name: 'my_cookie_name', + value: session.secret, + path: '/', + sameSite: 'none', + secure: true, + httpOnly: true, + maxAge: session.expire, + }), + }, + }) +} +``` + +With a prebuilt endpoint, developers could import an `oauth2ExchangeEndpoint` function from the Appwrite SDK, and use it in an API route: ```js import { createOAuth2ExchangeEndpoint } from "appwrite/nextjs"; From 136a1159e0cf2dfbb64573aa0bcadce5327bd1c9 Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Fri, 22 Sep 2023 15:43:40 +0100 Subject: [PATCH 11/15] feat: add ratelimit problem table --- .../021-server-side-rendering.md | 82 ++++++++++++------- 1 file changed, 54 insertions(+), 28 deletions(-) diff --git a/021-server-side-rendering/021-server-side-rendering.md b/021-server-side-rendering/021-server-side-rendering.md index d58d445..e020e8e 100644 --- a/021-server-side-rendering/021-server-side-rendering.md +++ b/021-server-side-rendering/021-server-side-rendering.md @@ -4,7 +4,6 @@ - Start Date: 31-08-2023 - Target Date: Unknown - ## Summary [summary]: #summary @@ -26,7 +25,6 @@ SSR is popular for a number of reasons: - It improves accessibility by ensuring that the page is usable even if JavaScript is disabled - It prevents flash of unauthenticated content. - ## Design proposal (Step 2) [design-proposal]: #design-proposal @@ -81,7 +79,6 @@ const session = await account.createAnonymousSession(); const sessionSecret = session.secret; ``` - ### Issue #2: Accessing OAuth2 sessions Here's a visualisation of the current OAuth2 flow: @@ -98,7 +95,7 @@ Step by step: This is incompatible with SSR applications, because the session cookie is set on the Appwrite domain, and not the SSR domain. -> There is an undocumented workaround for SSR. To use it, when creating an OAuth2 session, set success parameter is set to `{SSR_DOMAIN}/auth/oauth2/success`. +> There is an undocumented workaround for SSR. To use it, when creating an OAuth2 session, set success parameter is set to `{SSR_DOMAIN}/auth/oauth2/success`. > Now, Appwrite will append the session secret as a query parameter when redirecting to this URL. You can find the source code for this [here](https://github.com/appwrite/appwrite/blob/3f3d518f3664bcab281ee00b45dd2f2d387ffc72/app/controllers/api/account.php#L870). > Although this workaround has good developer experience, it is not secure. The session secret is exposed in the URL, and can be intercepted. @@ -140,7 +137,6 @@ The SSR application must set up the success page to call the exchange endpoint. Session object. - #### Issue #3: Using session tokens After acquiring a session token, you want to make authenticated requests. For example, getting the user's account details. Currently, to set a session token on the server-side, we have to set the `X-Fallback-Cookies` header. @@ -183,7 +179,34 @@ const currentUser = await account.get(); ### Issue #4: Rate limiting -Many Appwrite endpoints are rate-limited by IP address to prevent abuse. For example, the Create Account endpoint is limited to 10 requests per minute. Server-side rendered applications will be making requests from the same IP address. This means that if multiple users are using the application at the same time, they will be sharing the same rate limit. +Many Appwrite endpoints are rate-limited by IP address to prevent abuse. Server-side rendered applications will be making requests from the same IP address. This means that if multiple users are using the application at the same time, they will be sharing the same rate limit. + +Problematic endpoints: + +| Endpoint | Service | Current Abuse Key | Notes | +| ------------------------ | --------- | --------------------------------------------------- | ------------------------------------- | +| Create Account | Account | `url:{url},ip:{ip}` | | +| Create OAuth2 Session | Account | `ip:{ip}` | | +| List Identities | Account | `url:{url},ip:{ip}` | Easy solution: add userId | +| Delete Identity | Account | `url:{url},ip:{ip}` | Easy solution: add userId | +| Create Magic URL Session | Account | `url:{url},ip:{ip}` | | +| Create Anonymous Session | Account | `ip:{ip}` | | +| Get Account | Account | `url:{url},ip:{ip}` | Easy solution: add userId | +| Get Account Preferences | Account | `url:{url},ip:{ip}` | Easy solution: add userId | +| List Sessions | Account | `url:{url},ip:{ip}` | Easy solution: add userId | +| List Logs | Account | `url:{url},ip:{ip}` | Easy solution: add userId | +| Get Session | Account | `url:{url},ip:{ip}` | Easy solution: add userId | +| Update Name, Pass, Email | Account | `url:{url},ip:{ip}` | Easy solution: add userId | +| Update Preferences | Account | `url:{url},ip:{ip}` | Easy solution: add userId | +| Update Status | Account | `url:{url},ip:{ip}` | Easy solution: add userId | +| Delete Session(s) | Account | `url:{url},ip:{ip}` | Easy solution: add userId | +| Update OAuth2 Session | Account | `url:{url},ip:{ip}` | Easy solution: add userId | +| **Every Endpoint** | Avatars | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| Create Document | Databases | `ip:{ip},method:{method},url:{url},userId:{userId}` | userId not enough: what about guests? | +| List Documents | Databases | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| Get Document | Databases | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| Update Document | Databases | `ip:{ip},method:{method},url:{url},userId:{userId}` | userId not enough: what about guests? | +| Delete Document | Databases | `ip:{ip},method:{method},url:{url},userId:{userId}` | userId not enough: what about guests? | #### Proposed Solution A @@ -206,7 +229,7 @@ Use the existing 'Platforms' configuration. Developers should be able to create ### Issue #5: Web SDK File Uploads -The Web SDK only accepts a `File` object when uploading files. This is not compatible with SSR frameworks, as the `File` object is only available in the browser. +The Web SDK only accepts a `File` object when uploading files. This is not compatible with SSR frameworks, as the `File` object is only available in the browser. There is a workaround for this, which involves importing the `File` polyfill from the `formdata-node` package, and converting the blob to an array buffer. @@ -244,10 +267,13 @@ export const uploadFile = async (blob: Blob) => { Match the existing Node SDK which accepts an InputFile helper object. ```js -storage.createFile('[BUCKET_ID]', '[FILE_ID]', InputFile.fromBlob(blob, 'file.jpg')); +storage.createFile( + "[BUCKET_ID]", + "[FILE_ID]", + InputFile.fromBlob(blob, "file.jpg") +); ``` - ### Documentation & Content #### What **docs** would support this feature? @@ -300,36 +326,36 @@ The OAuth2 exchange endpoint can be pre-built for popular SSR frameworks, such a For example, in Next.js, the code would currently look like this: ```js -import { NextResponse } from 'next/server' -import { cookies } from 'next/headers' -import { Client, Account } from 'appwrite' - +import { NextResponse } from "next/server"; +import { cookies } from "next/headers"; +import { Client, Account } from "appwrite"; + export async function GET(request: Request) { - const { searchParams } = new URL(request.url) + const { searchParams } = new URL(request.url); - const userId = searchParams.get('userId') - const token = searchParams.get('token') + const userId = searchParams.get("userId"); + const token = searchParams.get("token"); - const client = new Client() - client.setEndpoint('https://cloud.appwrite.io/v1') - client.setProject('PROJECT_ID') + const client = new Client(); + client.setEndpoint("https://cloud.appwrite.io/v1"); + client.setProject("PROJECT_ID"); - const account = new Account(client) - const session = await account.exchangeTokenForSession(userId, token) + const account = new Account(client); + const session = await account.exchangeTokenForSession(userId, token); - return NextResponse.redirect('/', { + return NextResponse.redirect("/", { headers: { - 'Set-Cookie': cookieList.set({ - name: 'my_cookie_name', + "Set-Cookie": cookieList.set({ + name: "my_cookie_name", value: session.secret, - path: '/', - sameSite: 'none', + path: "/", + sameSite: "none", secure: true, httpOnly: true, maxAge: session.expire, }), }, - }) + }); } ``` @@ -338,7 +364,7 @@ With a prebuilt endpoint, developers could import an `oauth2ExchangeEndpoint` fu ```js import { createOAuth2ExchangeEndpoint } from "appwrite/nextjs"; -export const GET = createOAuth2ExchangeEndpoint('my_cookie_name'); +export const GET = createOAuth2ExchangeEndpoint("my_cookie_name"); ``` **Cookie helper methods for popular frameworks** From 4b236636dc56000f587f927f84d880ca3c301fff Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Fri, 22 Sep 2023 16:25:33 +0100 Subject: [PATCH 12/15] feat: problematic endpoints for rate limiting --- .../021-server-side-rendering.md | 94 +++++++++++++------ 1 file changed, 64 insertions(+), 30 deletions(-) diff --git a/021-server-side-rendering/021-server-side-rendering.md b/021-server-side-rendering/021-server-side-rendering.md index e020e8e..a2d7cf6 100644 --- a/021-server-side-rendering/021-server-side-rendering.md +++ b/021-server-side-rendering/021-server-side-rendering.md @@ -183,32 +183,70 @@ Many Appwrite endpoints are rate-limited by IP address to prevent abuse. Server- Problematic endpoints: -| Endpoint | Service | Current Abuse Key | Notes | -| ------------------------ | --------- | --------------------------------------------------- | ------------------------------------- | -| Create Account | Account | `url:{url},ip:{ip}` | | -| Create OAuth2 Session | Account | `ip:{ip}` | | -| List Identities | Account | `url:{url},ip:{ip}` | Easy solution: add userId | -| Delete Identity | Account | `url:{url},ip:{ip}` | Easy solution: add userId | -| Create Magic URL Session | Account | `url:{url},ip:{ip}` | | -| Create Anonymous Session | Account | `ip:{ip}` | | -| Get Account | Account | `url:{url},ip:{ip}` | Easy solution: add userId | -| Get Account Preferences | Account | `url:{url},ip:{ip}` | Easy solution: add userId | -| List Sessions | Account | `url:{url},ip:{ip}` | Easy solution: add userId | -| List Logs | Account | `url:{url},ip:{ip}` | Easy solution: add userId | -| Get Session | Account | `url:{url},ip:{ip}` | Easy solution: add userId | -| Update Name, Pass, Email | Account | `url:{url},ip:{ip}` | Easy solution: add userId | -| Update Preferences | Account | `url:{url},ip:{ip}` | Easy solution: add userId | -| Update Status | Account | `url:{url},ip:{ip}` | Easy solution: add userId | -| Delete Session(s) | Account | `url:{url},ip:{ip}` | Easy solution: add userId | -| Update OAuth2 Session | Account | `url:{url},ip:{ip}` | Easy solution: add userId | -| **Every Endpoint** | Avatars | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| Create Document | Databases | `ip:{ip},method:{method},url:{url},userId:{userId}` | userId not enough: what about guests? | -| List Documents | Databases | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| Get Document | Databases | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| Update Document | Databases | `ip:{ip},method:{method},url:{url},userId:{userId}` | userId not enough: what about guests? | -| Delete Document | Databases | `ip:{ip},method:{method},url:{url},userId:{userId}` | userId not enough: what about guests? | - -#### Proposed Solution A +| Endpoint | Service | Abuse Key | Notes | +| ----------------------------- | --------- | --------------------------------------------------- | ------------------------------------- | +| Create Account | Account | `url:{url},ip:{ip}` | userId not available | +| Create OAuth2 Session | Account | `ip:{ip}` | userId not available | +| List Identities | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Delete Identity | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Create Magic URL Session | Account | `url:{url},ip:{ip}` | userId not available | +| Create Anonymous Session | Account | `ip:{ip}` | userId not available | +| Get Account | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Get Account Preferences | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| List Sessions | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| List Logs | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Get Session | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Update Name, Pass, Email | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Update Preferences | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Update Status | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Delete Session(s) | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Update OAuth2 Session | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Get Credit Card Icon | Avatars | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| Get Browser Icon | Avatars | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| Get Country Flag | Avatars | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| Get Image from URL | Avatars | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| Get Favicon | Avatars | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| Get QR Code | Avatars | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| Get Initials | Avatars | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| Create Document | Databases | `ip:{ip},method:{method},url:{url},userId:{userId}` | userId not enough: what about guests? | +| List Documents | Databases | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| Get Document | Databases | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| Update Document | Databases | `ip:{ip},method:{method},url:{url},userId:{userId}` | userId not enough: what about guests? | +| Delete Document | Databases | `ip:{ip},method:{method},url:{url},userId:{userId}` | userId not enough: what about guests? | +| Create Execution | Functions | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| List Executions | Functions | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Get Execution | Functions | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Get User Locale | Locale | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| List Locale Codes | Locale | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| List Countries | Locale | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| List EU Countries | Locale | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| List Country Phone Codes | Locale | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| List Continents | Locale | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| List Currencies | Locale | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| List Languages | Locale | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| Create File | Storage | `ip:{ip},method:{method},url:{url},userId:{userId}` | userId not enough: what about guests? | +| List Files | Storage | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| Get File | Storage | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| Get File Preview | Storage | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| Get File for Download | Storage | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| Get File for View | Storage | `url:{url},ip:{ip}` | userId not enough: what about guests? | +| Update File | Storage | `ip:{ip},method:{method},url:{url},userId:{userId}` | userId not enough: what about guests? | +| Delete File | Storage | `ip:{ip},method:{method},url:{url},userId:{userId}` | userId not enough: what about guests? | +| Create Team | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| List Teams | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Get Team | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Get Team Preferences | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Update Team Name | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Update Team Preferences | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Delete Team | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Create Team Membership | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| List Team Memberships | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Get Team Membership | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Update Team Membership | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Update Team Membership Status | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | +| Delete Team Membership | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | + +#### Proposed Solution Allow developers to use `setKey` and `setSession` in combination. In this case, Appwrite should will use the session token for authorization, but disable rate limiting for the request. This solution only works for Server Side SDKs, as the client-side SDKs do not have the `setKey` method. @@ -223,10 +261,6 @@ client.setKey("API_KEY"); client.setSession("SESSION_SECRET"); ``` -#### Proposed Solution B - -Use the existing 'Platforms' configuration. Developers should be able to create a new 'Server' type platform, and which will disable rate limiting for requests made from that platform. Pontentially not secure, as the hostname can be spoofed. - ### Issue #5: Web SDK File Uploads The Web SDK only accepts a `File` object when uploading files. This is not compatible with SSR frameworks, as the `File` object is only available in the browser. From ffdc43807a8012bb82b2263b315a9abb2873d10b Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Fri, 22 Sep 2023 17:21:14 +0100 Subject: [PATCH 13/15] feat: remove non-limited endpoints --- .../021-server-side-rendering.md | 48 ------------------- 1 file changed, 48 deletions(-) diff --git a/021-server-side-rendering/021-server-side-rendering.md b/021-server-side-rendering/021-server-side-rendering.md index a2d7cf6..a709ccf 100644 --- a/021-server-side-rendering/021-server-side-rendering.md +++ b/021-server-side-rendering/021-server-side-rendering.md @@ -185,66 +185,18 @@ Problematic endpoints: | Endpoint | Service | Abuse Key | Notes | | ----------------------------- | --------- | --------------------------------------------------- | ------------------------------------- | -| Create Account | Account | `url:{url},ip:{ip}` | userId not available | | Create OAuth2 Session | Account | `ip:{ip}` | userId not available | -| List Identities | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| Delete Identity | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | | Create Magic URL Session | Account | `url:{url},ip:{ip}` | userId not available | | Create Anonymous Session | Account | `ip:{ip}` | userId not available | -| Get Account | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| Get Account Preferences | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| List Sessions | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| List Logs | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| Get Session | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| Update Name, Pass, Email | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| Update Preferences | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| Update Status | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | | Delete Session(s) | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | | Update OAuth2 Session | Account | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| Get Credit Card Icon | Avatars | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| Get Browser Icon | Avatars | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| Get Country Flag | Avatars | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| Get Image from URL | Avatars | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| Get Favicon | Avatars | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| Get QR Code | Avatars | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| Get Initials | Avatars | `url:{url},ip:{ip}` | userId not enough: what about guests? | | Create Document | Databases | `ip:{ip},method:{method},url:{url},userId:{userId}` | userId not enough: what about guests? | -| List Documents | Databases | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| Get Document | Databases | `url:{url},ip:{ip}` | userId not enough: what about guests? | | Update Document | Databases | `ip:{ip},method:{method},url:{url},userId:{userId}` | userId not enough: what about guests? | | Delete Document | Databases | `ip:{ip},method:{method},url:{url},userId:{userId}` | userId not enough: what about guests? | -| Create Execution | Functions | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| List Executions | Functions | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| Get Execution | Functions | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| Get User Locale | Locale | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| List Locale Codes | Locale | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| List Countries | Locale | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| List EU Countries | Locale | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| List Country Phone Codes | Locale | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| List Continents | Locale | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| List Currencies | Locale | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| List Languages | Locale | `url:{url},ip:{ip}` | userId not enough: what about guests? | | Create File | Storage | `ip:{ip},method:{method},url:{url},userId:{userId}` | userId not enough: what about guests? | -| List Files | Storage | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| Get File | Storage | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| Get File Preview | Storage | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| Get File for Download | Storage | `url:{url},ip:{ip}` | userId not enough: what about guests? | -| Get File for View | Storage | `url:{url},ip:{ip}` | userId not enough: what about guests? | | Update File | Storage | `ip:{ip},method:{method},url:{url},userId:{userId}` | userId not enough: what about guests? | | Delete File | Storage | `ip:{ip},method:{method},url:{url},userId:{userId}` | userId not enough: what about guests? | -| Create Team | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| List Teams | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| Get Team | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| Get Team Preferences | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| Update Team Name | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| Update Team Preferences | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| Delete Team | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | | Create Team Membership | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| List Team Memberships | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| Get Team Membership | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| Update Team Membership | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| Update Team Membership Status | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | -| Delete Team Membership | Teams | `url:{url},ip:{ip}` | ✓ Easy solution: add userId | #### Proposed Solution From 501a7cb0047c1d5dc16e4d0ca8b6d16ea41c38bc Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Fri, 22 Sep 2023 17:31:04 +0100 Subject: [PATCH 14/15] feat: add problem endpoint criteria --- 021-server-side-rendering/021-server-side-rendering.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/021-server-side-rendering/021-server-side-rendering.md b/021-server-side-rendering/021-server-side-rendering.md index a709ccf..604da13 100644 --- a/021-server-side-rendering/021-server-side-rendering.md +++ b/021-server-side-rendering/021-server-side-rendering.md @@ -183,6 +183,8 @@ Many Appwrite endpoints are rate-limited by IP address to prevent abuse. Server- Problematic endpoints: +The following endpoints have, a. an abuse-limit set, and either b. are accessible to guest role, or c. do not have userId in the abuse-key. + | Endpoint | Service | Abuse Key | Notes | | ----------------------------- | --------- | --------------------------------------------------- | ------------------------------------- | | Create OAuth2 Session | Account | `ip:{ip}` | userId not available | From a2953e44af115e0b97b45bb20bd4eb2d71c276df Mon Sep 17 00:00:00 2001 From: loks0n <22452787+loks0n@users.noreply.github.com> Date: Wed, 20 Dec 2023 15:41:14 +0000 Subject: [PATCH 15/15] chore: update --- .../021-server-side-rendering.md | 80 +++++-------------- 1 file changed, 18 insertions(+), 62 deletions(-) diff --git a/021-server-side-rendering/021-server-side-rendering.md b/021-server-side-rendering/021-server-side-rendering.md index 604da13..18f5e62 100644 --- a/021-server-side-rendering/021-server-side-rendering.md +++ b/021-server-side-rendering/021-server-side-rendering.md @@ -104,6 +104,7 @@ This is incompatible with SSR applications, because the session cookie is set on - Add the Create OAuth2 session endpoints to the Server SDKs. - Modify the oauth2 flow to include a temporary token in the final redirect. - Add a new endpoint, to exchange the temporary token for a session token. +- Deprecate the undocumented workaround, with a view to removing it in the future. Here's a visualisation of the new flow: @@ -111,20 +112,22 @@ Here's a visualisation of the new flow: Step by step: -1. Client makes a 'Create OAuth2 Session' request to the Server, containing the user specified provider. -2. Server makes a 'Create OAuth2 Session' request to Appwrite, containing the provider, and a success authentication redirect URL. -3. Appwrite returns a URL for a page to authenticate with the OAuth2 provider. -4. Server returns the authentication URL to the Client. -5. User is redirected to the authentication URL, and authenticates with the OAuth2 provider. -6. OAuth2 provider redirects the browser back to Appwrite. -7. Appwrite sets the session cookie on the Appwrite domain, and redirects the browser to the success URL, **which now includes a userId & temporary token.** e.g. `myssrapp.com/oauth2/success?userId=387asdf7rh42346&token=adfh38khjasd83j` -8. Server exchanges the temporary token for a session token, using the new exchange endpoint, and sets the session cookie on the Server domain. +1. Client makes a 'Create OAuth2 Session' request to the Appwrite, containing the user specified provider. +2. Appwrite returns a URL for a page to authenticate with the OAuth2 provider. +3. Server returns the authentication URL to the Client. +4. User is redirected to the authentication URL, and authenticates with the OAuth2 provider. +5. OAuth2 provider redirects the browser back to Appwrite. +6. Appwrite sets the session cookie on the Appwrite domain, and redirects the browser to the success URL, **which now includes a userId & temporary token.** e.g. `myssrapp.com/oauth2/success?userId=387asdf7rh42346&token=adfh38khjasd83j` +7. Server exchanges the temporary token for a session token, using the new exchange endpoint, and sets the session cookie on the Server domain. The SSR application must set up the success page to call the exchange endpoint. The page can then set session cookie on the SSR domain. ##### New Exchange Token Endpoint -**PUT /v1/account/sessions/oauth/exchange** - Exchange a temporary OAuth2 token for a session token. +**PUT /v1/account/sessions/token** - Exchange a temporary token for a session token. + +This endpoint can replace the existing `Update magic URL` and `Update phone session` endpoints. +To keep backwards compatibility, we can alias the existing endpoints to this new endpoint. **Request** @@ -162,7 +165,7 @@ This is not intuitive, and requires the developer to understanding details of Ap #### Proposed Solution -A new SDK helper method, called `setSession`, `setToken`, `setSecret`, or `setSessionSecret` to set the session token of future requests. +A new SDK helper method, called `setSession`, `setToken`, `setSecret`, or `setSessionSecret` to set the session token of future requests. Behind the scenes, this will set a new `X-Appwrite-Session` header. ```js import { Client, Account } from "appwrite"; @@ -202,7 +205,9 @@ The following endpoints have, a. an abuse-limit set, and either b. are accessibl #### Proposed Solution -Allow developers to use `setKey` and `setSession` in combination. In this case, Appwrite should will use the session token for authorization, but disable rate limiting for the request. This solution only works for Server Side SDKs, as the client-side SDKs do not have the `setKey` method. +Allow developers to use `setKey` and `setSession` in combination. In this case, Appwrite should will use the session token for authorization, but disable rate limiting for the request. + +This solution only works for Server Side SDKs, as the client-side SDKs do not have the `setKey` method. Developers will be able to use the client-side SDKs for SSR, but will be affected by rate limiting. ```js import { Client, Account } from "node-appwrite"; @@ -215,53 +220,6 @@ client.setKey("API_KEY"); client.setSession("SESSION_SECRET"); ``` -### Issue #5: Web SDK File Uploads - -The Web SDK only accepts a `File` object when uploading files. This is not compatible with SSR frameworks, as the `File` object is only available in the browser. - -There is a workaround for this, which involves importing the `File` polyfill from the `formdata-node` package, and converting the blob to an array buffer. - -```js -import fetch from 'node-fetch'; -import { FormData, File } from 'formdata-node'; - -export const uploadFile = async (blob: Blob) => { - const path = `/storage/buckets/${BUCKET_ID}/files`; - const uri = new URL(ENDPOINT + path); - - const formData = new FormData(); - const file = new File([await blob.arrayBuffer()], blob.name); - formData.set('file', file); - formData.set('fileId', ID.unique()); - - const res = await fetch(uri.toString(), { - method: 'post', - headers: { - ...client.headers, - 'x-appwrite-project': PROJECT_ID, - }, - // eslint-disable-next-line @typescript-eslint/no-explicit-any - body: formData as any, - }); - - console.log(res); - - return res; -}; -``` - -#### Proposed Solution - -Match the existing Node SDK which accepts an InputFile helper object. - -```js -storage.createFile( - "[BUCKET_ID]", - "[FILE_ID]", - InputFile.fromBlob(blob, "file.jpg") -); -``` - ### Documentation & Content #### What **docs** would support this feature? @@ -295,8 +253,6 @@ storage.createFile( **Problem #2** -2.1. Should we remove the undocumented OAuth2 SSR workaround? - 2.2. Do we need to add a new endpoint to exchange the temporary token for a session token? Can we reuse the existing magic URL exchange endpoint? **General** @@ -337,7 +293,7 @@ export async function GET(request: Request) { name: "my_cookie_name", value: session.secret, path: "/", - sameSite: "none", + sameSite: "strict", secure: true, httpOnly: true, maxAge: session.expire, @@ -380,7 +336,7 @@ cookieList.set({ }); ``` -We can provide a helper method for popular SSR frameworks to set the cookie in the response. +In the future, we can also provide a helper method for popular SSR frameworks to set the cookie in the response. ```js import { cookies } from "next/headers";