Skip to content

Commit 00893af

Browse files
committed
wip new metadata
1 parent befadc0 commit 00893af

File tree

5 files changed

+19
-38
lines changed

5 files changed

+19
-38
lines changed

client/src/App.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ const App = () => {
125125
isInitiatingAuth: false,
126126
oauthTokens: null,
127127
loading: true,
128-
oauthStep: "resource_metadata_discovery",
128+
oauthStep: "metadata_discovery",
129129
oauthMetadata: null,
130130
resourceMetadata: null,
131131
oauthClientInfo: null,

client/src/components/AuthDebugger.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ const AuthDebugger = ({
179179
serverAuthProvider.clear();
180180
updateAuthState({
181181
oauthTokens: null,
182-
oauthStep: "resource_metadata_discovery",
182+
oauthStep: "metadata_discovery",
183183
latestError: null,
184184
oauthClientInfo: null,
185185
authorizationCode: "",

client/src/components/OAuthFlowProgress.tsx

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ interface OAuthFlowProgressProps {
5757
}
5858

5959
const steps: Array<OAuthStep> = [
60+
"resource_metadata_discovery",
6061
"metadata_discovery",
6162
"client_registration",
6263
"authorization_redirect",
@@ -79,16 +80,6 @@ export const OAuthFlowProgress = ({
7980
null,
8081
);
8182

82-
const steps: Array<OAuthStep> = [
83-
"resource_metadata_discovery",
84-
"metadata_discovery",
85-
"client_registration",
86-
"authorization_redirect",
87-
"authorization_code",
88-
"token_request",
89-
"complete",
90-
];
91-
9283
const currentStepIdx = steps.findIndex((s) => s === authState.oauthStep);
9384

9485
useEffect(() => {
@@ -135,8 +126,8 @@ export const OAuthFlowProgress = ({
135126

136127
<div className="space-y-3">
137128
<OAuthStepDetails
138-
label="Resource Metadata Discovery"
139-
{...getStepProps("resource_metadata_discovery")}
129+
label="Metadata Discovery"
130+
{...getStepProps("metadata_discovery")}
140131
>
141132
{authState.resourceMetadata && (
142133
<details className="text-xs mt-2">
@@ -148,11 +139,6 @@ export const OAuthFlowProgress = ({
148139
</pre>
149140
</details>
150141
)}
151-
</OAuthStepDetails>
152-
<OAuthStepDetails
153-
label="Metadata Discovery"
154-
{...getStepProps("metadata_discovery")}
155-
>
156142
{provider.getServerMetadata() && (
157143
<details className="text-xs mt-2">
158144
<summary className="cursor-pointer text-muted-foreground font-medium">

client/src/lib/auth-types.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import {
77

88
// OAuth flow steps
99
export type OAuthStep =
10-
| "resource_metadata_discovery"
1110
| "metadata_discovery"
1211
| "client_registration"
1312
| "authorization_redirect"

client/src/lib/oauth-state-machine.ts

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,38 +20,34 @@ export interface StateTransition {
2020
execute: (context: StateMachineContext) => Promise<void>;
2121
}
2222

23+
const fetchProtectedResourceMetadata = async (serverUrl: string): Promise<object> => {
24+
// TODO: use sdk
25+
const url = new URL("/.well-known/oauth-protected-resource", serverUrl);
26+
const response = await fetch(url);
27+
const resourceMetadata = await response.json();
28+
29+
return resourceMetadata;
30+
}
31+
2332
// State machine transitions
2433
export const oauthTransitions: Record<OAuthStep, StateTransition> = {
25-
resource_metadata_discovery: {
34+
metadata_discovery: {
2635
canTransition: async () => true,
2736
execute: async (context) => {
28-
// TODO: use sdk
29-
const url = new URL("/.well-known/oauth-protected-resource", context.serverUrl);
30-
const response = await fetch(url);
3137

32-
const resourceMetadata = await response.json();
33-
context.updateState({
34-
resourceMetadata: resourceMetadata,
35-
oauthStep: "metadata_discovery",
36-
});
37-
},
38-
},
38+
try {
3939

40-
metadata_discovery: {
41-
canTransition: async (context) => !!context.state.resourceMetadata,
42-
execute: async (context) => {
43-
// TODO: use sdk
44-
let authServerUrl = context.serverUrl;
45-
if (context.state.resourceMetadata?.authorization_servers?.[0]) {
46-
authServerUrl = context.state.resourceMetadata.authorization_servers[0];
4740
}
41+
const resourceMetadata = fetchProtectedResourceMetadata(serverUrl)
42+
4843
const metadata = await discoverOAuthMetadata(authServerUrl);
4944
if (!metadata) {
5045
throw new Error("Failed to discover OAuth metadata");
5146
}
5247
const parsedMetadata = await OAuthMetadataSchema.parseAsync(metadata);
5348
context.provider.saveServerMetadata(parsedMetadata);
5449
context.updateState({
50+
resourceMetadata,
5551
oauthMetadata: parsedMetadata,
5652
oauthStep: "client_registration",
5753
});

0 commit comments

Comments
 (0)