Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -26,3 +26,5 @@ _testmain.go
# OSX
*.DS_Store
*.db
/example/client/client
/example/server/server
25 changes: 6 additions & 19 deletions errors/error.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,25 +2,12 @@ package errors

import "errors"

// known errors
var (
// ErrNilValue Nil Value
ErrNilValue = errors.New("nil value")

// ErrInvalidRedirectURI invalid redirect uri
ErrInvalidRedirectURI = errors.New("invalid redirect uri")

// ErrInvalidAuthorizeCode invalid authorize code
ErrInvalidRedirectURI = errors.New("invalid redirect uri")
ErrInvalidAuthorizeCode = errors.New("invalid authorize code")

// ErrInvalidAccessToken invalid access token
ErrInvalidAccessToken = errors.New("invalid access token")

// ErrInvalidRefreshToken invalid refresh token
ErrInvalidRefreshToken = errors.New("invalid refresh token")

// ErrExpiredAccessToken expired access token
ErrExpiredAccessToken = errors.New("expired access token")

// ErrExpiredRefreshToken expired refresh token
ErrExpiredRefreshToken = errors.New("expired refresh token")
ErrInvalidAccessToken = errors.New("invalid access token")
ErrInvalidRefreshToken = errors.New("invalid refresh token")
ErrExpiredAccessToken = errors.New("expired access token")
ErrExpiredRefreshToken = errors.New("expired refresh token")
)
38 changes: 10 additions & 28 deletions errors/response.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,36 +10,18 @@ type Response struct {
StatusCode int `json:"-"`
}

// https://tools.ietf.org/html/rfc6749#section-5.2
var (
// ErrInvalidRequest invalid request
ErrInvalidRequest = errors.New("invalid_request")

// ErrUnauthorizedClient unauthorized client
ErrUnauthorizedClient = errors.New("unauthorized_client")

// ErrAccessDenied access denied
ErrAccessDenied = errors.New("access_denied")

// ErrUnsupportedResponseType unsupported response type
ErrInvalidRequest = errors.New("invalid_request")
ErrUnauthorizedClient = errors.New("unauthorized_client")
ErrAccessDenied = errors.New("access_denied")
ErrUnsupportedResponseType = errors.New("unsupported_response_type")

// ErrInvalidScope invalid scope
ErrInvalidScope = errors.New("invalid_scope")

// ErrServerError server error
ErrServerError = errors.New("server_error")

// ErrTemporarilyUnavailable temporarily unavailable
ErrTemporarilyUnavailable = errors.New("temporarily_unavailable")

// ErrInvalidClient invalid client
ErrInvalidClient = errors.New("invalid_client")

// ErrInvalidGrant invalid grant
ErrInvalidGrant = errors.New("invalid_grant")

// ErrUnsupportedGrantType unsupported grant type
ErrUnsupportedGrantType = errors.New("unsupported_grant_type")
ErrInvalidScope = errors.New("invalid_scope")
ErrServerError = errors.New("server_error")
ErrTemporarilyUnavailable = errors.New("temporarily_unavailable")
ErrInvalidClient = errors.New("invalid_client")
ErrInvalidGrant = errors.New("invalid_grant")
ErrUnsupportedGrantType = errors.New("unsupported_grant_type")
)

// Descriptions error description
Expand Down
6 changes: 4 additions & 2 deletions example/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,17 @@ Run Server

``` bash
$ cd example/server
$ go run main.go
$ go build server.go
$ ./server
```

Run Client
----------

```
$ cd example/client
$ go run main.go
$ go build client.go
$ ./client
```

Open the browser
Expand Down
File renamed without changes.
File renamed without changes.
19 changes: 11 additions & 8 deletions manage.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,27 +18,30 @@ type TokenGenerateRequest struct {

// Manager Authorization management interface
type Manager interface {
// GetClient Get the client information
// Check the interface implementation
CheckInterface() (err error)

// Get the client information
GetClient(clientID string) (cli ClientInfo, err error)

// GenerateAuthToken Generate the authorization token(code)
// Generate the authorization token(code)
GenerateAuthToken(rt ResponseType, tgr *TokenGenerateRequest) (authToken TokenInfo, err error)

// GenerateAccessToken Generate the access token
// Generate the access token
GenerateAccessToken(rt GrantType, tgr *TokenGenerateRequest) (accessToken TokenInfo, err error)

// RefreshAccessToken Refreshing an access token
// Refreshing an access token
RefreshAccessToken(tgr *TokenGenerateRequest) (accessToken TokenInfo, err error)

// RemoveAccessToken Use the access token to delete the token information
// Use the access token to delete the token information
RemoveAccessToken(access string) (err error)

// RemoveRefreshToken Use the refresh token to delete the token information
// Use the refresh token to delete the token information
RemoveRefreshToken(refresh string) (err error)

// LoadAccessToken According to the access token for corresponding token information
// According to the access token for corresponding token information
LoadAccessToken(access string) (ti TokenInfo, err error)

// LoadRefreshToken According to the refresh token for corresponding token information
// According to the refresh token for corresponding token information
LoadRefreshToken(refresh string) (ti TokenInfo, err error)
}
23 changes: 23 additions & 0 deletions manage/config.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package manage

import "time"

// Config authorization configuration parameters
type Config struct {
// access token expiration time (in seconds)
AccessTokenExp time.Duration
// refresh token expiration time(in seconds)
RefreshTokenExp time.Duration
// whether to generate the refreshing token
IsGenerateRefresh bool
}

// default configs
var (
DefaultCodeExp = time.Minute * 10
DefaultAuthorizeCodeTokenCfg = &Config{AccessTokenExp: time.Hour * 2, RefreshTokenExp: time.Hour * 24 * 3, IsGenerateRefresh: true}
DefaultImplicitTokenCfg = &Config{AccessTokenExp: time.Hour * 1}
DefaultPasswordTokenCfg = &Config{AccessTokenExp: time.Hour * 2, RefreshTokenExp: time.Hour * 24 * 7, IsGenerateRefresh: true}
DefaultClientTokenCfg = &Config{AccessTokenExp: time.Hour * 2}
DefaultRefreshTokenCfg = &Config{}
)
7 changes: 6 additions & 1 deletion manage/manage_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,12 @@ func TestManager(t *testing.T) {
Convey("Manager test", t, func() {
manager := manage.NewDefaultManager()
manager.MapClientStorage(store.NewTestClientStore())
manager.MustTokenStorage(store.NewMemoryTokenStore())

Convey("CheckInterface test", func() {
err := manager.CheckInterface()
So(err, ShouldBeNil)
})

Convey("GetClient test", func() {
cli, err := manager.GetClient("1")
Expand All @@ -22,7 +28,6 @@ func TestManager(t *testing.T) {
})

Convey("Token test", func() {
manager.MustTokenStorage(store.NewMemoryTokenStore())
testManager(manager)
})
})
Expand Down
Loading