JWT认证演示

一个基于Spring WebFlux和Spring Security的JWT认证演示项目,提供登录端点获取令牌和保护端点需要有效令牌访问,还包括实时通信的SSE端点。

  • by Danushka96
  • Java
  • 云端部署
  • 更新于
在 GitHub 查看 Danushka96/mcp-server

使用说明

MCP安全演示

此项目演示了一个使用Spring Security和JWT身份验证进行安全保护的Spring WebFlux应用程序。它提供了一个登录端点来获取令牌,以及一个需要有效令牌才能访问的受保护端点。它还包括一个用于实时通信的服务器发送事件(SSE)端点。

使用Claude Desktop的演示场景

此服务器旨在与Claude Desktop等客户端配合使用。客户端可以连接到SSE端点以接收实时更新。

Claude桌面配置

要将Claude Desktop连接到此服务器,请使用以下MCP服务器配置:

{
    "mcpServers": {
        "default-server": {
            "type": "sse",
            "url": "http://localhost:8080/sse",
            "note": "For SSE connections, add this URL directly in your MCP Client"
        }
    }
}

运行应用程序

  1. 使用Maven启动应用程序:
    ./mvnw spring-boot:run
    

认证

应用程序使用硬编码用户进行身份验证。

  • 用户名: user@example.com
  • 密码: password

1.获取JWT令牌

向发送POST请求 /login 使用用户的凭据接收JWT的端点。

curl --location 'http://localhost:8080/login' \
--header 'Content-Type: application/json' \
--data '{
    "username": "user@example.com",
    "password": "password"
}'

响应将包含JWT令牌:

{
    "token": "your-jwt-token"
}

2.访问受保护的端点

将获得的JWT纳入 Authorization 标头作为访问受保护端点的承载令牌。

例如,要访问 /ping 端点:

curl --location 'http://localhost:8080/ping' \
--header 'Authorization: Bearer <your-jwt-token>'

成功的请求将返回字符串 "pong".

3.连接到SSE端点

这 /sse 端点受到保护。您的客户端需要处理身份验证流才能成功连接。出于测试目的,您可以将临时规则添加到 SecurityConfig.java 允许所有访问 /sse 端点(如果需要)。