Categorygithub.com/go-oauth2/gin-server
modulepackage
1.1.0
Repository: https://github.com/go-oauth2/gin-server.git
Documentation: pkg.go.dev

# README

Gin OAuth 2.0 Server

Using Gin framework implementation OAuth 2.0 services

License ReportCard GoDoc

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.

# Structs

No description provided by the author

# Type aliases

No description provided by the author