Skip to content

goors/revel-oauth2-restful

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Revel oauth2 protected api with Golang oauth2 server

Getting Started

Dependencies

go get github.com/revel/revel
go get https://github.com/RangelReale/osin
go get golang.org/x/oauth2

Start api with server:

revel run restful

How to get token?

Open url

http://localhost:14000/?response_type=code&client_id=1234&redirect_uri=http://localhost:14000/appauth

You will get json:

{
  "token": "bitv8UqUSiSOQ6bWe3TKjA"
}

How to get check if API is protected with token?

Open url

http://localhost:14000/example?access_token=somegarbagehere
and you will see json

{
  "error": 1
}

Project is using mysql storage for client id and client secret.

func NewStorage() *Storage {

	r := &Storage{
		clients:   make(map[string]osin.Client),
		authorize: make(map[string]*osin.AuthorizeData),
		access:    make(map[string]*osin.AccessData),
		refresh:   make(map[string]string),
	}

	db, _ := sql.Open("mysql", "oauth2:password@/oauth2?charset=utf8")
	rows, _ := db.Query("SELECT * FROM Oauth2Client")

	for rows.Next() {

		var Id int
		var Client string
		var Secret string
		var RedirectUrl string

		rows.Scan(&Id, &Client, &Secret, &RedirectUrl)

		log.Println(Client)
		log.Println(Secret)
		log.Println(RedirectUrl)
		r.clients[Client] = &osin.DefaultClient{
			Id:          Client,
			Secret:      Secret,
			RedirectUri: RedirectUrl,
		}

		log.Println(r.clients)
	}

	return r
}

Do not forget to import db file located at sql/oauth2.sql

CREATE TABLE `Oauth2Client` (
  `Id` int(11) NOT NULL AUTO_INCREMENT,
  `Client` varchar(255) NOT NULL,
  `Secret` varchar(255) NOT NULL,
  `RedirectUrl` varchar(255) NOT NULL,
  PRIMARY KEY (`Id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

About

Revel oauth2 protected restful api with Golang oauth2 server (moved to https://murphy.rs/nikola/revel-oauth2-restful)

Resources

Stars

Watchers

Forks

Packages

No packages published