fixed examples
This commit is contained in:
parent
c0b7bb2ca5
commit
2bab9f178a
1
.gitignore
vendored
1
.gitignore
vendored
@ -22,4 +22,5 @@ _testmain.go
|
|||||||
*.exe
|
*.exe
|
||||||
*.test
|
*.test
|
||||||
*.prof
|
*.prof
|
||||||
|
*.swp
|
||||||
/examples/server
|
/examples/server
|
||||||
|
58
README.md
58
README.md
@ -23,28 +23,48 @@ import (
|
|||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/go-oauth2/gin-server"
|
"github.com/go-oauth2/gin-server"
|
||||||
"gopkg.in/oauth2.v3/manage"
|
"gopkg.in/oauth2.v3/manage"
|
||||||
|
"gopkg.in/oauth2.v3/models"
|
||||||
|
aserver "gopkg.in/oauth2.v3/server"
|
||||||
"gopkg.in/oauth2.v3/store"
|
"gopkg.in/oauth2.v3/store"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
manager := manage.NewDefaultManager()
|
manager := manage.NewDefaultManager()
|
||||||
|
|
||||||
|
// token store
|
||||||
manager.MustTokenStorage(store.NewMemoryTokenStore())
|
manager.MustTokenStorage(store.NewMemoryTokenStore())
|
||||||
manager.MapClientStorage(store.NewTestClientStore())
|
|
||||||
|
// client store
|
||||||
|
clientStore := store.NewClientStore()
|
||||||
|
clientStore.Set("000000", &models.Client{
|
||||||
|
ID: "000000",
|
||||||
|
Secret: "999999",
|
||||||
|
Domain: "http://localhost",
|
||||||
|
})
|
||||||
|
manager.MapClientStorage(clientStore)
|
||||||
|
|
||||||
// Initialize the oauth2 service
|
// Initialize the oauth2 service
|
||||||
server.InitServer(manager)
|
server.InitServer(manager)
|
||||||
server.SetAllowGetAccessRequest(true)
|
server.SetAllowGetAccessRequest(true)
|
||||||
|
server.SetClientInfoHandler(aserver.ClientFormHandler)
|
||||||
|
|
||||||
g := gin.Default()
|
g := gin.Default()
|
||||||
g.GET("/token", server.HandleTokenRequest)
|
|
||||||
|
auth := g.Group("/oauth2")
|
||||||
|
{
|
||||||
|
auth.GET("/token", server.HandleTokenRequest)
|
||||||
|
}
|
||||||
|
|
||||||
api := g.Group("/api")
|
api := g.Group("/api")
|
||||||
{
|
{
|
||||||
api.Use(server.TokenAuth(func(c *gin.Context) string {
|
api.Use(server.HandleTokenVerify())
|
||||||
return c.Query("access_token")
|
|
||||||
}))
|
|
||||||
api.GET("/test", func(c *gin.Context) {
|
api.GET("/test", func(c *gin.Context) {
|
||||||
ti, _ := c.Get("Token")
|
ti, exists := c.Get("AccessToken")
|
||||||
c.JSON(http.StatusOK, ti)
|
if exists {
|
||||||
|
c.JSON(http.StatusOK, ti)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.String(http.StatusOK, "not found")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,12 +84,12 @@ $ ./server
|
|||||||
#### The token information
|
#### The token information
|
||||||
|
|
||||||
```
|
```
|
||||||
http://localhost:9096/token?grant_type=client_credentials&client_id=1&client_secret=11&scope=read
|
http://localhost:9096/oauth2/token?grant_type=client_credentials&client_id=000000&client_secret=999999&scope=read
|
||||||
```
|
```
|
||||||
|
|
||||||
``` json
|
``` json
|
||||||
{
|
{
|
||||||
"access_token": "ZF1M7NKDNWUUX2TCDIMZZG",
|
"access_token": "AJPNSQO2PCITABYX0RFLWG",
|
||||||
"expires_in": 7200,
|
"expires_in": 7200,
|
||||||
"scope": "read",
|
"scope": "read",
|
||||||
"token_type": "Bearer"
|
"token_type": "Bearer"
|
||||||
@ -79,7 +99,25 @@ http://localhost:9096/token?grant_type=client_credentials&client_id=1&client_sec
|
|||||||
#### The authentication token
|
#### The authentication token
|
||||||
|
|
||||||
```
|
```
|
||||||
http://localhost:9096/api/test?access_token=ZF1M7NKDNWUUX2TCDIMZZG
|
http://localhost:9096/api/test?access_token=AJPNSQO2PCITABYX0RFLWG
|
||||||
|
```
|
||||||
|
|
||||||
|
``` json
|
||||||
|
{
|
||||||
|
"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
|
## MIT License
|
||||||
|
@ -7,46 +7,49 @@ import (
|
|||||||
"github.com/go-oauth2/gin-server"
|
"github.com/go-oauth2/gin-server"
|
||||||
"gopkg.in/oauth2.v3/manage"
|
"gopkg.in/oauth2.v3/manage"
|
||||||
"gopkg.in/oauth2.v3/models"
|
"gopkg.in/oauth2.v3/models"
|
||||||
|
aserver "gopkg.in/oauth2.v3/server"
|
||||||
"gopkg.in/oauth2.v3/store"
|
"gopkg.in/oauth2.v3/store"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
initOAuth2()
|
|
||||||
|
|
||||||
g := gin.Default()
|
|
||||||
|
|
||||||
g.GET("/authorize", server.HandleAuthorizeRequest)
|
|
||||||
g.GET("/token", server.HandleTokenRequest)
|
|
||||||
api := g.Group("/api")
|
|
||||||
{
|
|
||||||
api.Use(server.TokenAuth(tokenAuthHandle))
|
|
||||||
api.GET("/test", testHandle)
|
|
||||||
}
|
|
||||||
|
|
||||||
g.Run(":9096")
|
|
||||||
}
|
|
||||||
|
|
||||||
func initOAuth2() {
|
|
||||||
manager := manage.NewDefaultManager()
|
manager := manage.NewDefaultManager()
|
||||||
|
|
||||||
// token store
|
// token store
|
||||||
manager.MustTokenStorage(store.NewMemoryTokenStore())
|
manager.MustTokenStorage(store.NewMemoryTokenStore())
|
||||||
|
|
||||||
// client store
|
// client store
|
||||||
manager.MapClientStorage(store.NewTestClientStore(&models.Client{
|
clientStore := store.NewClientStore()
|
||||||
ID: "999999",
|
clientStore.Set("000000", &models.Client{
|
||||||
|
ID: "000000",
|
||||||
Secret: "999999",
|
Secret: "999999",
|
||||||
}))
|
Domain: "http://localhost",
|
||||||
|
})
|
||||||
|
manager.MapClientStorage(clientStore)
|
||||||
|
|
||||||
// Initialize the oauth2 service
|
// Initialize the oauth2 service
|
||||||
server.InitServer(manager)
|
server.InitServer(manager)
|
||||||
server.SetAllowGetAccessRequest(true)
|
server.SetAllowGetAccessRequest(true)
|
||||||
}
|
server.SetClientInfoHandler(aserver.ClientFormHandler)
|
||||||
|
|
||||||
func tokenAuthHandle(c *gin.Context) (token string) {
|
g := gin.Default()
|
||||||
token = c.Query("access_token")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
func testHandle(c *gin.Context) {
|
auth := g.Group("/oauth2")
|
||||||
ti, _ := c.Get("Token")
|
{
|
||||||
c.JSON(http.StatusOK, ti)
|
auth.GET("/token", server.HandleTokenRequest)
|
||||||
|
}
|
||||||
|
|
||||||
|
api := g.Group("/api")
|
||||||
|
{
|
||||||
|
api.Use(server.HandleTokenVerify())
|
||||||
|
api.GET("/test", func(c *gin.Context) {
|
||||||
|
ti, exists := c.Get("AccessToken")
|
||||||
|
if exists {
|
||||||
|
c.JSON(http.StatusOK, ti)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
c.String(http.StatusOK, "not found")
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
g.Run(":9096")
|
||||||
}
|
}
|
||||||
|
11
server.go
11
server.go
@ -40,16 +40,17 @@ func HandleTokenRequest(c *gin.Context) {
|
|||||||
c.Abort()
|
c.Abort()
|
||||||
}
|
}
|
||||||
|
|
||||||
// TokenAuth Verify the access token of the middleware
|
// HandleTokenVerify Verify the access token of the middleware
|
||||||
func TokenAuth(tokenHandle func(c *gin.Context) string) gin.HandlerFunc {
|
func HandleTokenVerify() gin.HandlerFunc {
|
||||||
return func(c *gin.Context) {
|
return func(c *gin.Context) {
|
||||||
token := tokenHandle(c)
|
|
||||||
ti, err := gServer.Manager.LoadAccessToken(token)
|
ti, err := gServer.ValidationBearerToken(c.Request)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
c.AbortWithError(http.StatusUnauthorized, err)
|
c.AbortWithError(http.StatusUnauthorized, err)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
c.Set("Token", ti)
|
|
||||||
|
c.Set("AccessToken", ti)
|
||||||
c.Next()
|
c.Next()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user