feat: add initial code
A UCON (Usage Control) extension for Casbin that provides session-based access control with conditions, obligations, and continuous monitoring.
Casbin-UCON extends Casbin with UCON (Usage Control) capabilities, enabling:
go get github.com/casbin/casbin-ucon
package main import ( "github.com/casbin/casbin/v2" "github.com/casbin/casbin-ucon" ) func main() { // Create standard Casbin enforcer e, _ := casbin.NewEnforcer("model.conf", "policy.csv") // Wrap with UCON functionality uconE := ucon.NewUconEnforcer(e) // Add conditions condition := &ucon.Condition{ ID: "time_condition", Type: "temporal", Expr: "working_hours", } uconE.AddCondition(condition) // Add obligations obligation := &ucon.Obligation{ ID: "log_access", Type: "post", Expr: "audit_log", } uconE.AddObligation(obligation) // Create a session sessionID, _ := uconE.CreateSession("alice", "read", "document1", map[string]interface{}{ "department": "engineering", "clearance": "secret", }) // UCON session-based enforcement if res, err := uconE.EnforceWithSession(sessionID); res { // the session has started }else{ // deny the request, show an error } }
// Enhanced enforcement EnforceWithSession(sessionID string) (bool, error) // Session management CreateSession(subject, action, object string, attributes map[string]interface{}) (string, error) GetSession(sessionID string) (*SessionImpl, error) RevokeSession(sessionID string) error // Condition management AddCondition(condition *ConditionImpl) error EvaluateConditions(sessionID string) (bool, error) //obligation management AddObligation(obligation *ObligationImpl) error ExecuteObligations(sessionID string) error // Monitoring StartMonitoring(sessionID string) error StopMonitoring(sessionID string) error
Development Status: This project is in an early development stage and features may change frequently.
Current Features:
Apache 2.0 License - see LICENSE for details.