
अनुप्रयोगों और सेवाओं के लिए RESTful मिलान और नीति प्रबंधन API के साथ ACL, RBAC, ABAC तथा कस्टम अभिगम-नियंत्रण मॉडल लागू करने वाली प्राधिकरण लाइब्रेरी।
समाचार: अभी भी चिंतित हैं कि सही Apache Casbin पॉलिसी कैसे लिखें? Apache Casbin online editor मदद के लिए आ रहा है! इसे यहाँ आज़माएँ: https://casbin.apache.org/editor/

Apache Casbin Golang परियोजनाओं के लिए एक शक्तिशाली और कुशल ओपन-सोर्स एक्सेस नियंत्रण लाइब्रेरी है। यह विभिन्न एक्सेस नियंत्रण मॉडल के आधार पर प्राधिकरण लागू करने के लिए समर्थन प्रदान करता है।
write-article, read-log जैसी अनुमतियों का उपयोग करके। यह किसी विशिष्ट लेख या लॉग तक पहुँच को नियंत्रित नहीं करता।resource.Owner जैसी सिंटैक्स शुगर का उपयोग किसी संसाधन के लिए विशेषता प्राप्त करने के लिए किया जा सकता है।/res/*, /res/:id जैसे पथ और GET, POST, PUT, जैसे HTTP तरीकों का समर्थन करता है।Casbin में, एक एक्सेस नियंत्रण मॉडल को PERM मेटामॉडल (Policy, Effect, Request, Matchers) के आधार पर एक CONF फ़ाइल में सारगर्भित किया जाता है। इसलिए किसी प्रोजेक्ट के लिए प्राधिकरण तंत्र को बदलना या अपग्रेड करना कॉन्फ़िगरेशन को संशोधित करने जितना सरल है। आप उपलब्ध मॉडलों को संयोजित करके अपना स्वयं का एक्सेस नियंत्रण मॉडल अनुकूलित कर सकते हैं। उदाहरण के लिए, आप एक ही मॉडल में RBAC रोल और ABAC विशेषताएँ एक साथ प्राप्त कर सकते हैं और पॉलिसी नियमों का एक सेट साझा कर सकते हैं।
Casbin में सबसे बुनियादी और सरल मॉडल ACL है। ACL का मॉडल CONF इस प्रकार है:
# Request definition
[request_definition]
r = sub, obj, act
# Policy definition
[policy_definition]
p = sub, obj, act
# Policy effect
[policy_effect]
e = some(where (p.eft == allow))
# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj && r.act == p.act
ACL मॉडल के लिए एक उदाहरण पॉलिसी इस प्रकार है:
p, alice, data1, read
p, bob, data2, write
इसका अर्थ है:
हम अंत में '\' जोड़कर मल्टी-लाइन मोड का भी समर्थन करते हैं:
# Matchers
[matchers]
m = r.sub == p.sub && r.obj == p.obj \
&& r.act == p.act
इसके अलावा, यदि आप ABAC का उपयोग कर रहे हैं, तो आप Casbin golang संस्करण में निम्नानुसार in ऑपरेटर आज़मा सकते हैं (jCasbin और Node-Casbin अभी समर्थित नहीं हैं):
# Matchers
[matchers]
m = r.obj == p.obj && r.act == p.act || r.obj in ('data2', 'data3')
लेकिन आपको यह सुनिश्चित करना चाहिए कि ऐरे की लंबाई 1 से अधिक है, अन्यथा यह panic का कारण बनेगा।
अधिक ऑपरेटरों के लिए, आप govaluate पर एक नज़र डाल सकते हैं।
Apache Casbin क्या करता है:
{subject, object, action} रूप में या आपके द्वारा परिभाषित अनुकूलित रूप में लागू करें; अनुमति और अस्वीकृति दोनों प्राधिकरण समर्थित हैं।root या administrator जैसे अंतर्निहित सुपरयूज़र का समर्थन करें। एक सुपरयूज़र स्पष्ट अनुमतियों के बिना कुछ भी कर सकता है।keyMatch किसी संसाधन कुंजी /foo/bar को पैटर्न /foo* से मैप कर सकता है।Apache Casbin निम्नलिखित नहीं करता:
username और password सत्यापित करना)go get github.com/casbin/casbin/v3
https://casbin.apache.org/docs/overview
आप अपने वेब ब्राउज़र में Casbin मॉडल और पॉलिसी लिखने के लिए ऑनलाइन संपादक (https://casbin.apache.org/editor/) का भी उपयोग कर सकते हैं। यह syntax highlighting और code completion जैसी कार्यक्षमताएँ प्रदान करता है, ठीक उसी तरह जैसे किसी प्रोग्रामिंग भाषा के लिए IDE।
https://casbin.apache.org/docs/tutorials
एक मॉडल फ़ाइल और एक पॉलिसी फ़ाइल के साथ एक Casbin enforcer बनाएँ:
e, _ := casbin.NewEnforcer("path/to/model.conf", "path/to/policy.csv")
नोट: आप फ़ाइल के बजाय DB में पॉलिसी के साथ भी enforcer प्रारंभ कर सकते हैं, विवरण के लिए पॉलिसी स्थायित्व अनुभाग देखें।
एक्सेस होने से ठीक पहले अपने कोड में एक enforcement hook जोड़ें:
sub := "alice" // the user that wants to access a resource.
obj := "data1" // the resource that is going to be accessed.
act := "read" // the operation that the user performs on the resource.
if res, _ := e.Enforce(sub, obj, act); res {
// permit alice to read data1
} else {
// deny the request, show an error
}
स्थैतिक पॉलिसी फ़ाइल के अलावा, Apache Casbin रन-टाइम पर अनुमति प्रबंधन के लिए API भी प्रदान करता है। उदाहरण के लिए, आप किसी उपयोगकर्ता को सौंपे गए सभी रोल नीचे दिए अनुसार प्राप्त कर सकते हैं:
roles, _ := e.GetImplicitRolesForUser(sub)
अधिक उपयोग के लिए पॉलिसी प्रबंधन APIs देखें।
Apache Casbin अनुमतियों को प्रबंधित करने के लिए APIs के दो सेट प्रदान करता है:
हम मॉडल प्रबंधन और पॉलिसी प्रबंधन के लिए एक वेब-आधारित UI भी प्रदान करते हैं:


https://casbin.apache.org/docs/adapters
https://casbin.apache.org/docs/watchers
https://casbin.apache.org/docs/role-managers
https://casbin.apache.org/docs/benchmark
वेब फ्रेमवर्क के लिए Authz मिडलवेयर: https://casbin.apache.org/docs/middlewares
https://casbin.apache.org/docs/adopters
कृपया योगदान मार्गदर्शिका पढ़ें।
यह प्रोजेक्ट उन सभी लोगों की बदौलत अस्तित्व में है जो योगदान देते हैं।
यह प्रोजेक्ट Apache 2.0 लाइसेंस के अंतर्गत लाइसेंस प्राप्त है।
यदि आपके पास कोई समस्या या फीचर अनुरोध है, तो कृपया हमसे संपर्क करें। PR का स्वागत है।
![]() | ![]() | ![]() | ![]() |
|---|
| Casbin | jCasbin | node-Casbin | PHP-Casbin |
| उत्पादन-तैयार | उत्पादन-तैयार | उत्पादन-तैयार | उत्पादन-तैयार |
![]() | ![]() | ![]() | ![]() |
|---|
| PyCasbin | Casbin.NET | Casbin-CPP | Casbin-RS |
| उत्पादन-तैयार | उत्पादन-तैयार | उत्पादन-तैयार | उत्पादन-तैयार |
DELETE| मॉडल | मॉडल फ़ाइल | पॉलिसी फ़ाइल |
|---|
| ACL | basic_model.conf | basic_policy.csv |
| सुपरयूज़र के साथ ACL | basic_model_with_root.conf | basic_policy.csv |
| बिना उपयोगकर्ताओं के ACL | basic_model_without_users.conf | basic_policy_without_users.csv |
| बिना संसाधनों के ACL | basic_model_without_resources.conf | basic_policy_without_resources.csv |
| RBAC | rbac_model.conf | rbac_policy.csv |
| संसाधन रोल्स के साथ RBAC | rbac_model_with_resource_roles.conf | rbac_policy_with_resource_roles.csv |
| डोमेन/टेनेंट के साथ RBAC | rbac_model_with_domains.conf | rbac_policy_with_domains.csv |
| ABAC | abac_model.conf | N/A |
| RESTful | keymatch_model.conf | keymatch_policy.csv |
| अस्वीकृति-ओवरराइड | rbac_model_with_deny.conf | rbac_policy_with_deny.csv |
| प्राथमिकता | priority_model.conf | priority_policy.csv |