OPA ASP.NET Core SDK
Important
The documentation for this SDK lives at https://docs.styra.com/sdk, with reference documentation available at https://styrainc.github.io/opa-aspnetcore/
You can use the Styra OPA ASP.NET Core SDK to connect Open Policy Agent and Enterprise OPA deployments to your ASP.NET Core applications using the included Middleware implementation.
Important
Would you prefer a plain C# API instead of ASP.NET Core? Check out the OPA C# SDK.
SDK Installation
This package is published on NuGet as Styra.Opa.AspNetCore
. The NuGet page includes up-to-date instructions on how to add it as a dependency to your C# project.
If you're using the dotnet CLI, this should look like:
dotnet add package Styra.Opa.AspNetCore
SDK Example Usage (high-level)
using Styra.Opa;
using Styra.Opa.AspNetCore;
// ...
string opaUrl = System.Environment.GetEnvironmentVariable("OPA_URL") ?? "http://localhost:8181";
OpaClient opa = new OpaClient(opaUrl);
var builder = new WebHostBuilder()
.ConfigureServices(services =>
{
services.AddAuthentication( /* ... your authentication setup here ... */ );
services.AddRouting();
// ...
}).Configure(app =>
{
app.UseRouting();
app.UseAuthentication();
app.UseMiddleware<OpaAuthorizationMiddleware>(opa, "authz/exampleapp/routes/allow");
// ...
// Your controller/routes added here.
});
var app = builder.Build();
app.Run();
Policy Input/Output Schema
Documentation for the required input and output schema of policies used by the OPA ASP.NET Core SDK can be found here
Build Instructions
To build the SDK, use dotnet build
. The resulting library files will be in src/Styra.Opa.AspNetCore/bin/Debug/net8.0
.
To build the documentation site, run docfx docs/docfx.json -o OUTPUT_DIR
. You should replace OUTPUT_DIR
with a directory on your local system where you would like the generated docs to be placed (the default behavior without -o
will place the generated HTML docs site under the docs/_site
folder in this repo). You can also preview the documentation site using docfx docs/docfx.json --serve
, which will serve the docs on http://localhost:8080
until you use Ctrl+C to exit.
To run the unit tests, you can use dotnet test
.
Community
For questions, discussions and announcements related to Styra products, services and open source projects, please join the Styra community on Slack!
Development
For development docs, see DEVELOPMENT.md.