Skip to content

Commit b7cbd16

Browse files
committed
adapt existing functions to possibility that a mytoken is rotated
1 parent a76cc65 commit b7cbd16

File tree

4 files changed

+41
-20
lines changed

4 files changed

+41
-20
lines changed

accesstoken.go

+5-2
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,14 @@ import (
44
"github.com/oidc-mytoken/api/v0"
55
)
66

7-
func (my *MytokenServer) GetAccessToken(mytoken, oidcIssuer string, scopes, audiences []string, comment string) (string, error) {
8-
req := NewAccessTokenRequest(oidcIssuer, mytoken, scopes, audiences, comment)
7+
func (my *MytokenServer) GetAccessToken(mytoken *string, oidcIssuer string, scopes, audiences []string, comment string) (string, error) {
8+
req := NewAccessTokenRequest(oidcIssuer, *mytoken, scopes, audiences, comment)
99
var resp api.AccessTokenResponse
1010
if err := doHTTPRequest("POST", my.AccessTokenEndpoint, req, &resp); err != nil {
1111
return "", err
1212
}
13+
if resp.TokenUpdate != nil {
14+
*mytoken = resp.TokenUpdate.Mytoken
15+
}
1316
return resp.AccessToken, nil
1417
}

mytoken.go

+17-8
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,19 @@ import (
88
"github.com/oidc-mytoken/api/v0"
99
)
1010

11-
func (my *MytokenServer) GetMytoken(req interface{}) (string, error) {
11+
func (my *MytokenServer) GetMytoken(req interface{}) (string, *string, error) {
1212
var resp api.MytokenResponse
1313
if err := doHTTPRequest("POST", my.MytokenEndpoint, req, &resp); err != nil {
14-
return "", err
14+
return "", nil, err
15+
}
16+
var mtUpdate *string
17+
if resp.TokenUpdate != nil {
18+
mtUpdate = &resp.TokenUpdate.Mytoken
1519
}
16-
return resp.Mytoken, nil
20+
return resp.Mytoken, mtUpdate, nil
1721
}
1822

19-
func (my *MytokenServer) GetMytokenByMytoken(mytoken, issuer string, restrictions api.Restrictions, capabilities, subtokenCapabilities api.Capabilities, responseType, name string) (string, error) {
23+
func (my *MytokenServer) GetMytokenByMytoken(mytoken *string, issuer string, restrictions api.Restrictions, capabilities, subtokenCapabilities api.Capabilities, responseType, name string) (string, error) {
2024
req := api.MytokenFromMytokenRequest{
2125
GeneralMytokenRequest: api.GeneralMytokenRequest{
2226
Issuer: issuer,
@@ -27,17 +31,22 @@ func (my *MytokenServer) GetMytokenByMytoken(mytoken, issuer string, restriction
2731
Name: name,
2832
ResponseType: responseType,
2933
},
30-
Mytoken: mytoken,
34+
Mytoken: *mytoken,
35+
}
36+
mt, mtUpdate, err := my.GetMytoken(req)
37+
if mtUpdate != nil {
38+
*mytoken = *mtUpdate
3139
}
32-
return my.GetMytoken(req)
40+
return mt, err
3341
}
3442

3543
func (my *MytokenServer) GetMytokenByTransferCode(transferCode string) (string, error) {
3644
req := api.ExchangeTransferCodeRequest{
3745
GrantType: api.GrantTypeTransferCode,
3846
TransferCode: transferCode,
3947
}
40-
return my.GetMytoken(req)
48+
mt, _, err := my.GetMytoken(req)
49+
return mt, err
4150
}
4251

4352
type PollingCallbacks struct {
@@ -116,7 +125,7 @@ func (my *MytokenServer) PollOnce(pollingCode string) (string, bool, error) {
116125
PollingCode: pollingCode,
117126
}
118127

119-
tok, err := my.GetMytoken(req)
128+
tok, _, err := my.GetMytoken(req)
120129
if err == nil {
121130
return tok, true, nil
122131
}

revoke.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import (
44
"github.com/oidc-mytoken/api/v0"
55
)
66

7-
func (my *MytokenServer) Revoke(mytoken, oidcIssuer string, recursive bool) error {
7+
func (my *MytokenServer) Revoke(mytoken string, oidcIssuer string, recursive bool) error {
88
req := api.RevocationRequest{
99
Token: mytoken,
1010
Recursive: recursive,

tokeninfo.go

+18-9
Original file line numberDiff line numberDiff line change
@@ -15,36 +15,45 @@ func (my *MytokenServer) TokeninfoIntrospect(mytoken string) (*api.TokeninfoIntr
1515
}
1616
return &resp, nil
1717
}
18-
func (my *MytokenServer) TokeninfoHistory(mytoken string) (*api.TokeninfoHistoryResponse, error) {
18+
func (my *MytokenServer) TokeninfoHistory(mytoken *string) (api.EventHistory, error) {
1919
req := api.TokenInfoRequest{
2020
Action: api.TokeninfoActionEventHistory,
21-
Mytoken: mytoken,
21+
Mytoken: *mytoken,
2222
}
2323
var resp api.TokeninfoHistoryResponse
2424
if err := doHTTPRequest("POST", my.TokeninfoEndpoint, req, &resp); err != nil {
2525
return nil, err
2626
}
27-
return &resp, nil
27+
if resp.TokenUpdate != nil {
28+
*mytoken = resp.TokenUpdate.Mytoken
29+
}
30+
return resp.EventHistory, nil
2831
}
29-
func (my *MytokenServer) TokeninfoSubtokens(mytoken string) (*api.TokeninfoTreeResponse, error) {
32+
func (my *MytokenServer) TokeninfoSubtokens(mytoken *string) (*api.MytokenEntryTree, error) {
3033
req := api.TokenInfoRequest{
3134
Action: api.TokeninfoActionSubtokenTree,
32-
Mytoken: mytoken,
35+
Mytoken: *mytoken,
3336
}
3437
var resp api.TokeninfoTreeResponse
3538
if err := doHTTPRequest("POST", my.TokeninfoEndpoint, req, &resp); err != nil {
3639
return nil, err
3740
}
38-
return &resp, nil
41+
if resp.TokenUpdate != nil {
42+
*mytoken = resp.TokenUpdate.Mytoken
43+
}
44+
return &resp.Tokens, nil
3945
}
40-
func (my *MytokenServer) TokeninfoListMytokens(mytoken string) (*api.TokeninfoListResponse, error) {
46+
func (my *MytokenServer) TokeninfoListMytokens(mytoken *string) ([]api.MytokenEntryTree, error) {
4147
req := api.TokenInfoRequest{
4248
Action: api.TokeninfoActionListMytokens,
43-
Mytoken: mytoken,
49+
Mytoken: *mytoken,
4450
}
4551
var resp api.TokeninfoListResponse
4652
if err := doHTTPRequest("POST", my.TokeninfoEndpoint, req, &resp); err != nil {
4753
return nil, err
4854
}
49-
return &resp, nil
55+
if resp.TokenUpdate != nil {
56+
*mytoken = resp.TokenUpdate.Mytoken
57+
}
58+
return resp.Tokens, nil
5059
}

0 commit comments

Comments
 (0)