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: Add Auth0/audience support for ClientCredentials flow #1639

Merged
merged 8 commits into from
Jun 9, 2023

Conversation

PudgyPigeon
Copy link
Contributor

@PudgyPigeon PudgyPigeon commented May 15, 2023

TL;DR

This PR enables passing in the audience parameter into the get_token method - via the ClientCredentials flow and the ClientConfig object. This enables using Auth0 as an external server for intra-service authentication. Thus, every aspect of auth within a Flyte deployment can be offloaded to Auth0 instead of being handled internally.

Type

  • Bug Fix
  • Feature
  • Plugin

Are all requirements met?

  • Code completed
  • Smoke tested
  • Unit tests added
  • Code documentation added
  • Any pending items have an associated Issue

Complete description

How did you fix the bug, make the feature etc. Link to any design docs etc

Auth0 requires an audience parameter for its various requests. This was previously not enabled in the Flytekit source code as the various dataclasses and objects never expected an audience param as an input arg. Furthermore, the format necessary for an Auth0 request was not defined. This PR adds support for that by piping in the audience parameter as input from FlyteAdmin's audience field, and then into the various functions/methods/classes that handle the auth request.

Tracking Issue

flyteorg/flyte#3661

Follow-up issue

NA
OR
https://github.com/flyteorg/flyte/issues/

@codecov
Copy link

codecov bot commented May 15, 2023

Codecov Report

Merging #1639 (ab5491d) into master (f671fb6) will decrease coverage by 0.01%.
The diff coverage is 40.00%.

@@            Coverage Diff             @@
##           master    #1639      +/-   ##
==========================================
- Coverage   71.03%   71.02%   -0.01%     
==========================================
  Files         336      336              
  Lines       30765    30770       +5     
  Branches     5573     5574       +1     
==========================================
+ Hits        21853    21855       +2     
- Misses       8367     8369       +2     
- Partials      545      546       +1     
Impacted Files Coverage Δ
flytekit/clients/auth/token_client.py 51.21% <0.00%> (-1.29%) ⬇️
flytekit/clients/auth_helper.py 45.20% <ø> (ø)
flytekit/configuration/__init__.py 37.38% <ø> (ø)
flytekit/clients/auth/authenticator.py 52.34% <66.66%> (+0.34%) ⬆️

@PudgyPigeon
Copy link
Contributor Author

@wild-endeavor

flytekit/clients/auth/authenticator.py Show resolved Hide resolved
flytekit/clients/auth/token_client.py Outdated Show resolved Hide resolved
flytekit/clients/auth/authenticator.py Outdated Show resolved Hide resolved
flytekit/clients/auth/authenticator.py Outdated Show resolved Hide resolved
@PudgyPigeon
Copy link
Contributor Author

@wild-endeavor Made the changes, hopefully it is correct

flytekit/clients/auth/token_client.py Outdated Show resolved Hide resolved
flytekit/clients/auth_helper.py Outdated Show resolved Hide resolved
@PudgyPigeon
Copy link
Contributor Author

@wild-endeavor

Copy link
Contributor

@wild-endeavor wild-endeavor left a comment

Choose a reason for hiding this comment

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

this looks good, but now there's merge conflicts. would you mind addressing? you can also give me write perms to your fork if you want and i can address.

thank you.

@PudgyPigeon
Copy link
Contributor Author

this looks good, but now there's merge conflicts. would you mind addressing? you can also give me write perms to your fork if you want and i can address.

thank you.

Yup, just added you as a collaborator on the fork repo

tnam and others added 2 commits May 31, 2023 13:07
@PudgyPigeon
Copy link
Contributor Author

@wild-endeavor latest changes from master have been merged

@PudgyPigeon
Copy link
Contributor Author

Fixed the linting - workflows should all pass now

@pingsutw pingsutw merged commit 3370a96 into flyteorg:master Jun 9, 2023
@welcome
Copy link

welcome bot commented Jun 9, 2023

Congrats on merging your first pull request! 🎉

eapolinario pushed a commit that referenced this pull request Jun 29, 2023
* feat: Add Auth0/audience support for ClientCredentials flow

Signed-off-by: tnam <[email protected]>

* refactor: Remove unneeded variables & condense code

Signed-off-by: tnam <[email protected]>

* refactor: Reduce verbosity of code

Signed-off-by: tnam <[email protected]>

* refactor(chore): Remove unused commented code

Signed-off-by: tnam <[email protected]>

* fix: Missing comma in input args - authenticator.py 213

Signed-off-by: tnam <[email protected]>

* style: Run pre-commit against all files

Signed-off-by: tnam <[email protected]>

---------

Signed-off-by: tnam <[email protected]>
Co-authored-by: tnam <[email protected]>
eapolinario added a commit that referenced this pull request Jun 30, 2023
* FLYTECTL_CONFIG env var higher precedence, config flag respected in pyflyte package (#1662)

Signed-off-by: Yee Hing Tong <[email protected]>

* Change flytekit Pytorch, TFJob and MPI plugins to use new kubeflow config (#1627)

* upgrade tensorflow plugin to v1

Signed-off-by: Yubo Wang <[email protected]>

* minor fix

Signed-off-by: Yubo Wang <[email protected]>

* fix tests and lints

Signed-off-by: Yubo Wang <[email protected]>

* move models file into task make backward compatible

Signed-off-by: Yubo Wang <[email protected]>

Signed-off-by: Yubo Wang <[email protected]>

* add code example in README

Signed-off-by: Yubo Wang <[email protected]>

* bump flyteidl

Signed-off-by: Yubo Wang <[email protected]>

* add pytorch

Signed-off-by: Yubo Wang <[email protected]>

* add mpi and fix requirements.txt

Signed-off-by: Yubo Wang <[email protected]>

* lint and fmt

Signed-off-by: Yubo Wang <[email protected]>

* Regenerate requirements files using python 3.8

Signed-off-by: eduardo apolinario <[email protected]>

---------

Signed-off-by: Yubo Wang <[email protected]>
Signed-off-by: eduardo apolinario <[email protected]>
Co-authored-by: Yubo Wang <[email protected]>
Co-authored-by: eduardo apolinario <[email protected]>

* Root cert should be byte string when loading from caCertFilePath (#1669)

Signed-off-by: Yee Hing Tong <[email protected]>

* Explicitly set the content type for flyte deck (#1658)

* Set content type for flyte deck

Signed-off-by: Kevin Su <[email protected]>

* test

Signed-off-by: Kevin Su <[email protected]>

* test

Signed-off-by: Kevin Su <[email protected]>

* test

Signed-off-by: Kevin Su <[email protected]>

* test

Signed-off-by: Kevin Su <[email protected]>

* test

Signed-off-by: Kevin Su <[email protected]>

* test

Signed-off-by: Kevin Su <[email protected]>

* test

Signed-off-by: Kevin Su <[email protected]>

* test

Signed-off-by: Kevin Su <[email protected]>

* test

Signed-off-by: Kevin Su <[email protected]>

* test

Signed-off-by: Kevin Su <[email protected]>

* test

Signed-off-by: Kevin Su <[email protected]>

* test

Signed-off-by: Kevin Su <[email protected]>

* test

Signed-off-by: Kevin Su <[email protected]>

* nit

Signed-off-by: Kevin Su <[email protected]>

* test

Signed-off-by: Kevin Su <[email protected]>

* nit

Signed-off-by: Kevin Su <[email protected]>

* nit

Signed-off-by: Kevin Su <[email protected]>

---------

Signed-off-by: Kevin Su <[email protected]>

* Use protos of new kubeflow.pytorch plugin instead of legacy pytorch plugin (#1678)

Signed-off-by: Fabio Grätz <[email protected]>
Co-authored-by: Fabio Grätz <[email protected]>

* More time info for time line deck (#1680)

* more visualization

Signed-off-by: Yicheng-Lu-llll <[email protected]>

* more visualization

Signed-off-by: Yicheng-Lu-llll <[email protected]>

---------

Signed-off-by: Yicheng-Lu-llll <[email protected]>

* Add http_proxy to client & Fix deviceflow (#1611)

* Add http_proxy to client & Fix deviceflow

RB=3890720

Signed-off-by: byhsu <[email protected]>

* nit

Signed-off-by: byhsu <[email protected]>

* lint!

Signed-off-by: byhsu <[email protected]>

---------

Signed-off-by: byhsu <[email protected]>
Co-authored-by: byhsu <[email protected]>

* Pass verify flag to all authenticators (#1641)

Signed-off-by: byhsu <[email protected]>

* feat: Add Auth0/audience support for ClientCredentials flow (#1639)

* feat: Add Auth0/audience support for ClientCredentials flow

Signed-off-by: tnam <[email protected]>

* refactor: Remove unneeded variables & condense code

Signed-off-by: tnam <[email protected]>

* refactor: Reduce verbosity of code

Signed-off-by: tnam <[email protected]>

* refactor(chore): Remove unused commented code

Signed-off-by: tnam <[email protected]>

* fix: Missing comma in input args - authenticator.py 213

Signed-off-by: tnam <[email protected]>

* style: Run pre-commit against all files

Signed-off-by: tnam <[email protected]>

---------

Signed-off-by: tnam <[email protected]>
Co-authored-by: tnam <[email protected]>

* pyflyte run remote file (#1670)

Signed-off-by: ChungYujoyce <[email protected]>
Signed-off-by: Kevin Su <[email protected]>
Co-authored-by: Kevin Su <[email protected]>

* upload deck.html only with deck enable (#1693)

Signed-off-by: Yicheng-Lu-llll <[email protected]>

* Add dask plugin #patch (#1366)

* Add dummy task type to test backend plugin

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Add docs page

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Add dask models

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Add function to convert resources

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Add tests to `dask` task

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Remove namespace

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Update setup.py

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Add dask to `plugin/README.md`

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Add README.md for `dask`

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Top level export of `JopPodSpec` and `DaskCluster`

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Update docs for images

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Update README.md

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Update models after `flyteidl` change

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Update task after `flyteidl` change

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Raise error when less than 1 worker

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Update flyteidl to >= 1.3.2

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Update doc requirements

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Update doc-requirements.txt

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Re-lock dependencies on linux

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Update dask API docs

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Fix documentation links

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Default optional model constructor arguments to `None`

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Refactor `convert_resources_to_resource_model` to `core.resources`

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Use `convert_resources_to_resource_model` in `core.node`

Signed-off-by: Bernhard Stadlbauer <[email protected]>

* Incorporate review feedback

Signed-off-by: Eduardo Apolinario <[email protected]>

* Lint

Signed-off-by: Eduardo Apolinario <[email protected]>

Signed-off-by: Bernhard Stadlbauer <[email protected]>
Signed-off-by: Bernhard Stadlbauer <[email protected]>
Signed-off-by: Eduardo Apolinario <[email protected]>
Co-authored-by: Eduardo Apolinario <[email protected]>
Co-authored-by: Eduardo Apolinario <[email protected]>

* Do not bring dask changes

Signed-off-by: eduardo apolinario <[email protected]>

* Remove readthedocs

Signed-off-by: eduardo apolinario <[email protected]>

* Linting

Signed-off-by: eduardo apolinario <[email protected]>

* Force scipy<1.11.0 is on windows

Signed-off-by: eduardo apolinario <[email protected]>

---------

Signed-off-by: Yee Hing Tong <[email protected]>
Signed-off-by: Yubo Wang <[email protected]>
Signed-off-by: eduardo apolinario <[email protected]>
Signed-off-by: Kevin Su <[email protected]>
Signed-off-by: Fabio Grätz <[email protected]>
Signed-off-by: Yicheng-Lu-llll <[email protected]>
Signed-off-by: byhsu <[email protected]>
Signed-off-by: tnam <[email protected]>
Signed-off-by: ChungYujoyce <[email protected]>
Signed-off-by: Bernhard Stadlbauer <[email protected]>
Signed-off-by: Bernhard Stadlbauer <[email protected]>
Signed-off-by: Eduardo Apolinario <[email protected]>
Co-authored-by: Yee Hing Tong <[email protected]>
Co-authored-by: Yubo Wang <[email protected]>
Co-authored-by: Yubo Wang <[email protected]>
Co-authored-by: eduardo apolinario <[email protected]>
Co-authored-by: Kevin Su <[email protected]>
Co-authored-by: Fabio M. Graetz, Ph.D <[email protected]>
Co-authored-by: Fabio Grätz <[email protected]>
Co-authored-by: Yicheng-Lu-llll <[email protected]>
Co-authored-by: ByronHsu <[email protected]>
Co-authored-by: byhsu <[email protected]>
Co-authored-by: TomNam <[email protected]>
Co-authored-by: tnam <[email protected]>
Co-authored-by: ChungYujoyce <[email protected]>
Co-authored-by: bstadlbauer <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants