Skip to content

Commit 5ad9bce

Browse files
authored
Define usage of OIDC Discovery Mechanism
Update diagram and message flow to support usage of the OIDC discovery mechanism
1 parent 4ae8bf5 commit 5ad9bce

File tree

1 file changed

+38
-21
lines changed

1 file changed

+38
-21
lines changed

specification/draft/workload-identity-federation.mdx

Lines changed: 38 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -80,25 +80,32 @@ specific JWT issuers and rules determining which workload identities are
8080
authorized to receive access tokens.
8181

8282
### Message Flow
83-
The message flow combines using a JWT as an authorization grant as define in [RFC7523](https://datatracker.ietf.org/doc/html/rfc7523) with retrieving a [RFC7517](https://datatracker.ietf.org/doc/html/rfc7517) JWK Key set from a TLS secured URI
83+
The message flow combines using a JWT as an authorization grant as defined in [RFC7523](https://datatracker.ietf.org/doc/html/rfc7523) with retrieving a [RFC7517](https://datatracker.ietf.org/doc/html/rfc7517) JWK Key set from a TLS secured URI
8484

8585
The complete Workload Identity Federation flow proceeds as follows:
8686

87-
```
8887
```mermaid
8988
sequenceDiagram
9089
participant Client as MCP Client
91-
participant Auth as Authorization Server
90+
participant Auth as Authorization<br/>Server
91+
participant OIDC as OIDC<br/>Discovery<br/>Endpoint
92+
participant JWKS_URI as JWK Set<br/>Location
9293
participant Server as MCP Server
9394
9495
Client->>Auth: 1. Request Access Token
95-
Note over Auth: 2. Determine Issuer Key Location
96-
Note over Auth: 3. Obtain Issuer Keys
97-
Note over Auth: 4. Validate JWT
98-
Auth->>Client: 5. Return Access Token
99-
Client->>Server: 6. MCP Server Access
100-
Note over Server: 7. Validate Access Token
101-
Server->>Client: 8. MCP Server Response
96+
Note over Auth: 2. Construct OpenID Provider Discovery Endpoint URL
97+
Auth->>OIDC: 3. Request OpenID Provider Configuration Document
98+
OIDC->>Auth: 4. Return OpenID Provider Configuration Document
99+
Note over Auth: 5. Extract jwks_uri
100+
Auth->>JWKS_URI: 6. Request JWK Set
101+
JWKS_URI->>Auth: 7. Return JWK Set
102+
Note over Auth: 8. Validate JWT
103+
Auth->>Client: 9. Return Access Token
104+
Client->>Server: 10. MCP Server Access
105+
Note over Server: 11. Validate Access Token
106+
Server->>Client: 12. MCP Server Response
107+
```
108+
102109
### Flow Steps
103110

104111
1. **Request Access Token**: The MCP client makes a POST request to the authorization
@@ -110,29 +117,39 @@ sequenceDiagram
110117
- `resource`: The canonical URI of the target MCP server (as defined in the
111118
baseline MCP Authorization specification)
112119

113-
2. **Determine Issuer Key Location**: The authorization server extracts the `iss` (issuer)
114-
claim from the JWT and determine if it is a trusted issuer. If it trusts the
115-
issuer, it MUST determine the location from which to retrieve the RFC7517 JWK key
116-
set based on the `iss` claim. The JWK key set location MUST be a TLS protected
117-
URI. The authorization server MUST maintain a mapping between an issuer and the location of its JWK key set through manual configuration.
120+
2. **Construct OpenID Provider Discovery Endpoint URL**: The authorization server extracts the `iss` (issuer)
121+
claim from the JWT and determines if it is a trusted issuer. If the issuer is
122+
trusted, the authorization server constructs the OpenID Provider Discovery Endpoint URL from the issuer
123+
claim as defined in Section 4 of [OpenID Connect Discovery 1.0](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfig).
124+
125+
3. **Request OpenID Provider Configuration Document**: The authorization server requests the OpenID Provider Configuration Document
126+
using the URL constructed in Step 2 as described in Section 4.1 of [OpenID Connect Discovery 1.0](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationRequest).
127+
128+
4. **Return OpenID Provider Configuration Document** The OpenID Provider Configuration Document is returned as described in Section 4.2 of [OpenID Connect Discovery 1.0](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationResponse).
129+
130+
5. **Extrack jwks_uri**: The authorization server validates the OpenID Provider Configuration Document as
131+
described in Section 4.3 of [OpenID Connect Discovery 1.0](https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationValidation) and extracts the 'jwks_uri' configuration information.
132+
133+
6. **Request JWK Set**: The authorization server retrieves the
134+
[RFC7517](https://datatracker.ietf.org/doc/html/rfc7517) JWK set
135+
containing the issuer's public keys from the TLS protected location specified by
136+
'jwks_uri' configuration information.
118137

119-
3. **Obtain Issuer Keys**: The authorization server retrieves the JWK key set
120-
containing the issuer's public keys from the TLS protected location specified in
121-
the issuer's configuration document.
138+
7. **Return JWK Set**: The JWK set is returned from the TLS protected location.
122139

123-
4. **Validate JWT**: The authorization server validates the JWT according to
140+
8. **Validate JWT**: The authorization server validates the JWT according to
124141
[RFC 7523 Section 3](https://datatracker.ietf.org/doc/html/rfc7523#section-3),
125142
with considerations specified in this document. This includes verifying the
126143
signature using the retrieved public keys and validating that the JWT claims
127144
meet the authorization server's configured trust and authorization
128145
requirements.
129146

130-
5. **Return Access Token**: If JWT validation succeeds, the authorization server
147+
9. **Return Access Token**: If JWT validation succeeds, the authorization server
131148
issues an access token suitable for accessing the specified MCP server and
132149
returns it to the MCP client per
133150
[RFC 7523 Section 2.1](https://datatracker.ietf.org/doc/html/rfc7523#section-2.1).
134151

135-
6. **MCP Server Access**: The MCP client makes a JSON-RPC request to the MCP
152+
10. **MCP Server Access**: The MCP client makes a JSON-RPC request to the MCP
136153
server, including the access token in the `Authorization` header using the
137154
`Bearer` authentication scheme as specified in the baseline MCP Authorization
138155
specification.

0 commit comments

Comments
 (0)