{"id":51143620,"url":"https://github.com/apache/casbin-casbin.net-dotnet-cli","last_synced_at":"2026-06-26T01:01:29.662Z","repository":{"id":314766617,"uuid":"1036382051","full_name":"apache/casbin-Casbin.NET-dotnet-cli","owner":"apache","description":".NET CLI for Casbin","archived":false,"fork":false,"pushed_at":"2026-05-15T19:04:47.000Z","size":23,"stargazers_count":1,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-06-25T14:30:38.458Z","etag":null,"topics":["abac","acl","auth","authorization","authz","casbin","cli","command-line","csharp","dotnet","permission","rbac","sdk"],"latest_commit_sha":null,"homepage":"https://casbin.org","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apache.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-08-12T02:03:38.000Z","updated_at":"2026-04-25T16:06:13.000Z","dependencies_parsed_at":"2025-09-14T17:43:10.139Z","dependency_job_id":"489362c9-3484-4965-aaf8-dd6611347ee7","html_url":"https://github.com/apache/casbin-Casbin.NET-dotnet-cli","commit_stats":null,"previous_names":["casbin-net/casbin-dotnet-cli","apache/casbin-casbin.net-dotnet-cli"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/apache/casbin-Casbin.NET-dotnet-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fcasbin-Casbin.NET-dotnet-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fcasbin-Casbin.NET-dotnet-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fcasbin-Casbin.NET-dotnet-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fcasbin-Casbin.NET-dotnet-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apache","download_url":"https://codeload.github.com/apache/casbin-Casbin.NET-dotnet-cli/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fcasbin-Casbin.NET-dotnet-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34798183,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-25T02:00:05.521Z","response_time":101,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["abac","acl","auth","authorization","authz","casbin","cli","command-line","csharp","dotnet","permission","rbac","sdk"],"created_at":"2026-06-26T01:01:28.850Z","updated_at":"2026-06-26T01:01:29.648Z","avatar_url":"https://github.com/apache.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# casbin-dotnet-cli\n\n[![.NET](https://img.shields.io/badge/.NET-8.0-blue.svg)](https://dotnet.microsoft.com/) \n[![NuGet](https://img.shields.io/nuget/v/casbin-dotnet-cli.svg)](https://www.nuget.org/packages/casbin-dotnet-cli/)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n\ncasbin-dotnet-cli is a command-line tool based on Casbin.NET, enabling you to use all of Casbin APIs in the shell. \n\n## Project Structure\n\n```\ncasbin-dotnet-cli/  \n├── .github/  \n│   └── workflows/  \n│       └── build.yml                    # GitHub Actions workflow configuration  \n├── src/  \n│   └── CasbinCli/  \n│       ├── Commands/  \n│       │   ├── EnforceCommand.cs        # Enhanced enforce command implementation  \n│       │   └── EnforceExCommand.cs      # Enhanced enforceEx command implementation  \n│       ├── Models/  \n│       │   └── ResponseBody.cs          # JSON response model  \n│       ├── Services/  \n│       │   ├── EnforcementService.cs    # Enhanced core enforcement service  \n│       │   └── ConfigValidationService.cs # Configuration file validation service  \n│       ├── Program.cs                   # Dynamic version management entry point  \n│       └── CasbinCli.csproj            # Project file  \n├── test/  \n│   ├── CasbinCli.Tests/                # Unit test project  \n│   │   ├── Services/  \n│   │   │   ├── EnforcementServiceTests.cs    # Enhanced core service unit tests  \n│   │   │   └── ParameterProcessingTests.cs   # Parameter processing tests  \n│   │   ├── Models/  \n│   │   │   └── ResponseBodyTests.cs          # Response model tests  \n│   │   └── CasbinCli.Tests.csproj           # Test project file  \n│   ├── basic_model.conf                # Basic access control model  \n│   ├── basic_policy.csv                # Basic policy file  \n│   ├── rbac_with_domains_model.conf    # RBAC with domains model  \n│   ├── rbac_with_domains_policy.csv    # RBAC with domains policy  \n│   ├── abac_rule_model.conf            # ABAC rule model file  \n│   ├── abac_rule_policy.csv            # ABAC rule policy file  \n│   ├── abac_model.conf                 # ABAC model file  \n│   └── abac_policy.csv                 # ABAC policy file   \n├── build.ps1                           # Local multi-platform build script  \n├── .releaserc.json                     # Semantic release configuration  \n├── README.md                           # Project documentation  \n└── casbin-dotnet-cli.sln              # Visual Studio solution file  \n```\n\n## Installation\n\n### Building from Source\n\n1. Clone the repository\n\n```\ngit clone https://github.com/casbin/casbin-dotnet-cli.git\n```\n\n1. Build the project\n\n```\ncd casbin-dotnet-cli  \ndotnet build\n```\n\n1. Run the CLI\n\n```\ndotnet run --project src/CasbinCli -- [command] [options]\n```\n\n### Install as Global Tool\n\n```\ndotnet tool install -g casbin-dotnet-cli\n```\n\nAfter installation, you can use the `casbin` command directly.\n\n## Command Options\n\n| Option         | Description                                    | Required |\n| -------------- | ---------------------------------------------- | -------- |\n| `-m, --model`  | Path to the model file or model text           | Yes      |\n| `-p, --policy` | Path to the policy file or policy text         | Yes      |\n| `enforce`      | Check permissions                              | No       |\n| `enforceEx`    | Check permissions and get matching policy rule | No       |\n\n## Quick Start\n\n### Basic Permission Check\n\nCheck if Alice has read permission on data1: README.md:37-42\n\n```\ncasbin enforce -m \"test/basic_model.conf\" -p \"test/basic_policy.csv\" \"alice\" \"data1\" \"read\"\n```\n\nOutput:\n\n```\n{\"allow\":true,\"explain\":[]}\n```\n\n### Permission Check with Explanation\n\nCheck if Alice has write permission on data1 (with explanation): README.md:44-49\n\n```\ncasbin enforceEx -m \"test/basic_model.conf\" -p \"test/basic_policy.csv\" \"alice\" \"data1\" \"write\"\n```\n\nOutput:\n\n```\n{\"allow\":false,\"explain\":[]}\n```\n\n### Domain-Based Permission Check\n\nCheck if Alice has read permission on data1 in domain1: README.md:51-56\n\n```\ncasbin enforceEx -m \"test/rbac_with_domains_model.conf\" -p \"test/rbac_with_domains_policy.csv\" \"alice\" \"domain1\" \"data1\" \"read\"\n```\n\nOutput:\n\n```\n{\"allow\":true,\"explain\":[\"admin\",\"domain1\",\"data1\",\"read\"]}\n```\n\n## Advanced Usage\n\n### Attribute-Based Access Control (ABAC)\n\nSupport for structured parameters in ABAC scenarios: enforce_test.go:47-49\n\n```\ncasbin enforceEx -m \"test/abac_model.conf\" -p \"test/abac_policy.csv\" \"{\\\"Age\\\":30}\" \"/data1\" \"read\"\n```\n\nOutput:\n\n```\n{\"allow\":true,\"explain\":[\"r.sub.Age \u003e 18\",\"/data1\",\"read\"]}\n```\n\n### Supported Parameter Formats\n\n- **Simple strings**: `\"alice\"`, `\"data1\"`, `\"read\"`\n- **Structured objects**: `\"{\\\"field\\\":\\\"value\\\"}\"`, `\"{\\\"Age\\\":25}\"`\n\n## Core Components\n\n### EnforcementService\n\nThe core enforcement service responsible for:\n\n- Initializing Casbin enforcer\n- Processing parameter parsing (including JSON object parameters)\n- Executing permission checks\n- Formatting output results\n\n### Commands\n\n- **EnforceCommand**: Implements basic permission checking functionality\n- **EnforceExCommand**: Implements permission checking with explanation functionality\n\n### ResponseBody\n\nStandardized JSON response format: enforce.go:29-30\n\n```\n{  \n  \"allow\": boolean,    // whether access is allowed  \n  \"explain\": string[]  // matching policy rules (enforceEx command only)  \n}\n```\n\n## System Requirements\n\n- .NET 8.0 or later\n- Casbin.NET 1.3.9 or later\n\n## Dependencies\n\n- `Casbin.NET`: Core access control library\n- `System.CommandLine`: Command-line parsing framework\n- `Newtonsoft.Json`: JSON serialization library\n\n## License\n\nThis project is licensed under the Apache 2.0 License - see the [LICENSE](https://deepwiki.com/search/LICENSE) file for details.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fcasbin-casbin.net-dotnet-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapache%2Fcasbin-casbin.net-dotnet-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fcasbin-casbin.net-dotnet-cli/lists"}