All Projects → rabbitmq → rabbitmq-auth-backend-oauth2-spike

rabbitmq / rabbitmq-auth-backend-oauth2-spike

Licence: other
See rabbitmq/rabbitmq-auth-backend-oauth2 instead.

Programming Languages

erlang
1774 projects
Makefile
30231 projects

Projects that are alternatives of or similar to rabbitmq-auth-backend-oauth2-spike

Sso
cas单点登录系统,其中包括cas认证服务,配置中心,监控平台,服务管理的高可用项目
Stars: ✭ 797 (+4588.24%)
Mutual labels:  oauth2, authorization
Ueberauth
An Elixir Authentication System for Plug-based Web Applications
Stars: ✭ 1,259 (+7305.88%)
Mutual labels:  oauth2, authorization
Jso
Easy to use OAuth 2.0 javascript library for use in your javascript application.
Stars: ✭ 830 (+4782.35%)
Mutual labels:  oauth2, authorization
Aspnet5identityserverangularimplicitflow
OpenID Connect Code / Implicit Flow with Angular and ASP.NET Core 5 IdentityServer4
Stars: ✭ 670 (+3841.18%)
Mutual labels:  oauth2, authorization
Hydra
OpenID Certified™ OpenID Connect and OAuth Provider written in Go - cloud native, security-first, open source API security for your infrastructure. SDKs for any language. Compatible with MITREid.
Stars: ✭ 11,884 (+69805.88%)
Mutual labels:  oauth2, authorization
Fw Cloud Framework
基于springcloud全家桶开发分布式框架(支持oauth2认证授权、SSO登录、统一下单、微信公众号服务、Shardingdbc分库分表、常见服务监控、链路监控、异步日志、redis缓存等功能),实现基于Vue全家桶等前后端分离项目工程
Stars: ✭ 717 (+4117.65%)
Mutual labels:  oauth2, rabbitmq
Spring Boot Oauth2 Jwt Swagger Ui
Spring Boot , OAuth 2 , JWT (Json Web Token) and Swagger UI
Stars: ✭ 77 (+352.94%)
Mutual labels:  oauth2, authorization
Product Is
Welcome to the WSO2 Identity Server source code! For info on working with the WSO2 Identity Server repository and contributing code, click the link below.
Stars: ✭ 435 (+2458.82%)
Mutual labels:  oauth2, authorization
Fosite
Extensible security first OAuth 2.0 and OpenID Connect SDK for Go.
Stars: ✭ 1,738 (+10123.53%)
Mutual labels:  oauth2, authorization
Yup Oauth2
An oauth2 client implementation providing the Device, Installed and Service Account flows.
Stars: ✭ 122 (+617.65%)
Mutual labels:  oauth2, authorization
Practical.cleanarchitecture
Asp.Net Core 5 Clean Architecture (Microservices, Modular Monolith, Monolith) samples (+Blazor, Angular 11, React 17, Vue 2.6), Domain-Driven Design, CQRS, Event Sourcing, SOLID, Asp.Net Core Identity Custom Storage, Identity Server 4 Admin UI, Entity Framework Core, Selenium E2E Testing, SignalR Notification, Hangfire Tasks Scheduling, Health Checks, Security Headers, ...
Stars: ✭ 639 (+3658.82%)
Mutual labels:  oauth2, rabbitmq
Oauthlib
A generic, spec-compliant, thorough implementation of the OAuth request-signing logic
Stars: ✭ 2,323 (+13564.71%)
Mutual labels:  oauth2, authorization
Doorkeeper
Doorkeeper is an OAuth 2 provider for Ruby on Rails / Grape.
Stars: ✭ 4,917 (+28823.53%)
Mutual labels:  oauth2, authorization
Auth0.js
Auth0 headless browser sdk
Stars: ✭ 755 (+4341.18%)
Mutual labels:  oauth2, authorization
Cloudfront Auth
An AWS CloudFront [email protected] function to authenticate requests using Google Apps, Microsoft, Auth0, OKTA, and GitHub login
Stars: ✭ 471 (+2670.59%)
Mutual labels:  oauth2, authorization
Cas
Apereo CAS - Enterprise Single Sign On for all earthlings and beyond.
Stars: ✭ 9,154 (+53747.06%)
Mutual labels:  oauth2, authorization
Springboot Learning
基于Gradle构建,使用SpringBoot在各个场景的应用,包括集成消息中间件、前后端分离、数据库、缓存、分布式锁、分布式事务等
Stars: ✭ 340 (+1900%)
Mutual labels:  oauth2, rabbitmq
Gin Oauth2
Middleware for Gin Framework users who also want to use OAuth2
Stars: ✭ 351 (+1964.71%)
Mutual labels:  oauth2, authorization
Sample Spring Oauth2 Microservices
some examples that show basic and more advanced implementations of oauth2 authorization mechanism in spring-cloud microservices environment
Stars: ✭ 109 (+541.18%)
Mutual labels:  oauth2, authorization
Spring Boot Quick
🌿 基于springboot的快速学习示例,整合自己遇到的开源框架,如:rabbitmq(延迟队列)、Kafka、jpa、redies、oauth2、swagger、jsp、docker、spring-batch、异常处理、日志输出、多模块开发、多环境打包、缓存cache、爬虫、jwt、GraphQL、dubbo、zookeeper和Async等等📌
Stars: ✭ 1,819 (+10600%)
Mutual labels:  oauth2, rabbitmq

RabbitMQ OAuth 2.0 Authorization Backend.

This plugin aims to provide OAuth 2.0 authorization for RabbitMQ clients.

Project Maturity

This project ws a spike that's no longer under development. See rabbitmq-auth-backend-oauth2 for an OAuth 2/JWT authentication and authorisation backend for RabbitMQ.

Auth workflow

Token grant.

Internal:

Client use some grant to request access_token in some scope.

Token is being created with scope and expire after some time. Client can also be issued refresh_token to refresh access_token.

If client use user credentioals, user access permissions to scope is being checked.

External:

External auth server sends request to token handler to create access_token with scope and expiry.

Client access.

Client connects to RabbitMQ using access_token as username and will have access to resources based on scope

Components

This module contin following parts:

  1. Rabbit auth backend rabbit_auth_backend_oauth.erl. Module to authorize clients with access_token used as username.
  2. Oauth backend (yeah, also backend) rabbit_oauth2_backend.erl. Module to work with OAuth2 clients and tokens, direct them to mnesia storage, manage scopes. (https://github.com/kivra/oauth2/blob/master/src/oauth2_backend.erl)
  3. OAuth2 http server rabbit_oauth2_auth.erl. Cowboy handler to grant access codes and tokens. Has no references to rabbitmq and works with oauth library only. Can be made separate plugin.
  4. Token endpoint for external Auth server rabbit_oauth2_access_token.erl. Accepts requests like {"acess_token":..., "scope":..., "expires_in":..., "created_at":...} and creates access_token record in DB. Can be used by external authorization server to issue tokens for rabbitmq.

Endpoint is configured by application env auth_server, which can be {internal, Conf} or {external, Conf}. To set up internal (rabbit_oauth2_auth) or external (rabbit_oauth2_access_token) auth server.

Grant and client types are managed by authorization server handler only.

Scopes

Scopes is discussion topic, because current implementation provide not enough flexibility.

To define access_token access to specific VHost or resource OAuth2 scopes are used. Scope can be a set of strings. Each element in scope define access to specific resource permission.

Format of scope element: <vhost>_<kind>_<permission>_<name>, where

  • <vhost> - vhost of recource
  • <kind> can be q - queue, ex - exchange, or t - topic
  • <permission> - access permission (configure, read, write)
  • <name> - resource name (exact, no regexps allowed)

When granting access_code to scope on behalf of some user scope is checked to be available to this user. For this purpose another auth_backend is used. rabbit_oauth2_backend.erl currently contains constant rabbit_auth_backend_internal, can be configurable.

As you can see, scope syntax restrict some vhosts and it is not easy to support regex resource names, because granting regex scope to regex user permissions will require solving regex inclusion problem (which is not so easy)

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].