این پروژه یک برنامه حداقلی Spring Boot است که هم به عنوان:
- یک سرور احراز هویت Spring (صدور توکنهای دسترسی JWT از طریق جریان
client_credentials)، و - یک سرور منابع (محافظت از نقطه پایانی
/helloخود) عمل میکند.
این پروژه مشابه تنظیمات نشان داده شده در پست وبلاگ Spring (2 آوریل 2025) است.
# build & run
./mvnw spring-boot:run
# obtain a token
curl -u mcp-client:secret -d grant_type=client_credentials \
http://localhost:8081/oauth2/token | jq -r .access_token > token.txt
# call the protected endpoint
curl -H "Authorization: Bearer $(cat token.txt)" http://localhost:8081/helloمیتوانید پیکربندی امنیتی OAuth2 را با مراحل زیر آزمایش کنید:
# This should return 401 Unauthorized, confirming OAuth2 security is active
curl -v http://localhost:8081/# Get and extract the full token response
curl -v -X POST http://localhost:8081/oauth2/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Basic bWNwLWNsaWVudDpzZWNyZXQ=" \
-d "grant_type=client_credentials&scope=mcp.access"
# Or to extract just the token (requires jq)
curl -s -X POST http://localhost:8081/oauth2/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-H "Authorization: Basic bWNwLWNsaWVudDpzZWNyZXQ=" \
-d "grant_type=client_credentials&scope=mcp.access" | jq -r .access_token > token.txtتوجه: هدر Basic Authentication (bWNwLWNsaWVudDpzZWNyZXQ=) کدگذاری Base64 رشته mcp-client:secret است.
# Using the saved token
curl -H "Authorization: Bearer $(cat token.txt)" http://localhost:8081/hello
# Or directly with the token value
curl -H "Authorization: Bearer eyJra...token_value...xyz" http://localhost:8081/helloپاسخ موفق با پیام "Hello from MCP OAuth2 Demo!" تأیید میکند که پیکربندی OAuth2 به درستی کار میکند.
docker build -t mcp-oauth2-demo .
docker run -p 8081:8081 mcp-oauth2-demoaz containerapp up -n mcp-oauth2 \
-g demo-rg -l westeurope \
--image <your-registry>/mcp-oauth2-demo:latest \
--ingress external --target-port 8081نام دامنه کامل ورودی (ingress FQDN) به عنوان issuer شما خواهد بود (https://<fqdn>).
Azure به طور خودکار یک گواهی TLS معتبر برای *.azurecontainerapps.io فراهم میکند.
این سیاست ورودی را به API خود اضافه کنید:
<inbound>
<validate-jwt header-name="Authorization">
<openid-config url="https://<fqdn>/.well-known/openid-configuration"/>
<audiences>
<audience>mcp-client</audience>
</audiences>
</validate-jwt>
<base/>
</inbound>APIM کلیدهای JWKS را دریافت کرده و هر درخواست را اعتبارسنجی میکند.
سلب مسئولیت:
این سند با استفاده از سرویس ترجمه هوش مصنوعی Co-op Translator ترجمه شده است. در حالی که ما در تلاش برای دقت هستیم، لطفاً توجه داشته باشید که ترجمههای خودکار ممکن است حاوی خطاها یا نواقصی باشند. سند اصلی به زبان بومی خود باید به عنوان منبع معتبر در نظر گرفته شود. برای اطلاعات حیاتی، ترجمه حرفهای انسانی توصیه میشود. ما مسئول هیچ گونه سوءتفاهم یا تفسیر نادرستی که از استفاده این ترجمه ناشی شود، نیستیم.