Oso's Blog

Articles about authorization, and other news from Oso's engineering team

Demo: Implementing Permissions in Node Applications

Oso cofounder/CTO Sam Scott led a talk at on authorization patterns in Node.js applications, and fast and secure ways to implement them in a sample B2B SaaS application.

June 27, 2025 —
Best Practices

Tea with Sam: Building the Oso Go integration

We are kicking off the first "Tea with Sam," a Twitch session with oso cofounder/CTO Sam Scott. We'll be sharing a behind the scenes look into oso development and some of the latest features that the engineering team is working on. Our first session will dig into the Go Library, which is under active development.

June 27, 2025 —
Internals

Building the GitHub Authorization Model Using Oso

In this post, we'll show how to incrementally build complex authorization policies with oso, using GitHub's authorization model as an example.

June 27, 2025 — Leina McDermott
Best Practices

Advent of Code in Polar

We explore the capabilities of oso's authorization policy language Polar using numerous challenges from this years of advent of code.

June 27, 2025 — Steve Olsen
Internals

Role-based access control (RBAC) & Attribute-based access control (ABAC) Defined

RBAC and ABAC are terms that security teams commonly throw around when discussing authorization and permissions systems. When building access control in an app, the common misunderstanding is that it's an "either/or" — that it's a decision between RBAC or ABAC — when in fact most applications want for both access control models. In this post, learn about RBAC and ABAC and how combine both models in practice.

June 27, 2025 — Graham Neray
Best Practices

GraphQL Authorization with Graphene, SQLAlchemy and Oso

Use oso's policy engine to build an authorization solution that integrates directly with GraphQL, using Graphene, SQLAlchemy, & Flask.

June 27, 2025 — David Hatch
Best Practices

Introducing Built-in Roles with Oso

Learn how to add Role-Based Access Control (RBAC) with SQLAlchemy, using a GitHub clone example app.

June 27, 2025 — Leina McDermott
Best Practices

Building a runtime reflection system for Rust 🦀️ (Part 3)

The third and final installment of our series on building a runtime reflection system in Rust looks at how we can dynamically call Rust methods at runtime.

June 27, 2025 — Sam Scott
Internals

Python Universe: Access Control Patterns in Python (video)

Our Cofounder/CTO Sam Scott led a talk on common access control patterns in Python/Django and how to implement them into a sample B2B SaaS application.

June 27, 2025 —
Best Practices

Polar, a Configuration Policy Language

oso engineer, Alex Plotnick, led a talk on Polar, oso's declarative policy language

June 27, 2025 —
Internals

Building a runtime reflection system for Rust 🦀️ (Part 2)

The second installment of our series on building a runtime reflection system in Rust looks at how we can dynamically access attributes on Rust structs at runtime.

June 27, 2025 — Sam Scott
Internals

Polar Adventure: A text-based adventure game written in Polar

Recently during a company hackathon we decided to try out using oso's Polar language for a different kind of use case – making a game!

June 27, 2025 — Steve Olsen
Best Practices

Generate Django QuerySet filters using Oso's authorization policies

At Oso, our goal is to enable users to cleanly separate authorization logic from the rest of their application code. This separation is particularly challenging to achieve for list endpoints that return multiple records. When we started thinking about list views, we realized a single yes or no authorization result was not sufficient because it only enables filtering a collection of records that are already in the application. In this post, we will discuss a solution that allows authorization rules to output filters that can be evaluated more efficiently at the data retrieval layer.

June 27, 2025 — David Hatch
Best Practices

Rust Reflection: Building a Runtime Reflection System (Part 1)

When building support for Rust applications, we needed a system that could give us dynamic access to types, attributes and methods at runtime. Since Rust doesn't have native support for such things, we had to build our own version of a runtime reflection system.

June 27, 2025 — Sam Scott
Internals

Adding auth to a Flask App with Azure Active Directory and Oso

Using Azure Active Directory's B2C identity platform and oso's open-source authorization library for Flask, we'll show how to add user authentication and access control to a simple Flask app.

June 27, 2025 — Leina McDermott
Best Practices

Building permissions in a Django app in 30 minutes

Nearly every application needs to enable its users to see only their data. Many other applications go further and add more controls, like sharing, or making some content private and public. In this post, use Django and django-oso to build a simple social app that allows users to share posts, like Twitter. Our app will use oso to implement access control for posts.

June 27, 2025 — David Hatch
Best Practices