MonoCloud.Cedar
0.1.0
dotnet add package MonoCloud.Cedar --version 0.1.0
NuGet\Install-Package MonoCloud.Cedar -Version 0.1.0
<PackageReference Include="MonoCloud.Cedar" Version="0.1.0" />
<PackageVersion Include="MonoCloud.Cedar" Version="0.1.0" />
<PackageReference Include="MonoCloud.Cedar" />
paket add MonoCloud.Cedar --version 0.1.0
#r "nuget: MonoCloud.Cedar, 0.1.0"
#:package MonoCloud.Cedar@0.1.0
#addin nuget:?package=MonoCloud.Cedar&version=0.1.0
#tool nuget:?package=MonoCloud.Cedar&version=0.1.0
Introduction
MonoCloud Cedar SDK for .NET — author, validate, and evaluate Cedar policies natively from .NET applications.
MonoCloud is a modern, developer-friendly Identity & Access Management platform.
This SDK exposes the Cedar policy engine to .NET via prebuilt native bindings, so you can parse policies and entities, run authorization decisions, and validate schemas without spawning a separate process or pulling in a JVM.
This project is a fork of cedar-policy/cedar-java — the official Java bindings published by the Cedar Contributors. The .NET surface, type names, and serialization shape mirror the Java SDK closely. See the Acknowledgments section below.
📘 Documentation
- Cedar language: https://docs.cedarpolicy.com
- Cedar tutorials & examples: https://www.cedarpolicy.com
- MonoCloud docs: https://www.monocloud.com/docs
Supported Platforms
This SDK targets .NET 10 and ships native runtime libraries for:
win-x64,win-arm64linux-x64,linux-arm64osx-x64,osx-arm64
The right native binary is selected automatically at runtime based on the host RID — no extra setup required.
🚀 Getting Started
Installation
Install-Package MonoCloud.Cedar
# or
dotnet add package MonoCloud.Cedar
Usage
namespace MyPackage;
using MonoCloud.Cedar;
using MonoCloud.Cedar.Model;
using MonoCloud.Cedar.Model.Entity;
using MonoCloud.Cedar.Model.Policy;
using MonoCloud.Cedar.Value;
public class SimpleAuthorization
{
public static void Main()
{
// Build entities
Entity principal = new Entity(EntityUID.Parse("User::\"Alice\"")!);
Entity action = new Entity(EntityUID.Parse("Action::\"view\"")!);
Entity resource = new Entity(EntityUID.Parse("Photo::\"alice_photo\"")!);
// Build policies
PolicySet policySet = PolicySet.ParsePolicies("""
permit(
principal == User::"Alice",
action == Action::"view",
resource == Photo::"alice_photo"
);
forbid(
principal == User::"Alice",
action == Action::"view",
resource == Photo::"bob_photo"
);
""");
// Authorization request
AuthorizationEngine ae = new BasicAuthorizationEngine();
Entities entities = new Entities();
Context context = new Context();
AuthorizationRequest request = new AuthorizationRequest(principal, action, resource, context);
AuthorizationResponse authorizationResponse = ae.IsAuthorized(request, policySet, entities);
}
}
For richer scenarios — schemas, templates, validation, partial evaluation — see the source repository's unit tests for working examples.
🤝 Contributing & Support
Issues & Feedback
- Use GitHub Issues for bug reports and feature requests.
- For tenant or account-specific help, contact MonoCloud Support through your dashboard.
Security
Do not report security issues publicly. Please follow the contact instructions at: https://www.monocloud.com/contact
🙏 Acknowledgments
This project is a fork of cedar-policy/cedar-java and would not exist without the work of the Cedar Contributors:
- Cedar policy engine:
cedar-policy/cedar— the Rust crate that powers authorization decisions. - Cedar Java SDK:
cedar-policy/cedar-java— the upstream Java bindings whose API surface this SDK mirrors. - Cedar website & docs: https://www.cedarpolicy.com
Cedar and the Java SDK are licensed under the Apache License 2.0; this fork preserves that license. Many thanks to the original authors and maintainers.
📄 License
Licensed under the Apache License, Version 2.0. See the included LICENSE file.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 is compatible. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- System.Text.Json (>= 10.0.0)
-
net10.0
- No dependencies.
-
net8.0
- No dependencies.
-
net9.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.