You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Check whether the OAuth2 redirect URI for mint.tacc.utexas.edu is already registered #73
ui-react uses OAuth2 against Keycloak/Tapis, and login fails on first contact if the redirect URI is not registered for the exact origin serving the app.
Since ui-react is replacing Lit at an origin that already exists and already does OAuth, the URI may already be registered — but the callback path differs: ui-react uses /oauth2/callback (see App.tsx), and the Lit app's path is not necessarily the same.
Confirm what is registered for https://mint.tacc.utexas.edu today, and whether https://mint.tacc.utexas.edu/oauth2/callback is among the allowed redirect URIs. If not, register it.
This is the classic item discovered on demo day. Settle it before T8, not during.
Sharpened by Tag helm-charts 9.0.0-beta.3 and bump the submodule pointer off beta.2:
the chart's values.yaml documents that ui_react.config.client_id must be a client distinct from the legacy UI's, because the identity provider allows one callback
URL per client — so adding /oauth2/callback to the existing client would break login
on the Lit app rather than sit alongside it.
The redirect URI is registered already. No work is necessary at the identity provider. ui-react uses the same OAuth2 client as ui.
The ticket expected a different callback path for ui. That expectation was wrong. Both apps
use the browser origin plus /oauth2/callback. See mint-ui-lit/src/util/oauth2-adapter.ts:56.
1. What is registered
The identity provider is Tapis, tenant portals. It is not Keycloak.
The OAuth2 client is mint. The ui app uses this client today. Its registered callback_url is exactly:
Decision: ui-react uses the client mint. Thus the cutover and the rollback need no
change at Tapis.
Warning: the chart disagrees
charts/mint/values.yaml and the fail in templates/ui-react-config.yaml say that ui_react
must use a different client. That text is not correct for this cutover. It assumes two different
origins. The template stops only if client_id is empty. The value mint is permitted.
Flip mint.tacc.utexas.edu to ui-react #77 — the host must be exactly https://mint.tacc.utexas.edu. Also, keep ui deployed
with no route. Do not move ui to a second host. There it cannot log in, because its callback
URL comes from the browser origin and has no override.
Do not use a temporary host for ui-react before the cutover. A temporary host needs its own
client.
The container serves the callback path correctly. docker/nginx.conf uses try_files $uri /index.html.
Activity
mosoriob commentedon Aug 8, 2026
Answer
The redirect URI is registered already. No work is necessary at the identity provider.
ui-reactuses the same OAuth2 client asui.The ticket expected a different callback path for
ui. That expectation was wrong. Both appsuse the browser origin plus
/oauth2/callback. Seemint-ui-lit/src/util/oauth2-adapter.ts:56.1. What is registered
The identity provider is Tapis, tenant
portals. It is not Keycloak.The OAuth2 client is
mint. Theuiapp uses this client today. Its registeredcallback_urlis exactly:ui-reactsends the same URL from that host. Source:https://mint.tacc.utexas.edu/config.js.How I proved this
Tapis compares the
redirect_urionGET /v3/oauth2/authorize. It does this before the loginpage. Thus a test needs no password. Tests on 2026-08-08:
client_idredirect_uriminthttps://mint.tacc.utexas.edu/oauth2/callbackminthttps://mint.tacc.utexas.edu/nope/callbackminthttp://mint.tacc.utexas.edu/oauth2/callbackThe last two rows are important. They show that the test is accurate. Tapis compares the
scheme, the host and the path.
I also tested
mint-vercel,mint-localand four possible React client names. Each MINT clienthas one origin. No React client exists.
2. One callback URL for each client
This is correct. A Tapis client has one
callback_urlfield. See theTapis documentation.
But #70 made a wrong conclusion from this fact.
ui_reactdoes not need its own client:uideployed with no route.Decision:
ui-reactuses the clientmint. Thus the cutover and the rollback need nochange at Tapis.
Warning: the chart disagrees
charts/mint/values.yamland thefailintemplates/ui-react-config.yamlsay thatui_reactmust use a different client. That text is not correct for this cutover. It assumes two different
origins. The template stops only if
client_idis empty. The valuemintis permitted.Effects on other tickets
ui_react.config.client_id: "mint"andauth_callback_origin: "".https://mint.tacc.utexas.edu. Also, keepuideployedwith no route. Do not move
uito a second host. There it cannot log in, because its callbackURL comes from the browser origin and has no override.
ui-reactbefore the cutover. A temporary host needs its ownclient.
The container serves the callback path correctly.
docker/nginx.confusestry_files $uri /index.html.