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
starts the resource server and this client with API Key; at `mcp>` run `list`, `call get_time {}`, `quit`.
31
+
32
+
## Running with OAuth + DPoP
33
+
34
+
When the server has DPoP enabled (`--dpop-enabled`), use OAuth and DPoP together:
35
+
36
+
-**`MCP_USE_OAUTH=1`** – enable OAuth (required for DPoP).
37
+
-**`MCP_DPOP_ENABLED=1`** – send DPoP-bound access tokens (DPoP proof in each request).
38
+
39
+
Example (server on port 8002 with DPoP, AS on 9000):
40
+
41
+
```bash
42
+
MCP_SERVER_URL=http://localhost:8002/mcp MCP_USE_OAUTH=1 MCP_DPOP_ENABLED=1 uv run mcp-simple-auth-multiprotocol-client
43
+
```
44
+
45
+
Complete OAuth in the browser; then at `mcp>` run `list`, `call get_time {}`, `quit`. Server logs should show "Authentication successful with DPoP".
46
+
47
+
**One-command test** from repo root:
48
+
`./scripts/run_phase4_dpop_integration_test.sh` — starts AS and RS with DPoP, then runs this client (OAuth+DPoP). Use `MCP_SKIP_OAUTH=1` to run only the automated curl tests and skip the manual client step.
49
+
50
+
## Running with Mutual TLS (placeholder)
51
+
52
+
Mutual TLS is a **placeholder** in this example: the client registers the `mutual_tls` protocol but does **not** perform client certificate authentication. Selecting mTLS will show a "not implemented" style message.
53
+
54
+
-**`MCP_PHASE2_PROTOCOL=mutual_tls`** (with the phase2 script) runs this client in mTLS mode; the client will start but mTLS auth is not implemented.
This starts the RS, then the client with API Key; complete the session with `list`, `call get_time {}`, `quit`.
41
+
42
+
## Running with DPoP (OAuth + DPoP)
43
+
44
+
DPoP (Demonstrating Proof-of-Possession, RFC 9449) binds the access token to a client-held key. Use it together with OAuth.
45
+
46
+
1.**Start the Authorization Server** (from `examples/servers/simple-auth`):
47
+
`uv run mcp-simple-auth-as --port=9000`
48
+
49
+
2.**Start this Resource Server with DPoP enabled** (from this directory):
50
+
```bash
51
+
uv run mcp-simple-auth-multiprotocol-rs --port=8002 --auth-server=http://localhost:9000 --api-keys=demo-api-key-12345 --dpop-enabled
52
+
```
53
+
54
+
3.**Run the client** with OAuth and DPoP from `examples/clients/simple-auth-multiprotocol-client`:
55
+
```bash
56
+
MCP_SERVER_URL=http://localhost:8002/mcp MCP_USE_OAUTH=1 MCP_DPOP_ENABLED=1 uv run mcp-simple-auth-multiprotocol-client
57
+
```
58
+
Complete OAuth in the browser, then at `mcp>` run `list`, `call get_time {}`, `quit`. Server logs should show "Authentication successful with DPoP".
59
+
60
+
**One-command verification** (from repo root):
61
+
`./scripts/run_phase4_dpop_integration_test.sh` — starts AS and RS (with `--dpop-enabled`), runs automated DPoP tests, then optionally the OAuth+DPoP client (use `MCP_SKIP_OAUTH=1` to skip the manual OAuth step).
62
+
63
+
## Running with Mutual TLS (placeholder)
64
+
65
+
Mutual TLS is a **placeholder** in this example: the server accepts the `mutual_tls` protocol in PRM/discovery but does **not** perform client certificate validation. Selecting mTLS in the client will show a "not implemented" style message.
66
+
67
+
-**Server**: No extra flags; `auth_protocols` already includes `mutual_tls`.
0 commit comments