Skip to content

Add Node debug token support #4841

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 5 commits into from
Apr 30, 2021
Merged

Add Node debug token support #4841

merged 5 commits into from
Apr 30, 2021

Conversation

hsubox76
Copy link
Contributor

Add ability for App Check to use debug token in Node by using globalThis.

In app-check/src/util.ts, self is also used in self.grecaptcha and I left that alone because Node can't use grecaptcha anyway.

See question about headers.

@changeset-bot
Copy link

changeset-bot bot commented Apr 28, 2021

⚠️ No Changeset found

Latest commit: 7cbf046

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@@ -166,6 +166,7 @@ export class WebSocketConnection implements Transport {
}
};

// Adding a comment to ask questions
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added this comment to place a discussion about this section. The next 5 lines were added in https://github.com/FirebasePrivate/firebase-js-sdk/pull/239/files#diff-ddbaa9e762a6010e5a0aa0c8048d48deea15594f14caa3d51e68b283f36e489fR171

I was wondering if I could get some more info about why only the Authorization header is sent if it's admin node, and only the AppCheck header is sent if it's client node? @schmidt-sebastian ?

To help answer the questions raised in the discussion started here: #4833 (comment)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On node, we want to send the Authorization header if the user has admin credentials. I probably wrote this without knowing that there is a node client SDK. Assuming the node client SDK can use admin creds, this should be checking if the authToken looks like an admin credential.

For more context, if a client has admin credentials, we skip any appcheck-related checks on the server side, which is why we send admin creds in the header (and no appcheck token). If the client has any other type of credentials, they will eventually be sent after the connection is established, but they won't effect whether the initial request to establish a connection is allowed (only the appcheck header matters there).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks. As far as I know, the Node client SDK should never have admin creds so looks like we'll always want to send the AppCheck token.

(Which would probably only be the dummy token or the debug token because Node can't do reCAPTCHA. Or possibly a token from a custom provider.)

@hsubox76 hsubox76 changed the title Add Node debug token support WIP: Add Node debug token support Apr 28, 2021
@hsubox76 hsubox76 changed the title WIP: Add Node debug token support Add Node debug token support Apr 28, 2021
@google-oss-bot
Copy link
Contributor

google-oss-bot commented Apr 29, 2021

Size Analysis Report

Affected Products

Diffs between base commit (919413c) and head commit (ff74ad4) are too large (479,509 characters) to display.

Please check below links to see details from the original test log.

@google-oss-bot
Copy link
Contributor

google-oss-bot commented Apr 29, 2021

Binary Size Report

Affected SDKs

  • @firebase/database

    Type Base (919413c) Head (ff74ad4) Diff
    browser 295 kB 296 kB +535 B (+0.2%)
    esm2017 264 kB 265 kB +526 B (+0.2%)
    main 298 kB 298 kB +520 B (+0.2%)
    module 295 kB 296 kB +535 B (+0.2%)
  • @firebase/database-compat

    Type Base (919413c) Head (ff74ad4) Diff
    browser 86.3 kB 86.3 kB +19 B (+0.0%)
    main 102 kB 102 kB +48 B (+0.0%)
    module 86.3 kB 86.3 kB +19 B (+0.0%)
  • @firebase/database-exp

    Type Base (919413c) Head (ff74ad4) Diff
    browser 245 kB 246 kB +507 B (+0.2%)
    main 277 kB 278 kB +472 B (+0.2%)
    module 245 kB 246 kB +507 B (+0.2%)
  • @firebase/util

    Type Base (919413c) Head (ff74ad4) Diff
    browser 20.2 kB 21.2 kB +981 B (+4.9%)
    esm2017 19.0 kB 20.0 kB +991 B (+5.2%)
    main 24.6 kB 25.8 kB +1.17 kB (+4.8%)
    module 20.2 kB 21.2 kB +981 B (+4.9%)
  • firebase

    Type Base (919413c) Head (ff74ad4) Diff
    firebase-database.js 186 kB 187 kB +883 B (+0.5%)
    firebase.js 873 kB 874 kB +886 B (+0.1%)

Test Logs

Copy link
Member

@Feiyang1 Feiyang1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Can we add what is discussed here to the comment?

@hsubox76
Copy link
Contributor Author

LGTM. Can we add what is discussed here to the comment?

Yes, added.

@hsubox76 hsubox76 merged commit 5ad33ab into master Apr 30, 2021
@hsubox76 hsubox76 deleted the ch-appcheck-node branch April 30, 2021 16:28
@firebase firebase locked and limited conversation to collaborators May 31, 2021
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants