Authorization for the rest of us

Everyone’s talking about Zanzibar, and it’s easy to understand why. It handles authorization for Google, so surely it can handle it for you and me. But at what cost? And does that mean that it’s the right solution for the rest of us?

February 20, 2024 — Greg Sarjeant
Best Practices

Relationship-Based Access Control (ReBAC) in Node.js With Oso Cloud

Relationship-based access control (ReBAC) is an authorization pattern where permissions are derived from relationships between resources. In this blog post, you will learn how to implement ReBAC in Node.js with Oso Cloud

January 17, 2024 — Val Karpov
Best Practices

How to POC Authorization as a Service

A guide on how to POC authorization as a service products and a framework for running the evaluation process.

January 15, 2024 — Graham Neray
Best Practices

Policy Testing With Oso Cloud - Part 1: Local Testing

Introduction to Local Policy Testing with Oso Cloud

December 20, 2023 — Greg Sarjeant
Best Practices

Implementing Attribute-based Access Control (ABAC) in Node.js With Oso

In ABAC, access control decisions are made by evaluating various attributes and policies, allowing for more fine-grained and flexible access control than traditional models like role-based access control (RBAC)

October 24, 2023 — Valeri Karpov
Best Practices

Managing Authorization Data in Microservices

There are three key decisions in handling authorization data: storing the data, accessing the data, and modeling the data.

September 15, 2023 — Graham Neray
Best Practices

Nodejs RBAC: Why You Shouldn't Write RBAC in Node.js

Implement Role Based Access Control (RBAC) and Relationship Based Access Control (ReBAC) in Oso instead of Node.js

August 29, 2023 — Val Karpov
Best Practices

Why Authorization is Hard

There's a fundamental tension in authorization. Is it business logic or authorization logic? Should it be in the app, or separate? Let’s talk about what makes authorization hard, some of the approaches for solving it, and the associated tradeoffs.

February 1, 2023 — Sam Scott
Best Practices

What can authorization learn from Rails?

Despite the fact that authorization is a problem as old as software, it’s core to just about no one’s domain. So most people are looking for a Rails-like experience. So, an authorization system needs to be opinionated but flexible – opinionated to get you from zero to best practices quickly, but flexible to support all the things *your* app needs.

October 5, 2022 — Sam Scott
Best Practices

Writing My First Web App Using Oso Cloud

As Oso’s first developer experience engineer, Corey Ashby, walks through creating a functional sample application using Oso Cloud.

September 1, 2022 — Corey Ashby
Best Practices

Using Oso Cloud With Kubernetes Authorization Webhooks

how to use Kubernetes Authorization webhooks to defer authorization decisions to Oso Cloud, a fully-managed authorization service.

June 3, 2022 — Shaun Verch
Best Practices

GraphQL Authorization Patterns

An overview of different patterns for building authorization in GraphQL

February 1, 2022 — Patrick O'Doherty
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.

January 18, 2022 — David Hatch
Best Practices

Comparison: Oso vs. Open Policy Agent (OPA)

Oso is an authorization library that includes a declarative policy language. OPA is an authorization product that includes a declarative policy language. Despite that, there are many significant differences between the two! Here's a comparison.

October 27, 2021 — Graham Neray
Best Practices

Guide to Role-Based Access Control (RBAC) in Ruby

A configuration-based approach to adding role-based access control to your Ruby application.

August 23, 2021 — Graham Kaemmer
Best Practices

Tea with Sam: Build Google Zanzibar in <60 minutes

Our next "Tea with Sam" will cover a hot topic: Zanzibar, Google's consistent, global authorization system. Watch Oso Cofounder/CTO, Sam Scott, implement Zanzibar in <60 minutes live on Twitch.

May 13, 2021 —
Best Practices

The basics of role-based access control in SQLAlchemy

We’ll demonstrate a few ways of modeling role-based access control in Python and SQLAlchemy. The first few examples will be in plain SQLAlchemy, with no other libraries. For more complex examples we’ll show off using Oso for managing role authorization schemes

April 30, 2021 — Lito Nicolai
Best Practices

Demo: A Principled Approach to Authorization Using Python & SQLAlchemy

Demo: A Principled Approach to Authorization using Python & SQLAlchemy

March 1, 2021 —
Best Practices

Demo: Authorization Patterns for GraphQL using Oso + Python Graphene Library

Oso cofounder/CTO Sam Scott led a talk at the recent Austin Python meetup on authorization patterns for GraphQL using Oso and the Python Graphene library.

February 24, 2021 —
Best Practices

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.

February 3, 2021 —
Best Practices

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.

January 12, 2021 — Graham Neray
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.

December 24, 2020 — Leina McDermott
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.

December 10, 2020 — David Hatch
Best Practices

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.

December 2, 2020 —
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.

October 14, 2020 — David Hatch
Best Practices

Get updates on Oso.

We won't spam you. Ever.