OAuth2 उद्योग-मानक प्रोटोकल हो प्राधिकरणका लागि, जसले प्रमाणपत्रहरू साझा नगरी संसाधनहरूमा सुरक्षित पहुँच सक्षम गर्दछ। MCP (Model Context Protocol) कार्यान्वयनहरूमा, OAuth2 ले MCP सर्भरहरू र तिनका उपकरणहरू पहुँच गर्न क्लाइन्टहरू (जस्तै AI एजेन्टहरू) लाई प्रमाणीकरण र अनुमति दिने एक कठोर तरिका प्रदान गर्दछ।
यस पाठले Spring Boot प्रयोग गरेर MCP सर्भरहरूको लागि OAuth2 प्रमाणीकरण कसरी कार्यान्वयन गर्ने देखाउँछ, जुन उद्यम र उत्पादन परिनियोजनहरूको लागि सामान्य ढाँचा हो।
यस पाठको अन्त्य सम्म, तपाईंले:
- OAuth2 कसरी MCP सर्भरहरूसँग एकीकृत हुन्छ बुझ्ने
- टोकन जारी गर्नका लागि Spring Authorization Server कार्यान्वयन गर्ने
- JWT-आधारित प्रमाणीकरणद्वारा MCP अन्तबिन्दुहरूलाई सुरक्षित गर्ने
- मेसिन-देखि-मेसिन सञ्चारका लागि क्लाइन्ट क्रेडेन्सियल फ्लो कन्फिगर गर्ने
- Java र Spring Boot को आधारभूत बुझाइ
- पहिलेका मोडुलहरूबाट MCP अवधारणाहरूको परिचय
- Maven वा Gradle इन्स्टल गरिएको
यो परियोजना एक कम्तिमा Spring Boot अनुप्रयोग हो जसले दुबै काम गर्दछ:
- एक Spring Authorization Server (client_credentials फ्लो मार्फत JWT पहुँच टोकनहरू जारी गर्दै), र
- एक Resource Server (आफ्नो
/helloअन्तबिन्दु सुरक्षित गर्दै)।
यो Spring ब्लग पोस्ट (2 अप्रिल 2025) मा देखाइएको सेटअपको प्रतिबिम्ब हो।
# निर्माण र चलाउनुहोस्
./mvnw spring-boot:run
# टोकन प्राप्त गर्नुहोस्
curl -u mcp-client:secret -d grant_type=client_credentials \
http://localhost:8081/oauth2/token | jq -r .access_token > token.txt
# सुरक्षित अन्तबिन्दु कल गर्नुहोस्
curl -H "Authorization: Bearer $(cat token.txt)" http://localhost:8081/helloतपाईं निम्न चरणहरूसँग OAuth2 सुरक्षा कन्फिगरेसन परीक्षण गर्न सक्नुहुन्छ:
# यसले 401 Unauthorized फिर्ता गर्नुपर्छ, जसले पुष्टि गर्छ कि OAuth2 सुरक्षा सक्रिय छ
curl -v http://localhost:8081/# पूर्ण टोकन प्रतिक्रिया प्राप्त गर्नुहोस् र निकाल्नुहोस्
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"
# वा केवल टोकन निकाल्न (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=) mcp-client:secret को Base64 कूटलेखन हो।
# सुरक्षित गरिएको टोकन प्रयोग गर्दै
curl -H "Authorization: Bearer $(cat token.txt)" http://localhost:8081/hello
# वा सीधै टोकन मानसँगै
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 8081Ingress FQDN तपाईँको issuer हुन्छ (https://<fqdn>)।
Azure ले *.azurecontainerapps.io को लागि स्वचालित रूपमा विश्वसनीय TLS प्रमाणपत्र प्रदान गर्दछ।
तपाईंको API मा यो inbound नीति थप्नुहोस्:
<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 प्राप्त गरी प्रत्येक अनुरोध मान्यकरण गर्नेछ।
अस्वीकरण: यो कागजात AI अनुवाद सेवा Co-op Translator को प्रयोग गरी अनुवाद गरिएको हो। हामी शुद्धताको प्रयास गर्छौं भने पनि कृपया बुझ्नुस् कि स्वचालित अनुवादमा त्रुटि वा अशुद्धता हुनसक्छ। मूल कागजात यसका स्वदेशी भाषामा आधिकारिक स्रोतको रूपमा मानिनुपर्छ। महत्वपूर्ण जानकारीको लागि, व्यावसायिक मानवीय अनुवाद सिफारिस गरिन्छ। यस अनुवादको प्रयोगबाट उत्पन्न कुनै पनि गलतफहमि वा गलत व्याख्याको लागि हामी जिम्मेवार छैनौं।