Popularity
2.1
Growing
Activity
0.0
Stable
21
1
6
Programming language: Go
License: MIT License
Tags:
Authentication & OAuth
scope alternatives and similar packages
Based on the "Authentication and OAuth" category.
Alternatively, view scope alternatives based on common mentions on social networks and blogs.
-
go-guardian
Go-Guardian is a golang library that provides a simple, clean, and idiomatic way to create powerful modern API and web authentication. -
branca
:key: Secure alternative to JWT. Authenticated Encrypted API Tokens for Go. -
go-email-normalizer
Golang library for providing a canonical representation of email address. -
otpgo
Time-Based One-Time Password (TOTP) and HMAC-Based One-Time Password (HOTP) library for Go. -
sessiongate-go
A driver for the SessionGate Redis module - easy session management using the Go language. -
signedvalue
Compatibility layer for tornado's signed values (and secure cookies consequently)
Less time debugging, more time building
Scout APM allows you to find and fix performance issues with no hassle. Now with error monitoring and external services monitoring, Scout is a developer's best friend when it comes to application development.
Promo
scoutapm.com
Do you think we are missing an alternative of scope or a related project?
README
Scope
Easily Manage OAuth2 Scopes In Go
Scope Matching Using Wildcard Strategy
import "github.com/SonicRoshan/scope"
scopeA := "read:user:*"
scopeB := "read:user:username"
doesMatch := scope.MatchScopes(scopeA, scopeB)
This strategy will work like this :-
users.*
matchesusers.read
users.*
matchesusers.read.foo
users.read
matchesusers.read
users
does not matchusers.read
users.read.*
does not matchusers.read
users.*.*
does not matchusers.read
users.*.*
matchesusers.read.own
users.*.*
matchesusers.read.own.other
users.read.*
matchesusers.read.own
users.read.*
matchesusers.read.own.other
users.write.*
does not matchusers.read.own
users.*.bar
matchesusers.baz.bar
users.*.bar
does notusers.baz.baz.bar
Filtering Struct For Read Request
When a client request certain data, this function will eliminate any data in the struct for which the client does not have a read scope.
type user struct {
username string `readScope:"user:read:username"`
email string `readScope:"user:read:email"`
}
func main() {
output := user{username : "Test", email : "[email protected]"}
scopesHeldByClient := []string{"user:read:username"}
scope.FilterRead(output, scopesHeldByClient)
// Now output.email will be nil as client does not have scope required to read email field
output := user{username : "Test", email : "[email protected]"}
scopesHeldByClient := []string{"user:read:*"}
scope.FilterRead(&output, scopesHeldByClient)
// Now none of the field in output will be nil as client has scopes to read everything in user struct
}