temporalio / temporalio/ui

Feature request: support PKCE for OAuth authorization code flow

Open
#2,753 1 comment 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
TypeScript
Stars
431
Forks
179
Avg merge
2d 9h
Merged PRs (30d)
71

Description

Is your feature request related to a problem? Please describe.

PKCE ("Proof Key for Code Exchange") is an optional part of the OAuth authorization code flow. While primarily intended for mobile apps and single-page web applications, it may also be used to enhance the security of traditional server-side web applications.

Describe the solution you'd like

Let's add support for PKCE to UI server.

Describe alternatives you've considered

n/a

Additional context

The draft "OAuth 2.0 Security Best Current Practice" document has this to say:

For confidential clients, the use of PKCE [RFC7636] is RECOMMENDED, as it provides strong protection against misuse and injection of authorization codes as described in Section 4.5.3.1 and, as a side-effect, prevents CSRF even in the presence of strong attackers as described in Section 4.7.1.

(from https://datatracker.ietf.org/doc/html/draft-ietf-oauth-security-topics#section-2.1.1-2.2)

The x/oauth2 library now supports PKCE (as of https://go-review.googlesource.com/c/oauth2/+/463979).
IdP support for PKCE should be indicated by the code_challenge_methods_supported property of the /.well-known/openid-configuration discovery endpoint.
RFC 7636 Proof Key for Code Exchange by OAuth Public Clients

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by locating the UI server's OAuth authorization-code flow and its /.well-known/openid-configuration discovery handling. Review RFC 7636 and the referenced x/oauth2 PKCE support, including code_challenge_methods_supported. Done means the UI server supports PKCE for the flow and handles IdP capability information appropriately.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
authentication, security
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.