forked from mystiq/dex
Merge pull request #1908 from bnu0/bnu-fix-etcd-pkce
Fix the etcd PKCE AuthCode deserialization
This commit is contained in:
commit
1fbfaa9951
3 changed files with 27 additions and 1 deletions
|
@ -185,6 +185,10 @@ func testAuthCodeCRUD(t *testing.T, s storage.Storage) {
|
||||||
Expiry: neverExpire,
|
Expiry: neverExpire,
|
||||||
ConnectorID: "ldap",
|
ConnectorID: "ldap",
|
||||||
ConnectorData: []byte(`{"some":"data"}`),
|
ConnectorData: []byte(`{"some":"data"}`),
|
||||||
|
PKCE: storage.PKCE{
|
||||||
|
CodeChallenge: "12345",
|
||||||
|
CodeChallengeMethod: "Whatever",
|
||||||
|
},
|
||||||
Claims: storage.Claims{
|
Claims: storage.Claims{
|
||||||
UserID: "1",
|
UserID: "1",
|
||||||
Username: "jane",
|
Username: "jane",
|
||||||
|
|
|
@ -156,7 +156,11 @@ func (c *conn) CreateAuthCode(a storage.AuthCode) error {
|
||||||
func (c *conn) GetAuthCode(id string) (a storage.AuthCode, err error) {
|
func (c *conn) GetAuthCode(id string) (a storage.AuthCode, err error) {
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), defaultStorageTimeout)
|
ctx, cancel := context.WithTimeout(context.Background(), defaultStorageTimeout)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
err = c.getKey(ctx, keyID(authCodePrefix, id), &a)
|
var ac AuthCode
|
||||||
|
err = c.getKey(ctx, keyID(authCodePrefix, id), &ac)
|
||||||
|
if err == nil {
|
||||||
|
a = toStorageAuthCode(ac)
|
||||||
|
}
|
||||||
return a, err
|
return a, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,24 @@ type AuthCode struct {
|
||||||
CodeChallengeMethod string `json:"code_challenge_method,omitempty"`
|
CodeChallengeMethod string `json:"code_challenge_method,omitempty"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func toStorageAuthCode(a AuthCode) storage.AuthCode {
|
||||||
|
return storage.AuthCode{
|
||||||
|
ID: a.ID,
|
||||||
|
ClientID: a.ClientID,
|
||||||
|
RedirectURI: a.RedirectURI,
|
||||||
|
ConnectorID: a.ConnectorID,
|
||||||
|
ConnectorData: a.ConnectorData,
|
||||||
|
Nonce: a.Nonce,
|
||||||
|
Scopes: a.Scopes,
|
||||||
|
Claims: toStorageClaims(a.Claims),
|
||||||
|
Expiry: a.Expiry,
|
||||||
|
PKCE: storage.PKCE{
|
||||||
|
CodeChallenge: a.CodeChallenge,
|
||||||
|
CodeChallengeMethod: a.CodeChallengeMethod,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func fromStorageAuthCode(a storage.AuthCode) AuthCode {
|
func fromStorageAuthCode(a storage.AuthCode) AuthCode {
|
||||||
return AuthCode{
|
return AuthCode{
|
||||||
ID: a.ID,
|
ID: a.ID,
|
||||||
|
|
Loading…
Reference in a new issue