Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

feat(auth): Multi-factor Auth support with SMS for Google Cloud Identity Platform #804

Merged
merged 13 commits into from Mar 9, 2020

Conversation

bojeil-google
Copy link
Contributor

@bojeil-google bojeil-google commented Mar 7, 2020

Defines multi-factor auth administrative APIs for Google Cloud Identity Platform.

RELEASE NOTE: Added multi-factor authentication support with SMS for Google Cloud Identity Platform. Existing APIs like createUser() and updateUser() now supports configuring multi-factor authentication settings for user accounts.

bojeil-google and others added 9 commits October 23, 2019 19:21
Updates UserRecord to parse multi-factor related information from the GetAccountInfo server response.

First step in supporting multi-factor authentication with SMS as a second factor.
* Adds ability to import users with phone second factors.

* Addresses review comments.
* Adds multi-factor support for updateUser.
This will allow the ability to update the list of second factors on an existing user record.
* Extends createUser to support multi-factor user creation.

Note that only phoneNumber and displayName are allowed to be passed in this operation.

Adds relevant unit and integration tests.

This capability is only available in staging.
…gs. (#752)

* Adds backend multi-factor auth related errors and their client mappings.
…on. (#766)

* Defines the d.ts multi-factor related comments for reference generation.

* Adds missing multi-factor related claims to the `DecodedIdToken` interface.
Copy link
Contributor

@hiranya911 hiranya911 left a comment

Choose a reason for hiding this comment

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

I didn't do a full line-by-line review, since it's already reviewed code (please let me know if I should pay particular attention to any specific things). I did point out a few things about naming, and the way some fields are exposed in the public API. And I also found one bad merge in the FCM code.

src/index.d.ts Outdated Show resolved Hide resolved
src/index.d.ts Outdated Show resolved Hide resolved
src/index.d.ts Outdated Show resolved Hide resolved
src/index.d.ts Outdated Show resolved Hide resolved
test/unit/messaging/messaging.spec.ts Outdated Show resolved Hide resolved
src/auth/user-record.ts Outdated Show resolved Hide resolved
src/auth/user-record.ts Outdated Show resolved Hide resolved
Copy link
Contributor

@hiranya911 hiranya911 left a comment

Choose a reason for hiding this comment

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

Thanks for making the changes. LGTM with one comment.

src/index.d.ts Outdated
* List of second factors enrolled with the current user.
* Currently only phone second factors are supported.
*/
enrolledFactors: PhoneMultiFactorInfo[];
Copy link
Contributor

Choose a reason for hiding this comment

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

Now that you've changed the other instances in this file, it makes sense to change this to MultiFactorInfo too. I think that's safer for users. Otherwise code like the following snippet will break in a future release:

const user = await admin.auth().getUser(uid);
if (user.multiFactor) {
  const factor = user.multiFactor.enrolledFactors[0];
  console.log(factor.phoneNumber); // this line will break when we change the type in a future release
}

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done.

@hiranya911 hiranya911 added release-note release:stage Stage a release candidate labels Mar 9, 2020
@bojeil-google bojeil-google merged commit 0a6c956 into master Mar 9, 2020
@bojeil-google bojeil-google deleted the auth-mfa-temp branch March 10, 2020 22:30
hiranya911 added a commit that referenced this pull request Apr 16, 2020
* Custom Action for sending Tweets (#784)

* Experimental custom Action for sending Tweets

* Added license headers

* Added README file

* Updated package descriptions

* Improve customClaims Typing (#768)

* chore: Experimental release flow based on Actions (#780)

* chore: Experimental release flow based on Actions

* Added tarball verification step; Simplified CI trigger

* Splitting staging and publish phases into separate jobs

* Fleshed out the full workflow

* Trigger RC build

* chore: Migrated to ESlint (#790)

* chore: Migrated to ESlint

* Added licesne header

* Enabling additional ESLint checks (#794)

* chore: Enabling more ESLint checks and fixing errors (#797)

* Fix compilation error in integration tests (#798)

Introduced by #790

* Build integration tests during CI (and release) (#800)

Note that this won't actually run them.

Additionally, the *unit* tests are also built, impying that we're
building them twice (once during this step, and possibly again when
running the unit tests.)

* Fix revokeRefreshTokens to round consistently with the other platforms. (#801)

This also makes it consistent with the comments a few lines above, as
well as the integration test.

* feat(auth): Multi-factor Auth support with SMS for Google Cloud Identity Platform (#804)

Defines multi-factor auth administrative APIs for Google Cloud Identity Platform.

* Defines new MFA types in toc.yaml. (#807)

* Removes special char from index.d.ts. (#808)

This is causing errors in the reference generation process.

* Defines MultiFactor{Create|Update}Settings interfaces. (#809)

* Defines MultiFactor{Create|Update}Settings interfaces.

* chore: Adding a .npmrc file to the root of the repo (#810)

* chore: Adding a .npmrc file to the root of the repo

* Removing the root-level .npmrc file

* [chore] Release 8.10.0 (#811)

* [chore] Release 8.10.0 (take 2) (#812)

* Bump acorn from 6.1.1 to 6.4.1 (#815)

Bumps [acorn](https://github.com/acornjs/acorn) from 6.1.1 to 6.4.1.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](acornjs/acorn@6.1.1...6.4.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fixing Android notification options descriptions (#820)

* Fixing doc bug that conflated sound and tag options for Android notifications.

* Removing duplicate documentation for tag.

* Adding tag details in the right place this time, hopefully.

* chore: Splitting the index.d.ts file into smaller files (#751)

* Splitting the index.d.ts file into smaller files

* Database return type fixed

* chore: Cleaning up package verification scripts (#822)

* chore: Cleaning up package verification scripts

* Added package metadata to test package.json file

* fix(auth): Fixing UserImportRecord typings declaration (#835)

* fix(auth): Fixing UserImportRecord typings declaration

* Fixing more integration test compilation errors

* Trigger CI

* Removed redundant line

* Bump minimist from 1.2.0 to 1.2.3 (#839)

Bumps [minimist](https://github.com/substack/minimist) from 1.2.0 to 1.2.3.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.0...1.2.3)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* remerge conflict

Co-authored-by: Hiranya Jayathilaka <hiranya911@gmail.com>
Co-authored-by: William Sedlacek <wsedlacekc@gmail.com>
Co-authored-by: rsgowman <rgowman@google.com>
Co-authored-by: bojeil-google <bojeil-google@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: egilmorez <egilmore@google.com>
hiranya911 added a commit that referenced this pull request Apr 20, 2020
* Firebase ML Node.js SDK Structure (#778)

* Firebase ML Node.js SDK Structure
* added tests

* Added GetModel functionality and tests (#781)

* Added GetModel functionality and tests

* Added DeleteModel functionality and tests (#782)

* Added DeleteModel functionality and tests

* Added CreateModel functionality and tests (#788)

* Added CreateModel functionality and tests

* Added UpdateModel, publishModel,and unpublishModel functionality + tests (#791)

* Added UpdateModel, publishModel,and unpublishModel functionality plus tests

* Added ListModels functionality for Firebase ML (#795)

* Added ListModels functionality for Firebase ML

* Firebase ML changed endpoint (#813)

* Add ML APIs to docgen toc (#847)

* Docstring fixes and additions (#848)

* Docstring fixes and additions

* A few edits

* Ml merge (#851)

* Custom Action for sending Tweets (#784)

* Experimental custom Action for sending Tweets

* Added license headers

* Added README file

* Updated package descriptions

* Improve customClaims Typing (#768)

* chore: Experimental release flow based on Actions (#780)

* chore: Experimental release flow based on Actions

* Added tarball verification step; Simplified CI trigger

* Splitting staging and publish phases into separate jobs

* Fleshed out the full workflow

* Trigger RC build

* chore: Migrated to ESlint (#790)

* chore: Migrated to ESlint

* Added licesne header

* Enabling additional ESLint checks (#794)

* chore: Enabling more ESLint checks and fixing errors (#797)

* Fix compilation error in integration tests (#798)

Introduced by #790

* Build integration tests during CI (and release) (#800)

Note that this won't actually run them.

Additionally, the *unit* tests are also built, impying that we're
building them twice (once during this step, and possibly again when
running the unit tests.)

* Fix revokeRefreshTokens to round consistently with the other platforms. (#801)

This also makes it consistent with the comments a few lines above, as
well as the integration test.

* feat(auth): Multi-factor Auth support with SMS for Google Cloud Identity Platform (#804)

Defines multi-factor auth administrative APIs for Google Cloud Identity Platform.

* Defines new MFA types in toc.yaml. (#807)

* Removes special char from index.d.ts. (#808)

This is causing errors in the reference generation process.

* Defines MultiFactor{Create|Update}Settings interfaces. (#809)

* Defines MultiFactor{Create|Update}Settings interfaces.

* chore: Adding a .npmrc file to the root of the repo (#810)

* chore: Adding a .npmrc file to the root of the repo

* Removing the root-level .npmrc file

* [chore] Release 8.10.0 (#811)

* [chore] Release 8.10.0 (take 2) (#812)

* Bump acorn from 6.1.1 to 6.4.1 (#815)

Bumps [acorn](https://github.com/acornjs/acorn) from 6.1.1 to 6.4.1.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](acornjs/acorn@6.1.1...6.4.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Fixing Android notification options descriptions (#820)

* Fixing doc bug that conflated sound and tag options for Android notifications.

* Removing duplicate documentation for tag.

* Adding tag details in the right place this time, hopefully.

* chore: Splitting the index.d.ts file into smaller files (#751)

* Splitting the index.d.ts file into smaller files

* Database return type fixed

* chore: Cleaning up package verification scripts (#822)

* chore: Cleaning up package verification scripts

* Added package metadata to test package.json file

* fix(auth): Fixing UserImportRecord typings declaration (#835)

* fix(auth): Fixing UserImportRecord typings declaration

* Fixing more integration test compilation errors

* Trigger CI

* Removed redundant line

* Bump minimist from 1.2.0 to 1.2.3 (#839)

Bumps [minimist](https://github.com/substack/minimist) from 1.2.0 to 1.2.3.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.0...1.2.3)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* remerge conflict

Co-authored-by: Hiranya Jayathilaka <hiranya911@gmail.com>
Co-authored-by: William Sedlacek <wsedlacekc@gmail.com>
Co-authored-by: rsgowman <rgowman@google.com>
Co-authored-by: bojeil-google <bojeil-google@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: egilmorez <egilmore@google.com>

* Added Firebase ML API requirements to Contributing doc (#853)

Co-authored-by: Kevin Cheung <kevinthecheung@users.noreply.github.com>
Co-authored-by: Hiranya Jayathilaka <hiranya911@gmail.com>
Co-authored-by: William Sedlacek <wsedlacekc@gmail.com>
Co-authored-by: rsgowman <rgowman@google.com>
Co-authored-by: bojeil-google <bojeil-google@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: egilmorez <egilmore@google.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
release:stage Stage a release candidate release-note
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants