-
-
Notifications
You must be signed in to change notification settings - Fork 606
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
sfe: Implement self-service frontend for account pausing/unpausing #7500
Conversation
771cf9d
to
6700d16
Compare
@pgporada, this PR appears to contain configuration and/or SQL schema changes. Please ensure that a corresponding deployment ticket has been filed with the new values. |
The |
6700d16
to
076940a
Compare
076940a
to
0680b46
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Overall the SFE is looking great! I have a small set of comments while I continue my review.
28b4e34
to
b5fbe6b
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great work! Just missing the render helper methods and I have one comment nit.
Comments have been addressed, please re-review this.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This change looks fantastic. We have just one more ask that was agreed to when we met last week; include the names from the original error in the JWT claims.
Originating from a comment [here](#7500 (comment)), I've inlined the `setupWFE(..)` function into `main()`.
All comments have been addressed.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM with two last suggestions, which can be saved for a follow-up as long as we file bugs to track them.
Improve the SFE route handler by using go1.22 [HandleFunc](https://go.dev/blog/routing-enhancements) "VERB /path" and removing manual HTTP method acceptance code. Addresses comments from the original SFE PR [here](#7500 (review)). Fixes #7584 Fixes #7499
Add SFE as an RPC client of SARO and RA in `test/config`. #7500 added same in `test/config-next`.
Adds a new boulder component named
sfe
aka the Self-service FrontEnd which is dedicated to non-ACME related Subscriber functions. This change implements one such function which is a web interface and handlers for account unpausing.When paused, an ACME client receives a log line URL with a JWT parameter from the WFE. For the observant Subscriber, manually clicking the link opens their web browser and displays a page with a pre-filled HTML form. Upon clicking the form button, the SFE sends an HTTP POST back to itself and either validates the JWT and issues an RA gRPC request to unpause the account, or returns an HTML error page.
The SFE and WFE should share a 32 byte seed value e.g. the output of
openssl rand -hex 16
which will be used as a go-jose symmetric signer using the HS256 algorithm. The SFE will check various RFC 7519 claims on the JWT such as theiss
,aud
,nbf
,exp
,iat
, and a customapiVersion
claim.The SFE should not yet be relied upon or deployed to staging/production environments. It is very much a work in progress, but this change is big enough as-is.
Related to #7406
Part of #7499