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

[SSO] Auth Methods and Mock OIDC Flow #15155

Merged
merged 15 commits into from
Nov 16, 2022

Conversation

philrenaud
Copy link
Contributor

@philrenaud philrenaud commented Nov 4, 2022

This PR establishes the OIDC sign-in flow by implementing auth-methods and mocking a redirect flow based on which auth methods are present.

Running in Mirage, Nomad will generate 3 auth methods which can be used to simulate sign-in or sign-in failure.

image
image

@github-actions
Copy link

github-actions bot commented Nov 4, 2022

Ember Asset Size action

As of 696e656

Files that got Bigger 🚨:

File raw gzip
nomad-ui.js +11.2 kB +1.78 kB
nomad-ui.css +475 B +139 B

Files that stayed the same size 🤷‍:

File raw gzip
vendor.js 0 B 0 B
vendor.css 0 B 0 B

@github-actions
Copy link

github-actions bot commented Nov 7, 2022

Ember Test Audit comparison

f-ui/sso 696e656 change
passes 1432 1434 +2
failures 0 0 0
flaky 0 0 0
duration 10m 52s 217ms 10m 27s 259ms -24s 958ms

@philrenaud philrenaud marked this pull request as ready for review November 15, 2022 20:25
@philrenaud philrenaud changed the title 15124 UI tokens service auth methods [SSO] Auth Methods and Mock OIDC Flow Nov 15, 2022
Copy link
Contributor

@ChaiWithJai ChaiWithJai left a comment

Choose a reason for hiding this comment

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

Great job! Left some questions so I could keep up with everything that's happening in here.

ui/app/adapters/auth-method.js Show resolved Hide resolved
ui/app/controllers/oidc-mock.js Show resolved Hide resolved
Comment on lines 137 to 145
.then(async (response) => {
if (response.ok) {
let json = await response.json();
this.token.set('secret', json.ACLToken);
this.verifyToken();
this.code = null;
this.state = null;
}
});
Copy link
Contributor

Choose a reason for hiding this comment

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

question: Because we're using .then instead of async/await this callback will be fired once the request resolves and the rest of the thread of execution will resume? However, we have an isValidatingToken that will cause a conditional part of the template to render. I wonder what would happen if we simulate a slow network request. Could we trigger an unhandled error as a result? Would this be a good argument to advocate for async/await instead?

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Great minds think alike! A slow network request is exactly what we're simulating here:

}, {timing: 1000});

(timing: 1000 will wait a second before returning our token)

As for .thenning vs async/awaiting, I will make that switch! good suggestion.

ui/app/router.js Show resolved Hide resolved
ui/tests/acceptance/token-test.js Show resolved Hide resolved
@philrenaud philrenaud merged commit 4dc2421 into f-ui/sso Nov 16, 2022
@philrenaud philrenaud deleted the 15124-ui-tokens-service-auth-methods branch November 16, 2022 16:56
philrenaud added a commit that referenced this pull request Nov 28, 2022
* Top nav auth dropdown (#15055)

* Basic dropdown styles

* Some cleanup

* delog

* Default nomad hover state styles

* Component separation-of-concerns and acceptance tests for auth dropdown

* lintfix

* [ui, sso] Handle token expiry 500s (#15073)

* Handle error states generally

* Dont direct, just redirect

* no longer need explicit error on controller

* Redirect on token-doesnt-exist

* Forgot to import our time lib

* Linting on _blank

* Redirect tests

* changelog

* [ui, sso] warn user about pending token expiry (#15091)

* Handle error states generally

* Dont direct, just redirect

* no longer need explicit error on controller

* Linting on _blank

* Custom notification actions and shift the template to within an else block

* Lintfix

* Make the closeAction optional

* changelog

* Add a mirage token that will always expire in 11 minutes

* Test for token expiry with ember concurrency waiters

* concurrency handling for earlier test, and button redirect test

* [ui] if ACLs are disabled, remove the Sign In link from the top of the UI (#15114)

* Remove top nav link if ACLs disabled

* Change to an enabled-by-default model since you get no agent config when ACLs are disabled but you lack a token

* PR feedback addressed; down with double negative conditionals

* lintfix

* ember getter instead of ?.prop

* [SSO] Auth Methods and Mock OIDC Flow (#15155)

* Big ol first pass at a redirect sign in flow

* dont recursively add queryparams on redirect

* Passing state and code qps

* In which I go off the deep end and embed a faux provider page in the nomad ui

* Buggy but self-contained flow

* Flow auto-delay added and a little more polish to resetting token

* secret passing turned to accessor passing

* Handle SSO Failure

* General cleanup and test fix

* Lintfix

* SSO flow acceptance tests

* Percy snapshots added

* Explicitly note the OIDC test route is mirage only

* Handling failure case for complete-auth

* Leentfeex

* Tokens page styles (#15273)

* styling and moving columns around

* autofocus and enter press handling

* Styles refined

* Split up manager and regular tests

* Standardizing to a binary status state

* Serialize auth-methods response to use "name" as primary key (#15380)

* Serializer for unique-by-name

* Use @classic because of class extension
@github-actions
Copy link

I'm going to lock this pull request because it has been closed for 120 days ⏳. This helps our maintainers find and focus on the active contributions.
If you have found a problem that seems related to this change, please open a new issue and complete the issue template so we can capture all the details necessary to investigate further.

@github-actions github-actions bot locked as resolved and limited conversation to collaborators Mar 17, 2023
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.

2 participants