# README
Gin OAuth 2.0 Server
Using Gin framework implementation OAuth 2.0 services
Quick Start
Download and install
$ go get -u github.com/go-oauth2/gin-server
Create file server.go
package main
import (
"net/http"
"github.com/gin-gonic/gin"
"github.com/go-oauth2/gin-server"
"github.com/go-oauth2/oauth2/v4/manage"
"github.com/go-oauth2/oauth2/v4/models"
"github.com/go-oauth2/oauth2/v4/server"
"github.com/go-oauth2/oauth2/v4/store"
)
func main() {
manager := manage.NewDefaultManager()
// token store
manager.MustTokenStorage(store.NewFileTokenStore("data.db"))
// client store
clientStore := store.NewClientStore()
clientStore.Set("000000", &models.Client{
ID: "000000",
Secret: "999999",
Domain: "http://localhost",
})
manager.MapClientStorage(clientStore)
// Initialize the oauth2 service
ginserver.InitServer(manager)
ginserver.SetAllowGetAccessRequest(true)
ginserver.SetClientInfoHandler(server.ClientFormHandler)
g := gin.Default()
auth := g.Group("/oauth2")
{
auth.GET("/token", ginserver.HandleTokenRequest)
}
api := g.Group("/api")
{
api.Use(ginserver.HandleTokenVerify())
api.GET("/test", func(c *gin.Context) {
ti, exists := c.Get(ginserver.DefaultConfig.TokenKey)
if exists {
c.JSON(http.StatusOK, ti)
return
}
c.String(http.StatusOK, "not found")
})
}
g.Run(":9096")
}
Build and run
$ go build server.go
$ ./server
Open in your web browser
The token information
http://localhost:9096/oauth2/token?grant_type=client_credentials&client_id=000000&client_secret=999999&scope=read
{
"access_token": "AJPNSQO2PCITABYX0RFLWG",
"expires_in": 7200,
"scope": "read",
"token_type": "Bearer"
}
The authentication token
http://localhost:9096/api/test?access_token=AJPNSQO2PCITABYX0RFLWG
{
"ClientID": "000000",
"UserID": "",
"RedirectURI": "",
"Scope": "read",
"Code": "",
"CodeCreateAt": "0001-01-01T00:00:00Z",
"CodeExpiresIn": 0,
"Access": "AJPNSQO2PCITABYX0RFLWG",
"AccessCreateAt": "2016-11-29T09:00:52.617250916+08:00",
"AccessExpiresIn": 7200000000000,
"Refresh": "",
"RefreshCreateAt": "0001-01-01T00:00:00Z",
"RefreshExpiresIn": 0
}
MIT License
Copyright (c) 2016 Lyric
# Packages
No description provided by the author
# Functions
HandleAuthorizeRequest the authorization request handling.
HandleTokenRequest token request handling.
HandleTokenVerify Verify the access token of the middleware.
InitServer Initialize the service.
SetAccessTokenExpHandler set expiration date for the access token.
SetAllowedGrantType allow the grant types.
SetAllowedResponseType allow the authorization types.
SetAllowGetAccessRequest to allow GET requests for the token.
SetAuthorizeScopeHandler set scope for the access token.
SetClientAuthorizedHandler check the client allows to use this authorization grant type.
SetClientInfoHandler get client info from request.
SetClientScopeHandler check the client allows to use scope.
SetExtensionFieldsHandler in response to the access token with the extension of the field.
SetInternalErrorHandler internal error handling.
SetPasswordAuthorizationHandler get user id from username and password.
SetRefreshingScopeHandler check the scope of the refreshing token.
SetResponseErrorHandler response error handling.
SetTokenType token type.
SetUserAuthorizationHandler get user id from request authorization.
# Variables
DefaultConfig is the default middleware config.
# Type aliases
No description provided by the author