Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C#

C# ASP.NET WebAPI में Authorize एट्रिब्यूट का उपयोग क्या है?

ऑथराइजेशन यह तय करने की प्रक्रिया है कि ऑथेंटिकेटेड यूजर को किसी विशिष्ट रिसोर्स (Web API रिसोर्स) पर एक्शन करने की अनुमति है या नहीं। उदाहरण के लिए, डेटा प्राप्त करने और पोस्ट करने की अनुमति ऑथराइजेशन का हिस्सा है। ऑथराइजेशन प्रोसेस कंट्रोलर एक्शन मेथड के एक्जीक्यूट होने से पहले होता है, जो आपको यह तय करने की फ्लेक्सिबिलिटी देता है कि हम उस रिसोर्स तक एक्सेस देना चाहते हैं या नहीं।

ASP.NET Web API में ऑथराइजेशन

ASP.NET Web API में ऑथराइजेशन ऑथराइजेशन फिल्टर्स का उपयोग करके इम्प्लीमेंट किया जाता है जो कंट्रोलर एक्शन मेथड एक्जीक्यूट होने से पहले चलते हैं। Web API एक बिल्ट-इन ऑथराइजेशन फिल्टर प्रदान करता है: AuthorizeAttribute। यह फिल्टर चेक करता है कि यूजर ऑथेंटिकेटेड है या नहीं। यदि नहीं, तो यह एक्शन को इनवोक किए बिना HTTP स्टेटस कोड 401 (Unauthorized) लौटाता है।

Authorize एट्रिब्यूट लागू करने के स्तर

1. ग्लोबल लेवल (सभी कंट्रोलर्स के लिए)

public static void Register(HttpConfiguration config)
{
    // सभी Web API कंट्रोलर्स के लिए ऑथराइजेशन आवश्यक
    config.Filters.Add(new AuthorizeAttribute());
}

2. कंट्रोलर लेवल (विशिष्ट कंट्रोलर के सभी एक्शन्स)


// इस कंट्रोलर के सभी एक्शन्स के लिए ऑथराइजेशन आवश्यक
[Authorize]
public class StudentsController : ApiController
{
    public HttpResponseMessage Get(int id) { ... }
    public HttpResponseMessage Post() { ... }
    public HttpResponseMessage Put(int id, Student student) { ... }
    public HttpResponseMessage Delete(int id) { ... }
}

3. एक्शन लेवल (विशिष्ट एक्शन्स के लिए)

public class StudentsController : ApiController
{
    // पब्लिक - कोई ऑथराइजेशन नहीं
    public HttpResponseMessage Get() { ... }
    
    // केवल इस एक्शन के लिए ऑथराइजेशन आवश्यक
    [Authorize]
    public HttpResponseMessage Post() { ... }
    
    [Authorize]
    public HttpResponseMessage Put(int id, Student student) { ... }
}

4. रोल्स/पॉलिसीज के साथ Authorize

// विशिष्ट रोल आवश्यक
[Authorize(Roles = "Admin")]
public HttpResponseMessage Delete(int id) { ... }

// मल्टीपल रोल्स (OR लॉजिक)
[Authorize(Roles = "Admin,Manager")]
public HttpResponseMessage Manage() { ... }

// पॉलिसी-आधारित (ASP.NET Core स्टाइल, Web API में कस्टम फिल्टर के माध्यम से)
[Authorize(Policy = "RequireAdminRole")]
public HttpResponseMessage AdminOnly() { ... }

उदाहरण: एक्शन पर Authorize

using System.Web.Http;

namespace DemoWebApplication.Controllers
{
    public class DemoController : ApiController
    {
        [Authorize]
        public IHttpActionResult Get()
        {
            return Ok(new { Message = "Authorized access!" });
        }
    }
}

चूंकि हमने एक्शन मेथड पर Authorize एट्रिब्यूट जोड़ा है, उचित ऑथराइजेशन (बियरर टोकन, API Key, OAuth, आदि) का उपयोग करके एक्शन मेथड तक पहुंचा जाना चाहिए। अनधिकृत एक्सेस के परिणामस्वरूप 401 Unauthorized रिस्पॉन्स होगा।

C# ASP.NET WebAPI में Authorize एट्रिब्यूट का उपयोग क्या है?

कस्टम ऑथराइजेशन फिल्टर

public class CustomAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool IsAuthorized(HttpActionContext actionContext)
    {
        // कस्टम लॉजिक - उदाहरण: कस्टम हेडर चेक करें
        var headers = actionContext.Request.Headers;
        if (headers.Contains("X-Custom-Auth"))
        {
            var token = headers.GetValues("X-Custom-Auth").FirstOrDefault();
            return ValidateToken(token);
        }
        return false;
    }
    
    private bool ValidateToken(string token)
    {
        // टोकन वैलिडेशन लॉजिक
        return token == "valid-token";
    }
    
    protected override void HandleUnauthorizedRequest(HttpActionContext actionContext)
    {
        // कस्टम अनधिकृत रिस्पॉन्स
        actionContext.Response = actionContext.Request.CreateResponse(
            HttpStatusCode.Unauthorized, 
            new { Error = "Custom Unauthorized", Message = "Invalid or missing token" });
    }
}

// उपयोग
[CustomAuthorize]
public IHttpActionResult SecureAction() { ... }

ऑथेंटिकेशन vs ऑथराइजेशन

पहलूऑथेंटिकेशन (Authentication)ऑथराइजेशन (Authorization)
प्रश्नतुम कौन हो?तुम्हें क्या करने की अनुमति है?
प्रक्रियापहचान सत्यापित करनापर्मिशन्स चेक करना
Web API मेंAuthentication FiltersAuthorization Filters ([Authorize])
क्रमपहलेबाद में

आम ऑथराइजेशन परिदृश्य

  • बियरर टोकन (JWT): `Authorization: Bearer ` हेडर
  • API Key: कस्टम हेडर `X-Api-Key: `
  • बेसिक ऑथ: `Authorization: Basic `
  • विंडोज ऑथ: इंटीग्रेटेड विंडोज ऑथेंटिकेशन
  • OAuth2/OpenID Connect: IdentityServer, Azure AD, आदि

नोट: ASP.NET Core में, [Authorize] एट्रिब्यूट समान तरीके से काम करता है लेकिन पॉलिसी-आधारित ऑथराइजेशन के लिए बेहतर सपोर्ट के साथ: services.AddAuthorization(options => options.AddPolicy("Admin", p => p.RequireRole("Admin")));

  1. C# ASP.NET WebAPI में क्वेरीस्ट्रिंग पैरामीटर के साथ वर्जनिंग कैसे करें? C# ASP.NET WebAPI में क्वेरीस्ट्रिंग पैरामीटर के साथ वर्जनिंग कैसे करें?

    Web API में DefaultHttpControllerSelector क्लास उस उपयुक्त कंट्रोलर एक्शन मेथड का चयन करने के लिए जिम्मेदार है जिसे हम URI में भेजते हैं। मान लीजिए हमें क्वेरी स्ट्रिंग में वर्जनिंग लागू करनी है जैसे नीचे: v=1 StudentsV1Controller (Version 1) v=2 StudentsV2Controller (Version 2) यदि हम वर्जनिंग

  1. C# ASP.NET WebAPI में फिल्टर्स के विभिन्न प्रकार क्या हैं? C# ASP.NET WebAPI में फिल्टर्स के विभिन्न प्रकार क्या हैं?

    फिल्टर्स का उपयोग WebAPI फ्रेमवर्क रिक्वेस्ट प्रोसेसिंग के विभिन्न स्तरों पर अतिरिक्त लॉजिक इंजेक्ट करने के लिए किया जाता है। फिल्टर्स क्रॉस-कटिंग कंसर्न (लॉगिंग, ऑथराइज़ेशन, और कैशिंग) के लिए एक तरीका प्रदान करते हैं। फिल्टर्स को एक्शन मेथड या कंट्रोलर पर घोषणात्मक या प्रोग्रामेटिक तरीके से लागू कि

  1. C# ASP.NET WebAPI में कंट्रोलर एक्शन के विभिन्न रिटर्न टाइप्स क्या हैं? C# ASP.NET WebAPI में कंट्रोलर एक्शन के विभिन्न रिटर्न टाइप्स क्या हैं?

    Web API एक्शन मेथड के निम्नलिखित रिटर्न टाइप्स हो सकते हैं। Void Primitive Type/Complex Type HttpResponseMessage IHttpActionResult 1. Void यह आवश्यक नहीं है कि सभी एक्शन मेथड्स कुछ न कुछ लौटाएं। इनका रिटर्न टाइप void हो सकता है। उदाहरण using DemoWebApplication.Models; using Syst