Merge pull request #1908 from bnu0/bnu-fix-etcd-pkce

Fix the etcd PKCE AuthCode deserialization
This commit is contained in:
Márk Sági-Kazár 2021-01-13 19:43:02 +01:00 committed by GitHub
commit 1fbfaa9951
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 1 deletions

View file

@ -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",

View file

@ -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
} }

View file

@ -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,