diff --git a/.circleci/config.yml b/.circleci/config.yml index 1029e593d0a..98a73d14012 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -401,6 +401,11 @@ workflows: - test-e2e-mysql - test-e2e-cockroach - test-e2e-plugin + filters: + tags: + only: /.*/ + branches: + ignore: /master/ - sdk/release: requires: - test diff --git a/Makefile b/Makefile index 00ba8480dda..a9ceb82d7e4 100644 --- a/Makefile +++ b/Makefile @@ -42,9 +42,7 @@ docker: .PHONY: e2e e2e: make test-resetdb - export TEST_DATABASE_MYSQL='mysql://root:secret@(127.0.0.1:3444)/mysql?parseTime=true' - export TEST_DATABASE_POSTGRESQL='postgres://postgres:secret@127.0.0.1:3445/hydra?sslmode=disable' - export TEST_DATABASE_COCKROACHDB='cockroach://root@127.0.0.1:3446/defaultdb?sslmode=disable' + source ./scripts/test-env.sh ./test/e2e/circle-ci.bash memory ./test/e2e/circle-ci.bash memory-jwt ./test/e2e/circle-ci.bash postgres @@ -113,4 +111,4 @@ install: .PHONY: init init: GO111MODULE=on go get . - GO111MODULE=on go install github.com/ory/go-acc \ No newline at end of file + GO111MODULE=on go install github.com/ory/go-acc diff --git a/client/handler.go b/client/handler.go index 184557c6044..9a1e36dae87 100644 --- a/client/handler.go +++ b/client/handler.go @@ -204,6 +204,10 @@ func (h *Handler) List(w http.ResponseWriter, r *http.Request, ps httprouter.Par pagination.Header(w, r.URL, n, limit, offset) + if c == nil { + c = []Client{} + } + h.r.Writer().Write(w, r, c) } diff --git a/client/sql_migration_files.go b/client/sql_migration_files.go index 7a9079a88f9..22c18589560 100644 --- a/client/sql_migration_files.go +++ b/client/sql_migration_files.go @@ -1,4 +1,4 @@ -// Code generated for package client by go-bindata DO NOT EDIT. (@generated) +// Package client Code generated by go-bindata. (@generated) DO NOT EDIT. // sources: // migrations/sql/cockroach/13.sql // migrations/sql/cockroach/14.sql @@ -130,7 +130,7 @@ func migrationsSqlCockroach13Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/cockroach/13.sql", size: 1326, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/cockroach/13.sql", size: 1326, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -150,7 +150,7 @@ func migrationsSqlCockroach14Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/cockroach/14.sql", size: 145, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/cockroach/14.sql", size: 145, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -170,7 +170,7 @@ func migrationsSqlMysql11Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/11.sql", size: 173, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/11.sql", size: 173, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -190,7 +190,7 @@ func migrationsSqlMysql13Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/13.sql", size: 1075, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/13.sql", size: 1075, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -210,7 +210,7 @@ func migrationsSqlMysql14Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/14.sql", size: 226, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/14.sql", size: 226, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -230,7 +230,7 @@ func migrationsSqlMysql4Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/4.sql", size: 559, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/4.sql", size: 559, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -250,7 +250,7 @@ func migrationsSqlMysql8Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/8.sql", size: 209, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/8.sql", size: 209, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -270,7 +270,7 @@ func migrationsSqlMysql9Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/9.sql", size: 362, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/9.sql", size: 362, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -290,7 +290,7 @@ func migrationsSqlPostgres11Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/11.sql", size: 193, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/11.sql", size: 193, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -310,7 +310,7 @@ func migrationsSqlPostgres13Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/13.sql", size: 797, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/13.sql", size: 797, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -330,7 +330,7 @@ func migrationsSqlPostgres14Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/14.sql", size: 231, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/14.sql", size: 231, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -350,7 +350,7 @@ func migrationsSqlPostgres4Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/4.sql", size: 640, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/4.sql", size: 640, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -370,7 +370,7 @@ func migrationsSqlPostgres8Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/8.sql", size: 233, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/8.sql", size: 233, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -390,7 +390,7 @@ func migrationsSqlPostgres9Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/9.sql", size: 428, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/9.sql", size: 428, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -410,7 +410,7 @@ func migrationsSqlSharedGitattributes() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/.gitattributes", size: 12, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/.gitattributes", size: 12, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -430,7 +430,7 @@ func migrationsSqlSharedGitkeep() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -450,7 +450,7 @@ func migrationsSqlShared1Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/1.sql", size: 559, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/1.sql", size: 559, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -470,7 +470,7 @@ func migrationsSqlShared10Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/10.sql", size: 124, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/10.sql", size: 124, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -490,7 +490,7 @@ func migrationsSqlShared12Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/12.sql", size: 279, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/12.sql", size: 279, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -510,7 +510,7 @@ func migrationsSqlShared2Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/2.sql", size: 178, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/2.sql", size: 178, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -530,7 +530,7 @@ func migrationsSqlShared3Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/3.sql", size: 890, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/3.sql", size: 890, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -550,7 +550,7 @@ func migrationsSqlShared5Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/5.sql", size: 300, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/5.sql", size: 300, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -570,7 +570,7 @@ func migrationsSqlShared6Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/6.sql", size: 159, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/6.sql", size: 159, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -590,7 +590,7 @@ func migrationsSqlShared7Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/7.sql", size: 148, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/7.sql", size: 148, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -610,7 +610,7 @@ func migrationsSqlTestsGitkeep() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -630,7 +630,7 @@ func migrationsSqlTests10_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/10_test.sql", size: 787, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/10_test.sql", size: 787, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -650,7 +650,7 @@ func migrationsSqlTests11_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/11_test.sql", size: 809, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/11_test.sql", size: 809, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -670,7 +670,7 @@ func migrationsSqlTests12_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/12_test.sql", size: 847, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/12_test.sql", size: 847, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -690,7 +690,7 @@ func migrationsSqlTests13_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/13_test.sql", size: 1085, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/13_test.sql", size: 1085, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -710,7 +710,7 @@ func migrationsSqlTests14_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/14_test.sql", size: 1113, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/14_test.sql", size: 1113, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -730,7 +730,7 @@ func migrationsSqlTests1_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/1_test.sql", size: 437, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/1_test.sql", size: 437, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -750,7 +750,7 @@ func migrationsSqlTests2_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/2_test.sql", size: 466, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/2_test.sql", size: 466, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -770,7 +770,7 @@ func migrationsSqlTests3_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/3_test.sql", size: 715, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/3_test.sql", size: 715, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -790,7 +790,7 @@ func migrationsSqlTests4_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/4_test.sql", size: 715, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/4_test.sql", size: 715, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -810,7 +810,7 @@ func migrationsSqlTests5_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/5_test.sql", size: 692, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/5_test.sql", size: 692, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -830,7 +830,7 @@ func migrationsSqlTests6_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/6_test.sql", size: 716, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/6_test.sql", size: 716, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -850,7 +850,7 @@ func migrationsSqlTests7_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/7_test.sql", size: 772, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/7_test.sql", size: 772, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -870,7 +870,7 @@ func migrationsSqlTests8_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/8_test.sql", size: 772, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/8_test.sql", size: 772, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -890,7 +890,7 @@ func migrationsSqlTests9_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/9_test.sql", size: 772, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/9_test.sql", size: 772, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/consent/manager.go b/consent/manager.go index 218a0b70d02..469ef8471a8 100644 --- a/consent/manager.go +++ b/consent/manager.go @@ -61,8 +61,8 @@ type Manager interface { CreateForcedObfuscatedLoginSession(ctx context.Context, session *ForcedObfuscatedLoginSession) error GetForcedObfuscatedLoginSession(ctx context.Context, client, obfuscated string) (*ForcedObfuscatedLoginSession, error) - ListUserAuthenticatedClientsWithFrontChannelLogout(ctx context.Context, subject string) ([]client.Client, error) - ListUserAuthenticatedClientsWithBackChannelLogout(ctx context.Context, subject string) ([]client.Client, error) + ListUserAuthenticatedClientsWithFrontChannelLogout(ctx context.Context, subject, sid string) ([]client.Client, error) + ListUserAuthenticatedClientsWithBackChannelLogout(ctx context.Context, subject, sid string) ([]client.Client, error) CreateLogoutRequest(ctx context.Context, request *LogoutRequest) error GetLogoutRequest(ctx context.Context, challenge string) (*LogoutRequest, error) diff --git a/consent/manager_memory.go b/consent/manager_memory.go index 5fdc5c99e6c..0fcb2c290e7 100644 --- a/consent/manager_memory.go +++ b/consent/manager_memory.go @@ -30,8 +30,9 @@ import ( "github.com/pkg/errors" "github.com/ory/fosite" - "github.com/ory/hydra/x" "github.com/ory/x/pagination" + + "github.com/ory/hydra/x" ) type MemoryManager struct { @@ -459,29 +460,37 @@ func (m *MemoryManager) VerifyAndInvalidateLoginRequest(ctx context.Context, ver return nil, errors.WithStack(x.ErrNotFound) } -func (m *MemoryManager) ListUserAuthenticatedClientsWithFrontChannelLogout(ctx context.Context, subject string) ([]client.Client, error) { +func (m *MemoryManager) ListUserAuthenticatedClientsWithFrontChannelLogout(ctx context.Context, subject, sid string) ([]client.Client, error) { m.m["consentRequests"].RLock() defer m.m["consentRequests"].RUnlock() + preventDupes := make(map[string]bool) var rs []client.Client for _, cr := range m.consentRequests { - if cr.Subject == subject && len(cr.Client.FrontChannelLogoutURI) > 0 { + if cr.Subject == subject && + len(cr.Client.FrontChannelLogoutURI) > 0 && + cr.LoginSessionID == sid && + !preventDupes[cr.Client.GetID()] { + rs = append(rs, *cr.Client) + preventDupes[cr.Client.GetID()] = true } } return rs, nil } -func (m *MemoryManager) ListUserAuthenticatedClientsWithBackChannelLogout(ctx context.Context, subject string) ([]client.Client, error) { +func (m *MemoryManager) ListUserAuthenticatedClientsWithBackChannelLogout(ctx context.Context, subject, sid string) ([]client.Client, error) { m.m["consentRequests"].RLock() defer m.m["consentRequests"].RUnlock() clientsMap := make(map[string]bool) - var rs []client.Client for _, cr := range m.consentRequests { - if cr.Subject == subject && len(cr.Client.BackChannelLogoutURI) > 0 && !clientsMap[cr.Client.GetID()] { + if cr.Subject == subject && + cr.LoginSessionID == sid && + len(cr.Client.BackChannelLogoutURI) > 0 && + !(clientsMap[cr.Client.GetID()]) { rs = append(rs, *cr.Client) clientsMap[cr.Client.GetID()] = true } diff --git a/consent/manager_sql.go b/consent/manager_sql.go index 8509caf2c71..8bc131a6508 100644 --- a/consent/manager_sql.go +++ b/consent/manager_sql.go @@ -518,17 +518,17 @@ func (m *SQLManager) resolveHandledConsentRequests(ctx context.Context, requests return aa, nil } -func (m *SQLManager) ListUserAuthenticatedClientsWithFrontChannelLogout(ctx context.Context, subject string) ([]client.Client, error) { - return m.listUserAuthenticatedClients(ctx, subject, "front") +func (m *SQLManager) ListUserAuthenticatedClientsWithFrontChannelLogout(ctx context.Context, subject, sid string) ([]client.Client, error) { + return m.listUserAuthenticatedClients(ctx, subject, sid, "front") } -func (m *SQLManager) ListUserAuthenticatedClientsWithBackChannelLogout(ctx context.Context, subject string) ([]client.Client, error) { - return m.listUserAuthenticatedClients(ctx, subject, "back") +func (m *SQLManager) ListUserAuthenticatedClientsWithBackChannelLogout(ctx context.Context, subject, sid string) ([]client.Client, error) { + return m.listUserAuthenticatedClients(ctx, subject, sid, "back") } -func (m *SQLManager) listUserAuthenticatedClients(ctx context.Context, subject string, channel string) ([]client.Client, error) { +func (m *SQLManager) listUserAuthenticatedClients(ctx context.Context, subject, sid, channel string) ([]client.Client, error) { var ids []string - if err := m.DB.SelectContext(ctx, &ids, m.DB.Rebind(fmt.Sprintf(`SELECT DISTINCT(c.id) FROM hydra_client as c JOIN hydra_oauth2_consent_request as r ON (c.id = r.client_id) WHERE r.subject=? AND c.%schannel_logout_uri!='' and c.%schannel_logout_uri IS NOT NULL`, channel, channel)), subject); err != nil { + if err := m.DB.SelectContext(ctx, &ids, m.DB.Rebind(fmt.Sprintf(`SELECT DISTINCT(c.id) FROM hydra_client as c JOIN hydra_oauth2_consent_request as r ON (c.id = r.client_id) WHERE r.subject=? AND c.%schannel_logout_uri!='' AND c.%schannel_logout_uri IS NOT NULL AND r.login_session_id = ?`, channel, channel)), subject, sid); err != nil { if err == sql.ErrNoRows { return nil, errors.WithStack(x.ErrNotFound) } diff --git a/consent/manager_test_helpers.go b/consent/manager_test_helpers.go index b0bd3482822..4d39f78dfa0 100644 --- a/consent/manager_test_helpers.go +++ b/consent/manager_test_helpers.go @@ -26,10 +26,12 @@ import ( "testing" "time" + "github.com/google/uuid" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/ory/fosite" + "github.com/ory/hydra/client" "github.com/ory/hydra/x" ) @@ -86,7 +88,7 @@ func MockConsentRequest(key string, remember bool, rememberFor int, hasError boo GrantedScope: []string{"scopea" + key, "scopeb" + key}, GrantedAudience: []string{"auda" + key, "audb" + key}, Error: err, - //WasUsed: true, + // WasUsed: true, } return c, h @@ -156,12 +158,98 @@ func MockAuthRequest(key string, authAt bool) (c *LoginRequest, h *HandledLoginR Subject: c.Subject, ACR: "acr", ForceSubjectIdentifier: "forced-subject", - //WasUsed: false, + WasUsed: false, } return c, h } +func SaneMockHandleConsentRequest(t *testing.T, m Manager, c *ConsentRequest, authAt time.Time, rememberFor int, remember bool, hasError bool) *HandledConsentRequest { + var rde *RequestDeniedError + if hasError { + rde = &RequestDeniedError{ + Name: "error_name", + Description: "error_description", + Hint: "error_hint", + Code: 100, + Debug: "error_debug", + } + } + + h := &HandledConsentRequest{ + ConsentRequest: c, + RememberFor: rememberFor, + Remember: remember, + Challenge: c.Challenge, + RequestedAt: time.Now().UTC().Add(-time.Minute), + AuthenticatedAt: authAt, + GrantedScope: []string{"scopea", "scopeb"}, + GrantedAudience: []string{"auda", "audb"}, + Error: rde, + WasUsed: false, + } + + _, err := m.HandleConsentRequest(context.Background(), c.Challenge, h) + require.NoError(t, err) + return h +} + +// SaneMockConsentRequest does the same thing as MockConsentRequest but uses less insanity and implicit dependencies. +func SaneMockConsentRequest(t *testing.T, m Manager, ar *LoginRequest, skip bool) (c *ConsentRequest) { + c = &ConsentRequest{ + RequestedScope: []string{"scopea", "scopeb"}, + RequestedAudience: []string{"auda", "audb"}, + Skip: skip, + Subject: ar.Subject, + OpenIDConnectContext: &OpenIDConnectContext{ + ACRValues: []string{"1", "2"}, + UILocales: []string{"fr", "de"}, + Display: "popup", + }, + Client: ar.Client, + RequestURL: "https://request-url/path", + LoginChallenge: ar.Challenge, + LoginSessionID: ar.SessionID, + ForceSubjectIdentifier: "forced-subject", + SubjectIdentifier: "forced-subject", + ACR: "1", + AuthenticatedAt: time.Now().UTC().Add(-time.Hour), + RequestedAt: time.Now().UTC().Add(-time.Hour), + Context: map[string]interface{}{"foo": "bar"}, + + Challenge: uuid.New().String(), + Verifier: uuid.New().String(), + CSRF: uuid.New().String(), + } + + require.NoError(t, m.CreateConsentRequest(context.Background(), c)) + return c +} + +// SaneMockAuthRequest does the same thing as MockAuthRequest but uses less insanity and implicit dependencies. +func SaneMockAuthRequest(t *testing.T, m Manager, ls *LoginSession, cl *client.Client) (c *LoginRequest) { + c = &LoginRequest{ + OpenIDConnectContext: &OpenIDConnectContext{ + ACRValues: []string{"1", "2"}, + UILocales: []string{"fr", "de"}, + Display: "popup", + }, + RequestedAt: time.Now().UTC().Add(-time.Hour), + Client: cl, + Subject: ls.Subject, + RequestURL: "https://request-url/path", + Skip: true, + RequestedScope: []string{"scopea", "scopeb"}, + SessionID: ls.ID, + + CSRF: uuid.New().String(), + Challenge: uuid.New().String(), + Verifier: uuid.New().String(), + } + require.NoError(t, m.CreateLoginRequest(context.Background(), c)) + return c +} + func ManagerTests(m Manager, clientManager client.Manager, fositeManager x.FositeStorer) func(t *testing.T) { return func(t *testing.T) { t.Run("case=init-fks", func(t *testing.T) { @@ -570,126 +658,88 @@ func ManagerTests(m Manager, clientManager client.Manager, fositeManager x.Fosit require.EqualError(t, err, x.ErrNotFound.Error()) }) - t.Run("case=ListUserAuthenticatedClientsWithFrontChannelLogout", func(t *testing.T) { - for i := 0; i <= 10; i++ { - c, h := MockConsentRequest(fmt.Sprintf("LUACWFCL-%d", i), false, 0, false, false, false) - if i == 5 { - c.Client.FrontChannelLogoutURI = "http://some-url.com/" - } - c.LoginSessionID = "" // otherwise we had to create the login session as well.. - c.Subject = "subjectLUACWFCL" - clientManager.CreateClient(context.TODO(), c.Client) // Ignore errors that are caused by duplication + t.Run("case=ListUserAuthenticatedClientsWithFrontAndBackChannelLogout", func(t *testing.T) { + // The idea of this test is to create two identities (subjects) with 4 sessions each, where + // only some sessions have been associated with a client that has a front channel logout url - lc, _ := MockAuthRequest(fmt.Sprintf("LUACWFCL-%d", i), true) - lc.Challenge = fmt.Sprintf("fk-login-challenge-LUACWFCL-%d", i) - lc.SessionID = "" - require.NoError(t, m.CreateLoginRequest(context.TODO(), lc)) - - require.NoError(t, m.CreateConsentRequest(context.TODO(), c)) - _, err = m.HandleConsentRequest(context.TODO(), c.Challenge, h) - require.NoError(t, err) + subjects := make([]string, 1) + for k := range subjects { + subjects[k] = fmt.Sprintf("subject-ListUserAuthenticatedClientsWithFrontAndBackChannelLogout-%d", k) } - clients, err := m.ListUserAuthenticatedClientsWithFrontChannelLogout(context.TODO(), "subjectLUACWFCL") - require.NoError(t, err) - - require.Len(t, clients, 1) - assert.EqualValues(t, "http://some-url.com/", clients[0].FrontChannelLogoutURI) - assert.EqualValues(t, "fk-client-LUACWFCL-5", clients[0].ClientID) - }) - - t.Run("case=ListUserAuthenticatedClientsWithFrontChannelLogout-duplicateLogin", func(t *testing.T) { - c, h := MockConsentRequest("LUACWFCL-DUPLICCATE", false, 0, false, false, false) - c.Client.BackChannelLogoutURI = "http://some-url.com/" - - c.LoginSessionID = "" // otherwise we had to create the login session as well.. - c.Subject = "subjectLUACWFCL-DUPLICCATE" // otherwise we had to create the login session as well.. - clientManager.CreateClient(context.TODO(), c.Client) // Ignore errors that are caused by duplication - - for i := 0; i < 2; i++ { - lc, _ := MockAuthRequest("LUACWFCL-DUPLICCATE", true) - lc.Challenge = fmt.Sprintf("fk-login-challenge-LUACWFCL-DUPLICCATE-%d", i) - lc.Verifier = fmt.Sprintf("fk-login-verifier-LUACWFCL-DUPLICCATE-%d", i) - lc.SessionID = "" - require.NoError(t, m.CreateLoginRequest(context.TODO(), lc)) + sessions := make([]LoginSession, len(subjects)*1) + frontChannels := map[string][]client.Client{} + backChannels := map[string][]client.Client{} + for k := range sessions { + id := uuid.New().String() + subject := subjects[k%len(subjects)] + t.Run(fmt.Sprintf("create/session=%s/subject=%s", id, subject), func(t *testing.T) { + ls := &LoginSession{ + ID: id, + AuthenticatedAt: time.Now(), + Subject: subject, + } + require.NoError(t, m.CreateLoginSession(context.Background(), ls)) + + cl := &client.Client{ClientID: uuid.New().String()} + switch k % 4 { + case 0: + cl.FrontChannelLogoutURI = "http://some-url.com/" + frontChannels[id] = append(frontChannels[id], *cl) + case 1: + cl.BackChannelLogoutURI = "http://some-url.com/" + backChannels[id] = append(backChannels[id], *cl) + case 2: + cl.FrontChannelLogoutURI = "http://some-url.com/" + cl.BackChannelLogoutURI = "http://some-url.com/" + frontChannels[id] = append(frontChannels[id], *cl) + backChannels[id] = append(backChannels[id], *cl) + } + require.NoError(t, clientManager.CreateClient(context.Background(), cl)) - c.Challenge = fmt.Sprintf("challenge-LUACWFCL-DUPLICCATE-%d", i) - c.LoginChallenge = fmt.Sprintf("fk-login-challenge-LUACWFCL-DUPLICCATE-%d", i) - c.Verifier = fmt.Sprintf("verifiers-LUACWFCL-DUPLICCATE-%d", i) - require.NoError(t, m.CreateConsentRequest(context.TODO(), c)) + ar := SaneMockAuthRequest(t, m, ls, cl) + cr := SaneMockConsentRequest(t, m, ar, false) + _ = SaneMockHandleConsentRequest(t, m, cr, time.Time{}, 0, false, false) - h.Challenge = fmt.Sprintf("challenge-LUACWFCL-DUPLICCATE-%d", i) - _, err = m.HandleConsentRequest(context.TODO(), c.Challenge, h) - require.NoError(t, err) + sessions[k] = *ls + }) } - clients, err := m.ListUserAuthenticatedClientsWithBackChannelLogout(context.TODO(), "subjectLUACWFCL-DUPLICCATE") - require.NoError(t, err) - - require.Len(t, clients, 1) - assert.EqualValues(t, "http://some-url.com/", clients[0].BackChannelLogoutURI) - assert.EqualValues(t, "fk-client-LUACWFCL-DUPLICCATE", clients[0].ClientID) - }) - - t.Run("case=ListUserAuthenticatedClientsWithBackChannelLogout", func(t *testing.T) { - for i := 0; i <= 10; i++ { - c, h := MockConsentRequest(fmt.Sprintf("LUACWFBL-%d", i), false, 0, false, false, false) - if i == 5 { - c.Client.BackChannelLogoutURI = "http://some-url.com/" + for _, ls := range sessions { + check := func(t *testing.T, expected map[string][]client.Client, actual []client.Client) { + es, ok := expected[ls.ID] + if !ok { + require.Len(t, actual, 0) + return + } + require.Len(t, actual, len(es)) + + for _, e := range es { + var found bool + for _, a := range actual { + if e.ClientID == a.ClientID { + found = true + } + assert.Equal(t, e.ClientID, a.ClientID) + assert.Equal(t, e.FrontChannelLogoutURI, a.FrontChannelLogoutURI) + assert.Equal(t, e.BackChannelLogoutURI, a.BackChannelLogoutURI) + } + require.True(t, found) + } } - c.LoginSessionID = "" // otherwise we had to create the login session as well.. - c.Subject = "subjectLUACWFBL" // otherwise we had to create the login session as well.. - clientManager.CreateClient(context.TODO(), c.Client) // Ignore errors that are caused by duplication - - lc, _ := MockAuthRequest(fmt.Sprintf("LUACWFBL-%d", i), true) - lc.Challenge = fmt.Sprintf("fk-login-challenge-LUACWFBL-%d", i) - lc.SessionID = "" - require.NoError(t, m.CreateLoginRequest(context.TODO(), lc)) - require.NoError(t, m.CreateConsentRequest(context.TODO(), c)) - _, err = m.HandleConsentRequest(context.TODO(), c.Challenge, h) - require.NoError(t, err) - } - - clients, err := m.ListUserAuthenticatedClientsWithBackChannelLogout(context.TODO(), "subjectLUACWFBL") - require.NoError(t, err) - - require.Len(t, clients, 1) - assert.EqualValues(t, "http://some-url.com/", clients[0].BackChannelLogoutURI) - assert.EqualValues(t, "fk-client-LUACWFBL-5", clients[0].ClientID) - }) - - t.Run("case=ListUserAuthenticatedClientsWithBackChannelLogout-duplicateLogin", func(t *testing.T) { - c, h := MockConsentRequest("LUACWFBL-DUPLICCATE", false, 0, false, false, false) - c.Client.BackChannelLogoutURI = "http://some-url.com/" - - c.LoginSessionID = "" // otherwise we had to create the login session as well.. - c.Subject = "subjectLUACWFBL-DUPLICCATE" // otherwise we had to create the login session as well.. - clientManager.CreateClient(context.TODO(), c.Client) // Ignore errors that are caused by duplication - - for i := 0; i < 2; i++ { - lc, _ := MockAuthRequest("LUACWFBL-DUPLICCATE", true) - lc.Challenge = fmt.Sprintf("fk-login-challenge-LUACWFBL-DUPLICCATE-%d", i) - lc.Verifier = fmt.Sprintf("fk-login-verifier-LUACWFBL-DUPLICCATE-%d", i) - lc.SessionID = "" - require.NoError(t, m.CreateLoginRequest(context.TODO(), lc)) - - c.Challenge = fmt.Sprintf("challenge-LUACWFBL-DUPLICCATE-%d", i) - c.LoginChallenge = fmt.Sprintf("fk-login-challenge-LUACWFBL-DUPLICCATE-%d", i) - c.Verifier = fmt.Sprintf("verifiers-LUACWFBL-DUPLICCATE-%d", i) - require.NoError(t, m.CreateConsentRequest(context.TODO(), c)) + t.Run(fmt.Sprintf("method=ListUserAuthenticatedClientsWithFrontChannelLogout/session=%s/subject=%s", ls.ID, ls.Subject), func(t *testing.T) { + actual, err := m.ListUserAuthenticatedClientsWithFrontChannelLogout(context.TODO(), ls.Subject, ls.ID) + require.NoError(t, err) + check(t, frontChannels, actual) + }) - h.Challenge = fmt.Sprintf("challenge-LUACWFBL-DUPLICCATE-%d", i) - _, err = m.HandleConsentRequest(context.TODO(), c.Challenge, h) - require.NoError(t, err) + t.Run(fmt.Sprintf("method=ListUserAuthenticatedClientsWithBackChannelLogout/session=%s", ls.ID), func(t *testing.T) { + actual, err := m.ListUserAuthenticatedClientsWithBackChannelLogout(context.TODO(), ls.Subject, ls.ID) + require.NoError(t, err) + check(t, backChannels, actual) + }) } - - clients, err := m.ListUserAuthenticatedClientsWithBackChannelLogout(context.TODO(), "subjectLUACWFBL-DUPLICCATE") - require.NoError(t, err) - - require.Len(t, clients, 1) - assert.EqualValues(t, "http://some-url.com/", clients[0].BackChannelLogoutURI) - assert.EqualValues(t, "fk-client-LUACWFBL-DUPLICCATE", clients[0].ClientID) }) t.Run("case=LogoutRequest", func(t *testing.T) { diff --git a/consent/sql_migration_files.go b/consent/sql_migration_files.go index 1e0e4eeb9ce..de57b54b3b6 100644 --- a/consent/sql_migration_files.go +++ b/consent/sql_migration_files.go @@ -1,4 +1,4 @@ -// Code generated for package consent by go-bindata DO NOT EDIT. (@generated) +// Package consent Code generated by go-bindata. (@generated) DO NOT EDIT. // sources: // migrations/sql/cockroach/12.sql // migrations/sql/cockroach/13.sql @@ -131,7 +131,7 @@ func migrationsSqlCockroach12Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/cockroach/12.sql", size: 5322, mode: os.FileMode(420), modTime: time.Unix(1575442625, 0)} + info := bindataFileInfo{name: "migrations/sql/cockroach/12.sql", size: 5322, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -151,7 +151,7 @@ func migrationsSqlCockroach13Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/cockroach/13.sql", size: 316, mode: os.FileMode(420), modTime: time.Unix(1575540492, 0)} + info := bindataFileInfo{name: "migrations/sql/cockroach/13.sql", size: 316, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -171,7 +171,7 @@ func migrationsSqlMysqlGitkeep() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -191,7 +191,7 @@ func migrationsSqlMysql10Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/10.sql", size: 479, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/10.sql", size: 479, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -211,7 +211,7 @@ func migrationsSqlMysql12Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/12.sql", size: 267, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/12.sql", size: 267, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -231,7 +231,7 @@ func migrationsSqlMysql13Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/13.sql", size: 2745, mode: os.FileMode(420), modTime: time.Unix(1575540510, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/13.sql", size: 2745, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -251,7 +251,7 @@ func migrationsSqlMysql4Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/4.sql", size: 1002, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/4.sql", size: 1002, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -271,7 +271,7 @@ func migrationsSqlMysql5Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/5.sql", size: 1462, mode: os.FileMode(420), modTime: time.Unix(1575442625, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/5.sql", size: 1462, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -291,7 +291,7 @@ func migrationsSqlMysql6Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/6.sql", size: 266, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/6.sql", size: 266, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -311,7 +311,7 @@ func migrationsSqlMysql7Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/7.sql", size: 6246, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/7.sql", size: 6246, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -331,7 +331,7 @@ func migrationsSqlMysql8Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/8.sql", size: 597, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/8.sql", size: 597, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -351,7 +351,7 @@ func migrationsSqlPostgresGitkeep() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -371,7 +371,7 @@ func migrationsSqlPostgres10Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/10.sql", size: 447, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/10.sql", size: 447, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -391,7 +391,7 @@ func migrationsSqlPostgres12Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/12.sql", size: 253, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/12.sql", size: 253, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -411,7 +411,7 @@ func migrationsSqlPostgres13Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/13.sql", size: 1152, mode: os.FileMode(420), modTime: time.Unix(1575540510, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/13.sql", size: 1152, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -431,7 +431,7 @@ func migrationsSqlPostgres4Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/4.sql", size: 558, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/4.sql", size: 558, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -451,7 +451,7 @@ func migrationsSqlPostgres5Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/5.sql", size: 1199, mode: os.FileMode(420), modTime: time.Unix(1575442625, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/5.sql", size: 1199, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -471,7 +471,7 @@ func migrationsSqlPostgres6Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/6.sql", size: 162, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/6.sql", size: 162, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -491,7 +491,7 @@ func migrationsSqlPostgres7Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/7.sql", size: 6376, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/7.sql", size: 6376, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -511,7 +511,7 @@ func migrationsSqlPostgres8Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/8.sql", size: 349, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/8.sql", size: 349, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -531,7 +531,7 @@ func migrationsSqlSharedGitkeep() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -551,7 +551,7 @@ func migrationsSqlShared1Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/1.sql", size: 2263, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/1.sql", size: 2263, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -571,7 +571,7 @@ func migrationsSqlShared11Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/11.sql", size: 256, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/11.sql", size: 256, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -591,7 +591,7 @@ func migrationsSqlShared2Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/2.sql", size: 714, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/2.sql", size: 714, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -611,7 +611,7 @@ func migrationsSqlShared3Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/3.sql", size: 531, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/3.sql", size: 531, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -631,7 +631,7 @@ func migrationsSqlShared9Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/9.sql", size: 648, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/9.sql", size: 648, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -651,7 +651,7 @@ func migrationsSqlTestsGitkeep() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -671,7 +671,7 @@ func migrationsSqlTests10_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/10_test.sql", size: 3183, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/10_test.sql", size: 3183, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -691,7 +691,7 @@ func migrationsSqlTests11_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/11_test.sql", size: 3199, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/11_test.sql", size: 3199, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -711,7 +711,7 @@ func migrationsSqlTests12_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/12_test.sql", size: 3518, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/12_test.sql", size: 3518, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -731,7 +731,7 @@ func migrationsSqlTests13_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/13_test.sql", size: 3518, mode: os.FileMode(420), modTime: time.Unix(1575534520, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/13_test.sql", size: 3518, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -751,7 +751,7 @@ func migrationsSqlTests1_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/1_test.sql", size: 2326, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/1_test.sql", size: 2326, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -771,7 +771,7 @@ func migrationsSqlTests2_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/2_test.sql", size: 2560, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/2_test.sql", size: 2560, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -791,7 +791,7 @@ func migrationsSqlTests3_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/3_test.sql", size: 2672, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/3_test.sql", size: 2672, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -811,7 +811,7 @@ func migrationsSqlTests4_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/4_test.sql", size: 2766, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/4_test.sql", size: 2766, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -831,7 +831,7 @@ func migrationsSqlTests5_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/5_test.sql", size: 2766, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/5_test.sql", size: 2766, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -851,7 +851,7 @@ func migrationsSqlTests6_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/6_test.sql", size: 5904, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/6_test.sql", size: 5904, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -871,7 +871,7 @@ func migrationsSqlTests7_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/7_test.sql", size: 2780, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/7_test.sql", size: 2780, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -891,7 +891,7 @@ func migrationsSqlTests8_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/8_test.sql", size: 2832, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/8_test.sql", size: 2832, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -911,7 +911,7 @@ func migrationsSqlTests9_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/9_test.sql", size: 3145, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/9_test.sql", size: 3145, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/consent/strategy_default.go b/consent/strategy_default.go index 98e65a18795..9967ca67378 100644 --- a/consent/strategy_default.go +++ b/consent/strategy_default.go @@ -609,7 +609,7 @@ func (s *DefaultStrategy) verifyConsent(w http.ResponseWriter, r *http.Request, } func (s *DefaultStrategy) generateFrontChannelLogoutURLs(ctx context.Context, subject, sid string) ([]string, error) { - clients, err := s.r.ConsentManager().ListUserAuthenticatedClientsWithFrontChannelLogout(ctx, subject) + clients, err := s.r.ConsentManager().ListUserAuthenticatedClientsWithFrontChannelLogout(ctx, subject, sid) if err != nil { return nil, err } @@ -631,7 +631,7 @@ func (s *DefaultStrategy) generateFrontChannelLogoutURLs(ctx context.Context, su } func (s *DefaultStrategy) executeBackChannelLogout(ctx context.Context, subject, sid string) error { - clients, err := s.r.ConsentManager().ListUserAuthenticatedClientsWithBackChannelLogout(ctx, subject) + clients, err := s.r.ConsentManager().ListUserAuthenticatedClientsWithBackChannelLogout(ctx, subject, sid) if err != nil { return err } @@ -900,8 +900,17 @@ func (s *DefaultStrategy) completeLogout(w http.ResponseWriter, r *http.Request) } if !lr.RPInitiated { + // If this is true it means that no id_token_hint was given, so the session id and subject id + // came from an original cookie. + session, err := s.authenticationSession(w, r) if errors.Cause(err) == ErrNoAuthenticationSessionFound { + // If we end up here it means that the cookie was revoked between the initial logout request + // and ending up here - possibly due to a duplicate submit. In that case, we really have nothing to + // do because the logout was already completed, apparently! + + // We also won't call any front- or back-channel logouts because that would mean we had called them twice! + // OP initiated log out but no session was found. So let's just redirect back... http.Redirect(w, r, lr.PostLogoutRedirectURI, http.StatusFound) return nil, errors.WithStack(ErrAbortOAuth2Request) @@ -909,18 +918,18 @@ func (s *DefaultStrategy) completeLogout(w http.ResponseWriter, r *http.Request) return nil, err } - if err := s.revokeAuthenticationSession(w, r); err != nil { - return nil, err - } - if session.Subject != lr.Subject { - // Seems like the session changed mid-flight, so we won't revoke the login cookie... + // If we end up here it means that the authentication cookie changed between the initial logout request + // and landing here. That could happen because the user signed in in another browser window. In that + // case there isn't really a lot to do because we don't want to sign out a different ID, so let's just + // go to the post redirect uri without actually doing anything! http.Redirect(w, r, lr.PostLogoutRedirectURI, http.StatusFound) return nil, errors.WithStack(ErrAbortOAuth2Request) } } - if err := s.revokeAuthenticationSession(w, r); err != nil { + urls, err := s.generateFrontChannelLogoutURLs(r.Context(), lr.Subject, lr.SessionID) + if err != nil { return nil, err } @@ -928,8 +937,7 @@ func (s *DefaultStrategy) completeLogout(w http.ResponseWriter, r *http.Request) return nil, err } - urls, err := s.generateFrontChannelLogoutURLs(r.Context(), lr.Subject, lr.SessionID) - if err != nil { + if err := s.revokeAuthenticationSession(w, r); err != nil { return nil, err } diff --git a/consent/strategy_default_test.go b/consent/strategy_default_test.go index 2cd70027145..407bad9abe0 100644 --- a/consent/strategy_default_test.go +++ b/consent/strategy_default_test.go @@ -48,6 +48,9 @@ import ( "github.com/ory/fosite" "github.com/ory/fosite/token/jwt" + "github.com/ory/x/pointerx" + "github.com/ory/x/urlx" + "github.com/ory/hydra/client" . "github.com/ory/hydra/consent" "github.com/ory/hydra/driver" @@ -57,8 +60,6 @@ import ( "github.com/ory/hydra/internal/httpclient/client/admin" "github.com/ory/hydra/internal/httpclient/models" "github.com/ory/hydra/x" - "github.com/ory/x/pointerx" - "github.com/ory/x/urlx" ) func mustRSAKey() *rsa.PrivateKey { @@ -232,6 +233,7 @@ func TestStrategyLogout(t *testing.T) { d string params url.Values subject string + sessionID string lph func(t *testing.T) func(w http.ResponseWriter, r *http.Request) expectSession *HandledConsentRequest expectBody string @@ -304,8 +306,9 @@ func TestStrategyLogout(t *testing.T) { } }, }, - jar: newValidAuthCookieJar(t, reg, logoutServer.URL, "logout-session-2", "logout-subject-2"), - subject: "logout-subject-2", + jar: newValidAuthCookieJar(t, reg, logoutServer.URL, "logout-session-2", "logout-subject-2"), + subject: "logout-subject-2", + sessionID: "logout-session-2", }, { d: "should error when rp-flow without valid id token", @@ -473,6 +476,7 @@ func TestStrategyLogout(t *testing.T) { })) servers[k] = httptest.NewServer(n) c, hc := MockConsentRequest(uuid.New(), true, 100, false, false, true) + c.LoginSessionID = tc.sessionID c.Client.BackChannelLogoutURI = servers[k].URL c.Subject = tc.subject require.NoError(t, reg.ConsentManager().CreateConsentRequest(context.Background(), c)) diff --git a/cypress/helpers/index.js b/cypress/helpers/index.js index fbe22fe8852..7110586f1d9 100644 --- a/cypress/helpers/index.js +++ b/cypress/helpers/index.js @@ -61,8 +61,8 @@ export const deleteClients = () => }) .then(isStatusOk) .then(res => res.json()) - .then(body => { - body.forEach(({ client_id }) => deleteClient(client_id)); + .then((body = []) => { + (body || []).forEach(({ client_id }) => deleteClient(client_id)); }); const deleteClient = client_id => diff --git a/cypress/integration/admin/client_create.js b/cypress/integration/admin/client_create.js index 2d91f2f22d3..061a90395c6 100644 --- a/cypress/integration/admin/client_create.js +++ b/cypress/integration/admin/client_create.js @@ -2,7 +2,6 @@ import { prng } from '../../helpers'; describe('The Clients Admin Interface', function() { const nc = () => ({ - client_id: prng(), scope: 'foo openid offline_access', grant_types: ['client_credentials'] }); @@ -15,6 +14,7 @@ describe('The Clients Admin Interface', function() { Cypress.env('admin_url') + '/clients', JSON.stringify(client) ).then(response => { + console.log(response.body, client); expect(response.body.client_secret.length).to.equal(26); }); }); diff --git a/cypress/screenshots/admin/client_create.js/The Clients Admin Interface -- should return client_secret with length 26 for newly created clients without client_secret specified (failed).png b/cypress/screenshots/admin/client_create.js/The Clients Admin Interface -- should return client_secret with length 26 for newly created clients without client_secret specified (failed).png new file mode 100644 index 00000000000..efac8d84311 Binary files /dev/null and b/cypress/screenshots/admin/client_create.js/The Clients Admin Interface -- should return client_secret with length 26 for newly created clients without client_secret specified (failed).png differ diff --git a/docs/api.swagger.json b/docs/api.swagger.json index 192ab4a0177..6d78146ced6 100755 --- a/docs/api.swagger.json +++ b/docs/api.swagger.json @@ -1815,84 +1815,14 @@ } }, "definitions": { - "AttributeTypeAndValue": { - "description": "AttributeTypeAndValue mirrors the ASN.1 structure of the same name in\nRFC 5280, Section 4.1.2.4.", - "type": "object", - "properties": { - "Type": { - "$ref": "#/definitions/ObjectIdentifier" - }, - "Value": { - "type": "object" - } - } - }, - "ExtKeyUsage": { - "description": "Each of the ExtKeyUsage* constants define a unique action.", - "type": "integer", - "format": "int64", - "title": "ExtKeyUsage represents an extended set of actions that are valid for a given key." - }, - "Extension": { - "description": "Extension represents the ASN.1 structure of the same name. See RFC\n5280, section 4.2.", - "type": "object", - "properties": { - "Critical": { - "type": "boolean" - }, - "Id": { - "$ref": "#/definitions/ObjectIdentifier" - }, - "Value": { - "type": "array", - "items": { - "type": "integer", - "format": "uint8" - } - } - } - }, - "IP": { - "description": "Note that in this documentation, referring to an\nIP address as an IPv4 address or an IPv6 address\nis a semantic property of the address, not just the\nlength of the byte slice: a 16-byte slice can still\nbe an IPv4 address.", - "type": "array", - "title": "An IP is a single IP address, a slice of bytes.\nFunctions in this package accept either 4-byte (IPv4)\nor 16-byte (IPv6) slices as input.", - "items": { - "type": "integer", - "format": "uint8" - } - }, - "IPMask": { - "type": "array", - "title": "An IP mask is an IP address.", - "items": { - "type": "integer", - "format": "uint8" - } - }, - "IPNet": { - "type": "object", - "title": "An IPNet represents an IP network.", - "properties": { - "IP": { - "$ref": "#/definitions/IP" - }, - "Mask": { - "$ref": "#/definitions/IPMask" - } - } - }, - "Int": { - "description": "Operations always take pointer arguments (*Int) rather\nthan Int values, and each unique Int value requires\nits own unique *Int pointer. To \"copy\" an Int value,\nan existing (or newly allocated) Int must be set to\na new value using the Int.Set method; shallow copies\nof Ints are not supported and may lead to errors.", - "type": "object", - "title": "An Int represents a signed multi-precision integer.\nThe zero value for an Int represents the value 0." - }, "JSONWebKey": { + "description": "JSONWebKey JSONWebKey JSON web key", "type": "object", "required": [ - "alg", - "kid", + "use", "kty", - "use" + "kid", + "alg" ], "properties": { "alg": { @@ -1901,26 +1831,32 @@ "example": "RS256" }, "crv": { + "description": "crv", "type": "string", "example": "P-256" }, "d": { + "description": "d", "type": "string", "example": "T_N8I-6He3M8a7X1vWt6TGIx4xB_GP3Mb4SsZSA4v-orvJzzRiQhLlRR81naWYxfQAYt5isDI6_C2L9bdWo4FFPjGQFvNoRX-_sBJyBI_rl-TBgsZYoUlAj3J92WmY2inbA-PwyJfsaIIDceYBC-eX-xiCu6qMqkZi3MwQAFL6bMdPEM0z4JBcwFT3VdiWAIRUuACWQwrXMq672x7fMuaIaHi7XDGgt1ith23CLfaREmJku9PQcchbt_uEY-hqrFY6ntTtS4paWWQj86xLL94S-Tf6v6xkL918PfLSOTq6XCzxvlFwzBJqApnAhbwqLjpPhgUG04EDRrqrSBc5Y1BLevn6Ip5h1AhessBp3wLkQgz_roeckt-ybvzKTjESMuagnpqLvOT7Y9veIug2MwPJZI2VjczRc1vzMs25XrFQ8DpUy-bNdp89TmvAXwctUMiJdgHloJw23Cv03gIUAkDnsTqZmkpbIf-crpgNKFmQP_EDKoe8p_PXZZgfbRri3NoEVGP7Mk6yEu8LjJhClhZaBNjuWw2-KlBfOA3g79mhfBnkInee5KO9mGR50qPk1V-MorUYNTFMZIm0kFE6eYVWFBwJHLKYhHU34DoiK1VP-svZpC2uAMFNA_UJEwM9CQ2b8qe4-5e9aywMvwcuArRkAB5mBIfOaOJao3mfukKAE" }, "dp": { + "description": "dp", "type": "string", "example": "G4sPXkc6Ya9y8oJW9_ILj4xuppu0lzi_H7VTkS8xj5SdX3coE0oimYwxIi2emTAue0UOa5dpgFGyBJ4c8tQ2VF402XRugKDTP8akYhFo5tAA77Qe_NmtuYZc3C3m3I24G2GvR5sSDxUyAN2zq8Lfn9EUms6rY3Ob8YeiKkTiBj0" }, "dq": { + "description": "dq", "type": "string", "example": "s9lAH9fggBsoFR8Oac2R_E2gw282rT2kGOAhvIllETE1efrA6huUUvMfBcMpn8lqeW6vzznYY5SSQF7pMdC_agI3nG8Ibp1BUb0JUiraRNqUfLhcQb_d9GF4Dh7e74WbRsobRonujTYN1xCaP6TO61jvWrX-L18txXw494Q_cgk" }, "e": { + "description": "e", "type": "string", "example": "AQAB" }, "k": { + "description": "k", "type": "string", "example": "GawgguFyGrWKav7AX4VKUg" }, @@ -1935,18 +1871,22 @@ "example": "RSA" }, "n": { + "description": "n", "type": "string", "example": "vTqrxUyQPl_20aqf5kXHwDZrel-KovIp8s7ewJod2EXHl8tWlRB3_Rem34KwBfqlKQGp1nqah-51H4Jzruqe0cFP58hPEIt6WqrvnmJCXxnNuIB53iX_uUUXXHDHBeaPCSRoNJzNysjoJ30TIUsKBiirhBa7f235PXbKiHducLevV6PcKxJ5cY8zO286qJLBWSPm-OIevwqsIsSIH44Qtm9sioFikhkbLwoqwWORGAY0nl6XvVOlhADdLjBSqSAeT1FPuCDCnXwzCDR8N9IFB_IjdStFkC-rVt2K5BYfPd0c3yFp_vHR15eRd0zJ8XQ7woBC8Vnsac6Et1pKS59pX6256DPWu8UDdEOolKAPgcd_g2NpA76cAaF_jcT80j9KrEzw8Tv0nJBGesuCjPNjGs_KzdkWTUXt23Hn9QJsdc1MZuaW0iqXBepHYfYoqNelzVte117t4BwVp0kUM6we0IqyXClaZgOI8S-WDBw2_Ovdm8e5NmhYAblEVoygcX8Y46oH6bKiaCQfKCFDMcRgChme7AoE1yZZYsPbaG_3IjPrC4LBMHQw8rM9dWjJ8ImjicvZ1pAm0dx-KHCP3y5PVKrxBDf1zSOsBRkOSjB8TPODnJMz6-jd5hTtZxpZPwPoIdCanTZ3ZD6uRBpTmDwtpRGm63UQs1m5FWPwb0T2IF0" }, "p": { + "description": "p", "type": "string", "example": "6NbkXwDWUhi-eR55Cgbf27FkQDDWIamOaDr0rj1q0f1fFEz1W5A_09YvG09Fiv1AO2-D8Rl8gS1Vkz2i0zCSqnyy8A025XOcRviOMK7nIxE4OH_PEsko8dtIrb3TmE2hUXvCkmzw9EsTF1LQBOGC6iusLTXepIC1x9ukCKFZQvdgtEObQ5kzd9Nhq-cdqmSeMVLoxPLd1blviVT9Vm8-y12CtYpeJHOaIDtVPLlBhJiBoPKWg3vxSm4XxIliNOefqegIlsmTIa3MpS6WWlCK3yHhat0Q-rRxDxdyiVdG_wzJvp0Iw_2wms7pe-PgNPYvUWH9JphWP5K38YqEBiJFXQ" }, "q": { + "description": "q", "type": "string", "example": "0A1FmpOWR91_RAWpqreWSavNaZb9nXeKiBo0DQGBz32DbqKqQ8S4aBJmbRhJcctjCLjain-ivut477tAUMmzJwVJDDq2MZFwC9Q-4VYZmFU4HJityQuSzHYe64RjN-E_NQ02TWhG3QGW6roq6c57c99rrUsETwJJiwS8M5p15Miuz53DaOjv-uqqFAFfywN5WkxHbraBcjHtMiQuyQbQqkCFh-oanHkwYNeytsNhTu2mQmwR5DR2roZ2nPiFjC6nsdk-A7E3S3wMzYYFw7jvbWWoYWo9vB40_MY2Y0FYQSqcDzcBIcq_0tnnasf3VW4Fdx6m80RzOb2Fsnln7vKXAQ" }, "qi": { + "description": "qi", "type": "string", "example": "GyM_p6JrXySiz1toFgKbWV-JdI3jQ4ypu9rbMWx3rQJBfmt0FoYzgUIZEVFEcOqwemRN81zoDAaa-Bk0KWNGDjJHZDdDmFhW3AN7lI-puxk_mHZGJ11rxyR8O55XLSe3SPmRfKwZI6yU24ZxvQKFYItdldUKGzO6Ia6zTKhAVRU" }, @@ -1956,6 +1896,7 @@ "example": "sig" }, "x": { + "description": "x", "type": "string", "example": "f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU" }, @@ -1967,12 +1908,14 @@ } }, "y": { + "description": "y", "type": "string", "example": "x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0" } } }, "JSONWebKeySet": { + "description": "JSONWebKeySet JSON web key set", "type": "object", "properties": { "keys": { @@ -1984,58 +1927,6 @@ } } }, - "KeyUsage": { - "description": "KeyUsage represents the set of actions that are valid for a given key. It's\na bitmap of the KeyUsage* constants.", - "type": "integer", - "format": "int64" - }, - "Name": { - "description": "Name represents an X.509 distinguished name. This only includes the common\nelements of a DN. When parsing, all elements are stored in Names and\nnon-standard elements can be extracted from there. When marshaling, elements\nin ExtraNames are appended and override other values with the same OID.", - "type": "object", - "properties": { - "Country": { - "type": "array", - "items": { - "type": "string" - } - }, - "ExtraNames": { - "type": "array", - "items": { - "$ref": "#/definitions/AttributeTypeAndValue" - } - }, - "Locality": { - "type": "array", - "items": { - "type": "string" - } - }, - "Names": { - "type": "array", - "items": { - "$ref": "#/definitions/AttributeTypeAndValue" - } - }, - "SerialNumber": { - "type": "string" - }, - "StreetAddress": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, - "ObjectIdentifier": { - "type": "array", - "title": "An ObjectIdentifier represents an ASN.1 OBJECT IDENTIFIER.", - "items": { - "type": "integer", - "format": "int64" - } - }, "PreviousConsentSession": { "description": "PreviousConsentSession PreviousConsentSession PreviousConsentSession PreviousConsentSession PreviousConsentSession PreviousConsentSession PreviousConsentSession PreviousConsentSession PreviousConsentSession PreviousConsentSession The response used to return used consent requests\nsame as HandledLoginRequest, just with consent_request exposed as json", "type": "object", @@ -2071,55 +1962,9 @@ } } }, - "PublicKeyAlgorithm": { - "type": "integer", - "format": "int64" - }, - "SignatureAlgorithm": { - "type": "integer", - "format": "int64" - }, - "URL": { - "description": "The general form represented is:\n\n[scheme:][//[userinfo@]host][/]path[?query][#fragment]\n\nURLs that do not start with a slash after the scheme are interpreted as:\n\nscheme:opaque[?query][#fragment]\n\nNote that the Path field is stored in decoded form: /%47%6f%2f becomes /Go/.\nA consequence is that it is impossible to tell which slashes in the Path were\nslashes in the raw URL and which were %2f. This distinction is rarely important,\nbut when it is, the code should use RawPath, an optional field which only gets\nset if the default encoding is different from Path.\n\nURL's String method uses the EscapedPath method to obtain the path. See the\nEscapedPath method for more details.", - "type": "object", - "title": "A URL represents a parsed URL (technically, a URI reference).", - "properties": { - "ForceQuery": { - "type": "boolean" - }, - "Fragment": { - "type": "string" - }, - "Host": { - "type": "string" - }, - "Opaque": { - "type": "string" - }, - "Path": { - "type": "string" - }, - "RawPath": { - "type": "string" - }, - "RawQuery": { - "type": "string" - }, - "Scheme": { - "type": "string" - }, - "User": { - "$ref": "#/definitions/Userinfo" - } - } - }, - "Userinfo": { - "description": "The Userinfo type is an immutable encapsulation of username and\npassword details for a URL. An existing Userinfo value is guaranteed\nto have a username set (potentially empty, as allowed by RFC 2396),\nand optionally a password.", - "type": "object" - }, "acceptConsentRequest": { "type": "object", - "title": "AcceptConsentRequest The request payload used to accept a consent request.", + "title": "The request payload used to accept a consent request.", "properties": { "grant_access_token_audience": { "description": "GrantedAudience sets the audience the user authorized the client to use. Should be a subset of `requested_access_token_audience`.", @@ -2151,7 +1996,7 @@ }, "acceptLoginRequest": { "type": "object", - "title": "AcceptLoginRequest AcceptLoginRequest HandledLoginRequest is the request payload used to accept a login request.", + "title": "AcceptLoginRequest AcceptLoginRequest AcceptLoginRequest HandledLoginRequest is the request payload used to accept a login request.", "required": [ "subject" ], @@ -2198,7 +2043,7 @@ }, "consentRequest": { "type": "object", - "title": "ConsentRequest ConsentRequest ConsentRequest Contains information on an ongoing consent request.", + "title": "Contains information on an ongoing consent request.", "properties": { "acr": { "description": "ACR represents the Authentication AuthorizationContext Class Reference value for this authentication session. You can use it\nto express that, for example, a user authenticated using two factor authentication.", @@ -2332,6 +2177,7 @@ } }, "healthStatus": { + "description": "HealthStatus HealthStatus HealthStatus health status", "type": "object", "properties": { "status": { @@ -2341,11 +2187,12 @@ } }, "jsonWebKeySetGeneratorRequest": { + "description": "JSONWebKeySetGeneratorRequest json web key set generator request", "type": "object", "required": [ "alg", - "kid", - "use" + "use", + "kid" ], "properties": { "alg": { @@ -2364,7 +2211,7 @@ }, "loginRequest": { "type": "object", - "title": "LoginRequest LoginRequest LoginRequest LoginRequest LoginRequest LoginRequest LoginRequest Contains information on an ongoing login request.", + "title": "LoginRequest Contains information on an ongoing login request.", "properties": { "challenge": { "description": "Challenge is the identifier (\"login challenge\") of the login request. It is used to\nidentify the session.", @@ -2410,7 +2257,7 @@ }, "logoutRequest": { "type": "object", - "title": "LogoutRequest LogoutRequest Contains information about an ongoing logout request.", + "title": "Contains information about an ongoing logout request.", "properties": { "request_url": { "description": "RequestURL is the original Logout URL requested.", @@ -2596,7 +2443,7 @@ "oAuth2TokenIntrospection": { "description": "https://tools.ietf.org/html/rfc7662", "type": "object", - "title": "Introspection contains an access token's session data as specified by IETF RFC 7662, see:", + "title": "OAuth2TokenIntrospection Introspection contains an access token's session data as specified by IETF RFC 7662, see:", "required": [ "active" ], @@ -2665,7 +2512,7 @@ } }, "oauth2TokenResponse": { - "description": "Oauth2TokenResponse The Access Token Response", + "description": "Oauth2TokenResponse Oauth2TokenResponse The Access Token Response", "type": "object", "properties": { "access_token": { @@ -2758,7 +2605,7 @@ } }, "userinfoResponse": { - "description": "The userinfo response", + "description": "UserinfoResponse UserinfoResponse UserinfoResponse The userinfo response", "type": "object", "properties": { "birthdate": { @@ -2841,6 +2688,7 @@ } }, "version": { + "description": "Version version", "type": "object", "properties": { "version": { @@ -2852,15 +2700,15 @@ "wellKnown": { "description": "It includes links to several endpoints (e.g. /oauth2/token) and exposes information on supported signature algorithms\namong others.", "type": "object", - "title": "WellKnown represents important OpenID Connect discovery metadata", + "title": "WellKnown WellKnown represents important OpenID Connect discovery metadata", "required": [ - "authorization_endpoint", - "id_token_signing_alg_values_supported", "issuer", + "authorization_endpoint", + "token_endpoint", "jwks_uri", - "response_types_supported", "subject_types_supported", - "token_endpoint" + "response_types_supported", + "id_token_signing_alg_values_supported" ], "properties": { "authorization_endpoint": { diff --git a/go.mod b/go.mod index 5600123206b..396cddbb9ce 100644 --- a/go.mod +++ b/go.mod @@ -19,6 +19,7 @@ require ( github.com/gobwas/glob v0.2.3 github.com/golang/mock v1.3.1 github.com/golangci/golangci-lint v1.22.2 // indirect + github.com/google/uuid v1.1.1 github.com/gorilla/sessions v1.1.4-0.20181208214519-12bd4761fc66 github.com/gtank/cryptopasta v0.0.0-20170601214702-1f550f6f2f69 github.com/imdario/mergo v0.0.0-20171009183408-7fe0c75c13ab diff --git a/go.sum b/go.sum index b4a82ed825c..eff43e15549 100644 --- a/go.sum +++ b/go.sum @@ -1,12 +1,12 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.41.0/go.mod h1:OauMR7DV8fzvZIl2qg6rkaIhD/vmgk4iwEw/h6ercmg= cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= -cloud.google.com/go/bigquery v1.0.1 h1:hL+ycaJpVE9M7nLoiXb/Pn10ENE2u+oddxbD8uu0ZVU= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= -cloud.google.com/go/datastore v1.0.0 h1:Kt+gOPPp2LEPWp8CSfxhsM8ik9CcyE/gYu+0r+RnZvM= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 h1:w+iIsaOQNcT7OZ575w+acHgRric5iCyQh+xv+KJ4HB8= @@ -17,7 +17,6 @@ github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM= github.com/DataDog/sketches-go v0.0.0-20190923095040-43f19ad77ff7/go.mod h1:Q5DbzQ+3AkgGwymQO7aZFNP7ns2lZKGtvRBzRXfdi60= github.com/Masterminds/semver v1.4.2/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y= -github.com/Microsoft/go-winio v0.4.11 h1:zoIOcVf0xPN1tnMVbTtEdI+P8OofVk3NObnwOQ6nK2Q= github.com/Microsoft/go-winio v0.4.11/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= github.com/Microsoft/go-winio v0.4.12 h1:xAfWHN1IrQ0NJ9TBC0KBZoqLjzDTr1ML+4MywiUOryc= github.com/Microsoft/go-winio v0.4.12/go.mod h1:VhR8bwka0BXejwEJY73c50VrPtXAaKcyvVC4A4RozmA= @@ -36,16 +35,13 @@ github.com/ajg/form v0.0.0-20160822230020-523a5da1a92f/go.mod h1:uL1WgH+h2mgNtvB github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= -github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf h1:eg0MeVzsP1G42dRafH3vf+al2vQIJU0YHX+1Tw87oco= github.com/asaskevich/govalidator v0.0.0-20180720115003-f9ffefc3facf/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a h1:idn718Q4B6AGu/h5Sxe66HYVdqdGu2l9Iebqhi/AEoA= github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a/go.mod h1:lB+ZfQJz7igIIfQNfa7Ml4HSf2uFQQRzpGGRXenZAgY= github.com/aws/aws-sdk-go v1.23.19/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo= github.com/aws/aws-xray-sdk-go v0.9.4/go.mod h1:XtMKdBQfpVut+tJEwI7+dJFRxxRdxHDyVNp2tHXRq04= github.com/benbjohnson/clock v1.0.0/go.mod h1:bGMdMPoPVvcYyt1gHDf4J2KE153Yf9BuiUKYMaxlTDM= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973 h1:xJ4a3vCFaGF/jqvzLMYoU8P317H5OQ+Via4RmuPwCS0= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0 h1:HWo1m869IqiPhD389kmkxeTalrjNbbJTC8LXupb+sl0= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= @@ -89,7 +85,6 @@ github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZm github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec= -github.com/docker/go-units v0.3.3 h1:Xk8S3Xj5sLGlG5g67hJmYMmUgXv5N4PhkjJHHqrwnTk= github.com/docker/go-units v0.3.3/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= github.com/docker/go-units v0.4.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= @@ -106,7 +101,6 @@ github.com/fsnotify/fsnotify v1.4.7 h1:IXs+QLmnXW2CcXuY+8Mzv/fWEsPGWxqefPtCP5CnV github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/globalsign/mgo v0.0.0-20180905125535-1ca0a4f7cbcb/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= -github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8 h1:DujepqpGd1hyOd7aW59XpK7Qymp8iy83xq74fLr21is= github.com/globalsign/mgo v0.0.0-20181015135952-eeefdecb41b8/go.mod h1:xkRDCp4j0OGD1HRkm4kmhM+pmpv3AKq5SU7GMg4oO/Q= github.com/go-bindata/go-bindata v3.1.1+incompatible h1:tR4f0e4VTO7LK6B2YWyAoVEzG9ByG1wrXB4TL9+jiYg= github.com/go-bindata/go-bindata v3.1.1+incompatible/go.mod h1:xK8Dsgwmeed+BBsSy2XTopBn/8uK2HWuGSnA11C3Joo= @@ -132,34 +126,29 @@ github.com/go-openapi/analysis v0.19.5/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2 github.com/go-openapi/analysis v0.19.6 h1:5Z7zgx/EAmE9bf7cuTU1hkGQlZGzGDf9a1m57xRfNZk= github.com/go-openapi/analysis v0.19.6/go.mod h1:hkEAkxagaIvIP7VTn8ygJNkd4kAYON2rCu0v0ObL0AU= github.com/go-openapi/errors v0.17.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= -github.com/go-openapi/errors v0.18.0 h1:+RnmJ5MQccF7jwWAoMzwOpzJEspZ18ZIWfg9Z2eiXq8= github.com/go-openapi/errors v0.18.0/go.mod h1:LcZQpmvG4wyF5j4IhA73wkLFQg+QJXOQHVjmcZxhka0= github.com/go-openapi/errors v0.19.2 h1:a2kIyV3w+OS3S97zxUndRVD46+FhGOUBDFY7nmu4CsY= github.com/go-openapi/errors v0.19.2/go.mod h1:qX0BLWsyaKfvhluLejVpVNwNRdXZhEbTA4kxxpKBC94= github.com/go-openapi/inflect v0.19.0 h1:9jCH9scKIbHeV9m12SmPilScz6krDxKRasNNSNPXu/4= github.com/go-openapi/inflect v0.19.0/go.mod h1:lHpZVlpIQqLyKwJ4N+YSc9hchQy/i12fJykb83CRBH4= github.com/go-openapi/jsonpointer v0.17.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= -github.com/go-openapi/jsonpointer v0.18.0 h1:KVRzjXpMzgdM4GEMDmDTnGcY5yBwGWreJwmmk4k35yU= github.com/go-openapi/jsonpointer v0.18.0/go.mod h1:cOnomiV+CVVwFLk0A/MExoFMjwdsUdVpsRhURCKh+3M= github.com/go-openapi/jsonpointer v0.19.2 h1:A9+F4Dc/MCNB5jibxf6rRvOvR/iFgQdyNx9eIhnGqq0= github.com/go-openapi/jsonpointer v0.19.2/go.mod h1:3akKfEdA7DF1sugOqz1dVQHBcuDBPKZGEoHC/NkiQRg= github.com/go-openapi/jsonpointer v0.19.3 h1:gihV7YNZK1iK6Tgwwsxo2rJbD1GTbdm72325Bq8FI3w= github.com/go-openapi/jsonpointer v0.19.3/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= github.com/go-openapi/jsonreference v0.17.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= -github.com/go-openapi/jsonreference v0.18.0 h1:oP2OUNdG1l2r5kYhrfVMXO54gWmzcfAwP/GFuHpNTkE= github.com/go-openapi/jsonreference v0.18.0/go.mod h1:g4xxGn04lDIRh0GJb5QlpE3HfopLOL6uZrK/VgnsK9I= github.com/go-openapi/jsonreference v0.19.2 h1:o20suLFB4Ri0tuzpWtyHlh7E7HnkqTNLq6aR6WVNS1w= github.com/go-openapi/jsonreference v0.19.2/go.mod h1:jMjeRr2HHw6nAVajTXJ4eiUwohSTlpa0o73RUL1owJc= github.com/go-openapi/loads v0.17.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/loads v0.18.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= -github.com/go-openapi/loads v0.19.0 h1:wCOBNscACI8L93tt5tvB2zOMkJ098XCw3fP0BY2ybDA= github.com/go-openapi/loads v0.19.0/go.mod h1:72tmFy5wsWx89uEVddd0RjRWPZm92WRLhf7AC+0+OOU= github.com/go-openapi/loads v0.19.2 h1:rf5ArTHmIJxyV5Oiks+Su0mUens1+AjpkPoWr5xFRcI= github.com/go-openapi/loads v0.19.2/go.mod h1:QAskZPMX5V0C2gvfkGZzJlINuP7Hx/4+ix5jWFxsNPs= github.com/go-openapi/loads v0.19.3 h1:jwIoahqCmaA5OBoc/B+1+Mu2L0Gr8xYQnbeyQEo/7b0= github.com/go-openapi/loads v0.19.3/go.mod h1:YVfqhUCdahYwR3f3iiwQLhicVRvLlU/WO5WPaZvcvSI= github.com/go-openapi/runtime v0.0.0-20180920151709-4f900dc2ade9/go.mod h1:6v9a6LTXWQCdL8k1AO3cvqx5OtZY/Y9wKTgaoP6YRfA= -github.com/go-openapi/runtime v0.19.0 h1:sU6pp4dSV2sGlNKKyHxZzi1m1kG4WnYtWcJ+HYbygjE= github.com/go-openapi/runtime v0.19.0/go.mod h1:OwNfisksmmaZse4+gpV3Ne9AyMOlP1lt4sK4FXt0O64= github.com/go-openapi/runtime v0.19.4 h1:csnOgcgAiuGoM/Po7PEpKDoNulCcF3FGbSnbHfxgjMI= github.com/go-openapi/runtime v0.19.4/go.mod h1:X277bwSUBxVlCYR3r7xgZZGKVvBd/29gLDlFGtJ8NL4= @@ -173,19 +162,18 @@ github.com/go-openapi/spec v0.19.3 h1:0XRyw8kguri6Yw4SxhsQA/atC88yqrk0+G4YhI2wab github.com/go-openapi/spec v0.19.3/go.mod h1:FpwSN1ksY1eteniUU7X0N/BgJ7a4WvBFVA8Lj9mJglo= github.com/go-openapi/strfmt v0.17.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= github.com/go-openapi/strfmt v0.18.0/go.mod h1:P82hnJI0CXkErkXi8IKjPbNBM6lV6+5pLP5l494TcyU= -github.com/go-openapi/strfmt v0.19.0 h1:0Dn9qy1G9+UJfRU7TR8bmdGxb4uifB7HNrJjOnV0yPk= github.com/go-openapi/strfmt v0.19.0/go.mod h1:+uW+93UVvGGq2qGaZxdDeJqSAqBqBdl+ZPMF/cC8nDY= github.com/go-openapi/strfmt v0.19.2 h1:clPGfBnJohokno0e+d7hs6Yocrzjlgz6EsQSDncCRnE= github.com/go-openapi/strfmt v0.19.2/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= github.com/go-openapi/strfmt v0.19.3 h1:eRfyY5SkaNJCAwmmMcADjY31ow9+N7MCLW7oRkbsINA= github.com/go-openapi/strfmt v0.19.3/go.mod h1:0yX7dbo8mKIvc3XSKp7MNfxw4JytCfCD6+bY1AVL9LU= github.com/go-openapi/swag v0.17.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= -github.com/go-openapi/swag v0.18.0 h1:1DU8Km1MRGv9Pj7BNLmkA+umwTStwDHttXvx3NhJA70= github.com/go-openapi/swag v0.18.0/go.mod h1:AByQ+nYG6gQg71GINrmuDXCPWdL640yX49/kXLo40Tg= github.com/go-openapi/swag v0.19.2/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-openapi/swag v0.19.4 h1:i/65mCM9s1h8eCkT07F5Z/C1e/f8VTgEwer+00yevpA= +github.com/go-openapi/swag v0.19.4/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= github.com/go-openapi/swag v0.19.5 h1:lTz6Ys4CmqqCQmZPBlbQENR1/GucA2bzYTE12Pw4tFY= github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= -github.com/go-openapi/validate v0.18.0 h1:PVXYcP1GkTl+XIAJnyJxOmK6CSG5Q1UcvoCvNO++5Kg= github.com/go-openapi/validate v0.18.0/go.mod h1:Uh4HdOzKt19xGIGm1qHf/ofbX1YQ4Y+MYsct2VUrAJ4= github.com/go-openapi/validate v0.19.2 h1:ky5l57HjyVRrsJfd2+Ro5Z9PjGuKbsmftwyMtk8H7js= github.com/go-openapi/validate v0.19.2/go.mod h1:1tRCw7m3jtI8eNWEEliiAqUIcBztB2KDnRCRMUi7GTA= @@ -196,6 +184,8 @@ github.com/go-sql-driver/mysql v1.4.1 h1:g24URVg0OFbNUTx9qqY1IRZ9D9z3iPyi5zKhQZp github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-stack/stack v1.8.0 h1:5SgMzNM5HxrEjV0ww2lTmX6E2Izsfxas4+YHWRs3Lsk= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-swagger/go-swagger v0.20.0 h1:nYaNsHAGa+r5u6JlcN1Zh6X7zNoOo36Shs8PHU1+G2M= +github.com/go-swagger/go-swagger v0.20.0/go.mod h1:ylaOr/j+CVsLUsIEhQA49ewFKvVwVSQqVCdDdALNcCw= github.com/go-swagger/go-swagger v0.21.1-0.20200107003254-1c98855b472d h1:x6bMs6miV7mzMbdArYk/APT4+TyySD94rot1au2ku60= github.com/go-swagger/go-swagger v0.21.1-0.20200107003254-1c98855b472d/go.mod h1:20SBEAunNzw1wD1ZPvWy5xQAxTcCB0UVDVOPeReIayA= github.com/go-swagger/scan-repo-boundary v0.0.0-20180623220736-973b3573c013 h1:l9rI6sNaZgNC0LnF3MiE+qTmyBA/tZAg1rtyrGbUMK0= @@ -417,18 +407,15 @@ github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXP github.com/golang/gddo v0.0.0-20180828051604-96d2a289f41e/go.mod h1:xEhNfoBDX1hzLm2Nf80qUvZ2sVwoMZ8d6IE2SrsQfh4= github.com/golang/gddo v0.0.0-20190904175337-72a348e765d2 h1:xisWqjiKEff2B0KfFYGpCqc3M3zdTz+OHQHRc09FeYk= github.com/golang/gddo v0.0.0-20190904175337-72a348e765d2/go.mod h1:xEhNfoBDX1hzLm2Nf80qUvZ2sVwoMZ8d6IE2SrsQfh4= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b h1:VKtxabqXZkF25pY9ekfRL6a582T4P37/31XEstQ5p58= github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/mock v1.2.0 h1:28o5sBqPkBsMGnC6b4MvE2TzSr5/AT4c/1fLqVGIwlk= github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= github.com/golang/mock v1.3.1 h1:qGJ6qTW+x6xX/my+8YUVl4WNpX9B7+/l2tRsHGZ7f2s= github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y= github.com/golang/protobuf v1.1.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1 h1:YF8+flBXS5eO826T4nzqPrxfhQThhXl0YzfuUPu4SBg= github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.3.2 h1:6nsPYzhq5kReh6QImI3k5qWzO4PEbvbIW2cwSfR/6xs= github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -468,14 +455,11 @@ github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4 h1:zwtduBRr5SSW github.com/golangci/unconvert v0.0.0-20180507085042-28b1c447d1f4/go.mod h1:Izgrg8RkN3rCIMLGE9CyYmU9pY2Jer6DgANEnZ/L/cQ= github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0 h1:+dTQ8DZQJz0Mb/HjFlkptS1FeQ4cWSnN941F8aEG4SQ= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1 h1:Xye71clBPdm5HgqGwUkwhbynsUJZhDbS20FvLhQ2izg= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/martian v2.1.0+incompatible h1:/CP5g8u/VJHijgedC/Legn3BAbAaWPgecwXBIDzw5no= github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= @@ -484,9 +468,7 @@ github.com/google/uuid v1.0.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.1.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/googleapis/gax-go/v2 v2.0.4 h1:hU4mGcQI4DaAYW+IbTun+2qEZVFxK0ySjQLTbS0VQKc= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= -github.com/googleapis/gax-go/v2 v2.0.5 h1:sjZBwGj9Jlw33ImPtvFviGYvseOtDM7hkSKB7+Tv3SM= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/gopherjs/gopherjs v0.0.0-20181004151105-1babbf986f6f/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1 h1:EGx4pi6eqNxGaHF6qqu48+N2wcFQ5qg5FXgOdqsJ5d8= @@ -516,8 +498,8 @@ github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t github.com/gtank/cryptopasta v0.0.0-20170601214702-1f550f6f2f69 h1:7xsUJsB2NrdcttQPa7JLEaGzvdbk7KvfrjgHZXOQRo0= github.com/gtank/cryptopasta v0.0.0-20170601214702-1f550f6f2f69/go.mod h1:YLEMZOtU+AZ7dhN9T/IpGhXVGly2bvkJQ+zxj3WeVQo= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1 h1:0hERBMJE1eitiLkihrMvRVBYAkpHzc/J3QdDN+dAcgU= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.3/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -539,7 +521,6 @@ github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqx github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024 h1:rBMNdlhTLzJjJSDIjNEXX1Pz3Hmwmz91v+zycvx9PJc= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jtolds/gls v4.2.1+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= github.com/jtolds/gls v4.20.0+incompatible h1:xdiiI2gbIgH/gLH7ADydsJ1uDOEzR8yvV7C0MuV77Wo= @@ -581,12 +562,10 @@ github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/logrusorgru/aurora v0.0.0-20181002194514-a7b3b318ed4e/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4= github.com/luna-duclos/instrumentedsql v1.1.2 h1:AZdd9TU/kFArfxF0Wi8PLNzniBUgo/c1vDhhjwZPANE= github.com/luna-duclos/instrumentedsql v1.1.2/go.mod h1:4LGbEqDnopzNAiyxPPDXhLspyunZxgPTMJBKtC6U0BQ= -github.com/magiconair/properties v1.8.0 h1:LLgXmsheXeRoUOBOjtwPQCWIYqM/LU1ayDtDePerRcY= github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/magiconair/properties v1.8.1 h1:ZC2Vc7/ZFkGmsVC9KvOjumD+G5lXy2RtTKyzRKO2BQ4= github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ= github.com/mailru/easyjson v0.0.0-20180823135443-60711f1a8329/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= -github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe h1:W/GaMY0y69G4cFlmsC6B9sbuo2fP8OFP1ABjt4kPz+w= github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e h1:hB2xlXdHp/pmPZq0y3QnmWAArdw9PqbmotexnWx/FU8= @@ -625,6 +604,7 @@ github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOA github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y= github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= github.com/mattn/go-sqlite3 v1.9.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= +github.com/mattn/go-sqlite3 v1.10.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/go-sqlite3 v1.11.0 h1:LDdKkqtYlom37fkvqs8rMPFKAMe8+SgjbwZ6ex1/A/Q= github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsOqkbpncsNc= github.com/mattn/goveralls v0.0.2/go.mod h1:8d1ZMHsd7fW6IRPKQh46F2WRpyib5/X4FOpevwGNQEw= @@ -713,12 +693,13 @@ github.com/ory/sdk/swagutil v0.0.0-20200113182044-f6518ab8017d h1:AVIzsXij0v8DoV github.com/ory/sdk/swagutil v0.0.0-20200113182044-f6518ab8017d/go.mod h1:Ufg1eAyz+Zt3+oweSZVThG13ewewWCKwBmoNmK8Z0co= github.com/ory/viper v1.5.6 h1:w4ceGgWwWLzAFYQ7bHaDZmwNsAto2JPVdyQjQnn7VWI= github.com/ory/viper v1.5.6/go.mod h1:TYmpFpKLxjQwvT4f0QPpkOn4sDXU1kDgAwJpgLYiQ28= +github.com/ory/x v0.0.85 h1:AslLr2Efv6f7AT1tzn0RuX+sOri6h74phSh5lSeMqC4= +github.com/ory/x v0.0.85/go.mod h1:s44V8t3xyjWZREcU+mWlp4h302rTuM4aLXcW+y5FbQ8= github.com/ory/x v0.0.88 h1:epgeKh5kaT/89YQ9o/eIO3rgwmo3kOwyXcHJRZcZogI= github.com/ory/x v0.0.88/go.mod h1:wrnJRjIfYXFY/AUiuUlcIUpLBDxFtWc+8x6toAeLZXU= github.com/parnurzeal/gorequest v0.2.15/go.mod h1:3Kh2QUMJoqw3icWAecsyzkpY7UzRfDhbRdTjtNwNiUE= github.com/pborman/uuid v1.2.0 h1:J7Q5mO4ysT1dv8hyrUGHb9+ooztCXu1D8MY8DZYsu3g= github.com/pborman/uuid v1.2.0/go.mod h1:X/NO0urCmaxf9VXbdlT7C2Yzkj2IKimNn4k+gtPdI/k= -github.com/pelletier/go-toml v1.2.0 h1:T5zMGML61Wp+FlcbWjRDT7yAxhJNAiPPLOFECq181zc= github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic= github.com/pelletier/go-toml v1.4.0 h1:u3Z1r+oOXJIkxqw34zVhyPgjBsm6X2wn21NWs/HfSeg= github.com/pelletier/go-toml v1.4.0/go.mod h1:PN7xzY2wHTK0K9p34ErDQMlFxa51Fk0OUruD3k1mMwo= @@ -731,7 +712,6 @@ github.com/phayes/freeport v0.0.0-20171002181615-b8543db493a5/go.mod h1:iIss55rK github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/profile v1.2.1 h1:F++O52m40owAmADcojzM+9gyjmMOY/T4oYJkgFDH8RE= github.com/pkg/profile v1.2.1/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= github.com/pkg/profile v1.3.0 h1:OQIvuDgm00gWVWGTf4m4mCt6W1/0YqU7Ntg0mySWgaI= github.com/pkg/profile v1.3.0/go.mod h1:hJw3o1OdXxsrSjjVksARp5W95eeEaEfptyVZyv6JUPA= @@ -739,7 +719,6 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pquerna/cachecontrol v0.0.0-20180517163645-1555304b9b35/go.mod h1:prYjPmNq4d1NPVmpShWobRqXY3q7Vp+80DqgxxUrUIA= github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v0.9.3 h1:9iH4JKXLzFbOAdtqv/a+j8aewx2Y8lAjAydhbaScPF8= github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= github.com/prometheus/client_golang v1.1.0 h1:BQ53HtBmfOitExawJ6LokA4x8ov/z0SYYb0+HxJfRI8= @@ -748,13 +727,11 @@ github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1: github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90 h1:S/YWwWx/RA8rT8tKFRuGUZhuA90OyIBpPCXkcbwU8DE= github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= -github.com/prometheus/common v0.4.0 h1:7etb9YClo3a6HjLzfl6rIQaU+FDfi0VSX39io3aQ+DM= github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= github.com/prometheus/common v0.6.0 h1:kRhiuYSXR3+uv2IbVbZhUxK5zVD/2pp3Gd2PpvPkpEo= github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084 h1:sofwID9zm4tzrgykg80hfFph1mryUeLRsUfoocVVmRY= github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= github.com/prometheus/procfs v0.0.3 h1:CTwfnzjQ+8dS6MhHHu4YswVAD99sL2wjPqP+VkURmKE= @@ -764,7 +741,6 @@ github.com/quasilyte/go-consistent v0.0.0-20190521200055-c6f3937de18c/go.mod h1: github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/go-internal v1.0.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.1.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= -github.com/rogpeppe/go-internal v1.2.2 h1:J7U/N7eRtzjhs26d6GqMh2HBuXP8/Z64Densiiieafo= github.com/rogpeppe/go-internal v1.2.2/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.3.2 h1:XU784Pr0wdahMY2bYcyK6N1KuaRAdLtqD4qd8D18Bfs= @@ -829,7 +805,6 @@ github.com/spf13/cast v1.3.0 h1:oget//CVOEoFewqQxwr0Ej5yjygnqGkvggSE/gB35Q8= github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cast v1.3.1 h1:nFm6S0SMdyzrzcmThSipiEubIDy8WEXKNZ0UOgiRpng= github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= -github.com/spf13/cobra v0.0.3 h1:ZlrZ4XsMRm04Fr5pSFxBgfND2EBVa1nLpiy1stUsX/8= github.com/spf13/cobra v0.0.3/go.mod h1:1l0Ry5zgKvJasoi3XT1TypsSe7PqH0Sj9dhYf7v3XqQ= github.com/spf13/cobra v0.0.5 h1:f0B+LkLX6DtmRH1isoNA9VTtNUK9K8xYd28JNNfOv/s= github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU= @@ -855,7 +830,6 @@ github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48= github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0 h1:2E4SXV/wtOkTonXsotYi4li6zVWxYlZuYNCXe9XRJyk= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= @@ -884,7 +858,6 @@ github.com/uber-go/atomic v1.3.2/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex github.com/uber/jaeger-client-go v2.15.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-client-go v2.16.0+incompatible h1:Q2Pp6v3QYiocMxomCaJuwQGFt7E53bPYqEgug/AoBtY= github.com/uber/jaeger-client-go v2.16.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= -github.com/uber/jaeger-lib v1.5.0 h1:OHbgr8l656Ub3Fw5k9SWnBfIEwvoHQ+W2y+Aa9D1Uyo= github.com/uber/jaeger-lib v1.5.0/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= github.com/uber/jaeger-lib v2.0.0+incompatible h1:iMSCV0rmXEogjNWPh2D0xk9YVKvrtGoHJNe9ebLu/pw= github.com/uber/jaeger-lib v2.0.0+incompatible/go.mod h1:ComeNDZlWwrWnDv8aPp0Ba6+uUTzImX/AauajbLI56U= @@ -917,11 +890,11 @@ github.com/ziutek/mymysql v1.5.4 h1:GB0qdRGsTwQSBVYuVShFBKaXSnSnYYC2d9knnE1LHFs= github.com/ziutek/mymysql v1.5.4/go.mod h1:LMSpPZ6DbqWFxNCHW77HeMg9I646SAhApZ/wKdgO/C0= go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= go.mongodb.org/mongo-driver v1.0.3/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= +go.mongodb.org/mongo-driver v1.1.0 h1:aeOqSrhl9eDRAap/3T5pCfMBEBxZ0vuXBP+RMtp2KX8= +go.mongodb.org/mongo-driver v1.1.0/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= go.mongodb.org/mongo-driver v1.1.1 h1:Sq1fR+0c58RME5EoqKdjkiQAmPjmfHlZOoRI6fTUOcs= go.mongodb.org/mongo-driver v1.1.1/go.mod h1:u7ryQJ+DOzQmeO7zB6MHyr8jkEQvC8vH7qLUO4lqsUM= -go.opencensus.io v0.21.0 h1:mU6zScU4U1YAFPHEHYk+3JC4SY7JxgkqS10ZOSyksNg= go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU= -go.opencensus.io v0.22.0 h1:C9hSCOW830chIVkdja34wa6Ky+IzWllkUinR+BtRZd4= go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= go.opencensus.io v0.22.1/go.mod h1:Ap50jQcDJrx6rB6VgeeFPtuPIf3wMRvRfrfYDO6+BmA= go.opentelemetry.io v0.1.0 h1:EANZoRCOP+A3faIlw/iN6YEWoYb1vleZRKm1EvH8T48= @@ -960,12 +933,12 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550 h1:ObdrDkeb4kJdCP557AjRjq golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= +golang.org/x/exp v0.0.0-20190731235908-ec7cb31e5a56/go.mod h1:JhuoJpWY28nO4Vef9tZUw9qufEGTyX1+7lmHxV5q5G4= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20190409202823-959b441ac422 h1:QzoH/1pFpZguR8NrRHLcO6jKqfv2zpuSqZLgdm7ZmjI= golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= @@ -998,7 +971,6 @@ golang.org/x/net v0.0.0-20190522155817-f3200d17e092/go.mod h1:HSz+uSET+XFnRR8LxR golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190628185345-da137c7871d7 h1:rTIdg5QFRR7XCaK4LCjBiPbx8j4DQRpdYMnGn/bJUEU= golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297 h1:k7pJ2yAPLPgbskkFdhRCsA77k2fySZ1zf2zCjvQCiIM= golang.org/x/net v0.0.0-20190827160401-ba9fcec4b297/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= @@ -1012,7 +984,6 @@ golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4Iltr golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6 h1:bjcUS9ztw9kFmmIxJInhon/0Is3p+EHBKNgquIzo1OI= golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58 h1:8gQV6CLnAEikrhgkHFbMAEhagSSnXWGV915qUMm9mrU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -1050,6 +1021,7 @@ golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20190616124812-15dcb6c0061f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190907184412-d223b2b6db03/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -1060,12 +1032,10 @@ golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200107162124-548cf772de50 h1:YvQ10rzcqWXLlJZ3XCUoO25savxmscf4+SC+ZqiCHhA= golang.org/x/sys v0.0.0-20200107162124-548cf772de50/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2 h1:z99zHgr7hKfrUcX/KsoJk5FJfjTceCKIp96+biqP4To= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs= golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4 h1:SvFZT6jyqRaOeXpc5h/JSfZenJ2O330aBsf7JfSUXmQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20180525024113-a5b4c53f6e8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -1114,7 +1084,6 @@ golang.org/x/tools v0.0.0-20190614205625-5aca471b1d59/go.mod h1:/rFqwRUd4F7ZHNgw golang.org/x/tools v0.0.0-20190617190820-da514acc4774/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= -golang.org/x/tools v0.0.0-20190711191110-9a621aea19f8 h1:VZick+NwcqlXXVsD1iFr4Wo6F1FgBbnM4AOMzhwKQ7w= golang.org/x/tools v0.0.0-20190711191110-9a621aea19f8/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190719005602-e377ae9d6386/go.mod h1:jcCCGcm9btYwXyDqrUWc6MKQKKGJCWEQ3AfLSRIbEuI= golang.org/x/tools v0.0.0-20190910044552-dd2b5c81c578/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= @@ -1132,9 +1101,7 @@ golang.org/x/tools v0.0.0-20200110042803-e2f26524b78c/go.mod h1:TB2adYChydJhpapK golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE= -google.golang.org/api v0.7.0 h1:9sdfJOzWlkqPltHAuzT2Cp+yrBeY1KRVYgms8soxMwM= google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M= -google.golang.org/api v0.8.0 h1:VGGbLNyPF7dvYHhcUGYBBGCRDDK0RRJAI6KCvo0CL+E= google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= @@ -1150,14 +1117,18 @@ google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRn google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190626174449-989357319d63/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= +google.golang.org/genproto v0.0.0-20190708153700-3bdd9d9f5532/go.mod h1:z3L6/3dTEVtUr6QSP8miRzeRqwQOioJ9I66odjN4I7s= google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190817000702-55e96fffbd48/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20191009194640-548a555dbc03/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.20.1 h1:Hz2g2wirWK7H0qIIhGIqRGTuMwTE8HEKFnDZZ7lm9NU= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= google.golang.org/grpc v1.21.0/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM= +google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.24.0 h1:vb/1TCsVn3DcJlQ0Gs1yB1pKI6Do2/QNwxdKqmc/b0s= google.golang.org/grpc v1.24.0/go.mod h1:XDChyiUovWa60DnaeDeZmSW86xtLtjtZbwvSiRnRtcA= gopkg.in/airbrake/gobrake.v2 v2.0.9/go.mod h1:/h5ZAUhDkGaJfjzjKLSjv6zCL6O0LLBxU4K+aSYdM/U= @@ -1199,16 +1170,12 @@ honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= +honnef.co/go/tools v0.0.1-2019.2.2/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= -mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed h1:WX1yoOaKQfddO/mLzdV4wptyWgoH/6hwLs7QHTixo0I= mvdan.cc/interfacer v0.0.0-20180901003855-c20040233aed/go.mod h1:Xkxe497xwlCKkIaQYRfC7CSLworTXY9RMqwhhCm+8Nc= -mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b h1:DxJ5nJdkhDlLok9K6qO+5290kphDJbHOQO1DFFFTeBo= mvdan.cc/lint v0.0.0-20170908181259-adc824a0674b/go.mod h1:2odslEg/xrtNQqCYg2/jCoyKnw3vv5biOc3JnIcYfL4= mvdan.cc/unparam v0.0.0-20190720180237-d51796306d8f/go.mod h1:4G1h5nDURzA3bwVMZIVpwbkw+04kSxk3rAtzlimaUJw= -mvdan.cc/unparam v0.0.0-20190917161559-b83a221c10a2 h1:ujHaqw4YdQP41+lVP79aaouzIU8ZIRMT9/S3YUru+JI= mvdan.cc/unparam v0.0.0-20190917161559-b83a221c10a2/go.mod h1:rCqoQrfAmpTX/h2APczwM7UymU/uvaOluiVPIYCSY/k= -mvdan.cc/unparam v0.0.0-20191111180625-960b1ec0f2c2 h1:K7wru2CfJGumS5hkiguQ0Rb9ebKM2Jo8s5d4Jm9lFaM= mvdan.cc/unparam v0.0.0-20191111180625-960b1ec0f2c2/go.mod h1:rCqoQrfAmpTX/h2APczwM7UymU/uvaOluiVPIYCSY/k= rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8= sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/internal/httpclient/models/accept_consent_request.go b/internal/httpclient/models/accept_consent_request.go index 5a30c267af4..7ce4b660a35 100644 --- a/internal/httpclient/models/accept_consent_request.go +++ b/internal/httpclient/models/accept_consent_request.go @@ -12,7 +12,7 @@ import ( "github.com/go-openapi/swag" ) -// AcceptConsentRequest AcceptConsentRequest The request payload used to accept a consent request. +// AcceptConsentRequest The request payload used to accept a consent request. // swagger:model acceptConsentRequest type AcceptConsentRequest struct { diff --git a/internal/httpclient/models/accept_login_request.go b/internal/httpclient/models/accept_login_request.go index cdecf8918e4..81923e2f8ec 100644 --- a/internal/httpclient/models/accept_login_request.go +++ b/internal/httpclient/models/accept_login_request.go @@ -13,7 +13,7 @@ import ( "github.com/go-openapi/validate" ) -// AcceptLoginRequest AcceptLoginRequest AcceptLoginRequest HandledLoginRequest is the request payload used to accept a login request. +// AcceptLoginRequest AcceptLoginRequest AcceptLoginRequest AcceptLoginRequest HandledLoginRequest is the request payload used to accept a login request. // swagger:model acceptLoginRequest type AcceptLoginRequest struct { diff --git a/internal/httpclient/models/consent_request.go b/internal/httpclient/models/consent_request.go index 949a61a655a..d6e6a19282f 100644 --- a/internal/httpclient/models/consent_request.go +++ b/internal/httpclient/models/consent_request.go @@ -12,7 +12,7 @@ import ( "github.com/go-openapi/swag" ) -// ConsentRequest ConsentRequest ConsentRequest ConsentRequest Contains information on an ongoing consent request. +// ConsentRequest Contains information on an ongoing consent request. // swagger:model consentRequest type ConsentRequest struct { diff --git a/internal/httpclient/models/health_status.go b/internal/httpclient/models/health_status.go index 44bb2047eb3..727f40aa769 100644 --- a/internal/httpclient/models/health_status.go +++ b/internal/httpclient/models/health_status.go @@ -11,7 +11,7 @@ import ( "github.com/go-openapi/swag" ) -// HealthStatus health status +// HealthStatus HealthStatus HealthStatus HealthStatus health status // swagger:model healthStatus type HealthStatus struct { diff --git a/internal/httpclient/models/json_web_key.go b/internal/httpclient/models/json_web_key.go index 6fb59d0b4e6..6ab6117cdc6 100644 --- a/internal/httpclient/models/json_web_key.go +++ b/internal/httpclient/models/json_web_key.go @@ -13,7 +13,7 @@ import ( "github.com/go-openapi/validate" ) -// JSONWebKey JSON web key +// JSONWebKey JSONWebKey JSONWebKey JSON web key // swagger:model JSONWebKey type JSONWebKey struct { diff --git a/internal/httpclient/models/json_web_key_set.go b/internal/httpclient/models/json_web_key_set.go index b0529a2187b..0418b039ec5 100644 --- a/internal/httpclient/models/json_web_key_set.go +++ b/internal/httpclient/models/json_web_key_set.go @@ -14,7 +14,7 @@ import ( "github.com/go-openapi/swag" ) -// JSONWebKeySet JSON web key set +// JSONWebKeySet JSONWebKeySet JSON web key set // swagger:model JSONWebKeySet type JSONWebKeySet struct { diff --git a/internal/httpclient/models/json_web_key_set_generator_request.go b/internal/httpclient/models/json_web_key_set_generator_request.go index 0b3a7deaaa3..f7fd7df2ba4 100644 --- a/internal/httpclient/models/json_web_key_set_generator_request.go +++ b/internal/httpclient/models/json_web_key_set_generator_request.go @@ -13,7 +13,7 @@ import ( "github.com/go-openapi/validate" ) -// JSONWebKeySetGeneratorRequest json web key set generator request +// JSONWebKeySetGeneratorRequest JSONWebKeySetGeneratorRequest json web key set generator request // swagger:model jsonWebKeySetGeneratorRequest type JSONWebKeySetGeneratorRequest struct { diff --git a/internal/httpclient/models/login_request.go b/internal/httpclient/models/login_request.go index 2e936420a3a..fff0cbdd274 100644 --- a/internal/httpclient/models/login_request.go +++ b/internal/httpclient/models/login_request.go @@ -12,7 +12,7 @@ import ( "github.com/go-openapi/swag" ) -// LoginRequest LoginRequest LoginRequest LoginRequest LoginRequest LoginRequest LoginRequest LoginRequest Contains information on an ongoing login request. +// LoginRequest LoginRequest Contains information on an ongoing login request. // swagger:model loginRequest type LoginRequest struct { diff --git a/internal/httpclient/models/logout_request.go b/internal/httpclient/models/logout_request.go index e9a11953c5e..6df0c9b2bd6 100644 --- a/internal/httpclient/models/logout_request.go +++ b/internal/httpclient/models/logout_request.go @@ -11,7 +11,7 @@ import ( "github.com/go-openapi/swag" ) -// LogoutRequest LogoutRequest LogoutRequest Contains information about an ongoing logout request. +// LogoutRequest Contains information about an ongoing logout request. // swagger:model logoutRequest type LogoutRequest struct { diff --git a/internal/httpclient/models/o_auth2_token_introspection.go b/internal/httpclient/models/o_auth2_token_introspection.go index 265930fa322..2ef3faf0fd5 100644 --- a/internal/httpclient/models/o_auth2_token_introspection.go +++ b/internal/httpclient/models/o_auth2_token_introspection.go @@ -13,7 +13,7 @@ import ( "github.com/go-openapi/validate" ) -// OAuth2TokenIntrospection Introspection contains an access token's session data as specified by IETF RFC 7662, see: +// OAuth2TokenIntrospection OAuth2TokenIntrospection Introspection contains an access token's session data as specified by IETF RFC 7662, see: // // https://tools.ietf.org/html/rfc7662 // swagger:model oAuth2TokenIntrospection diff --git a/internal/httpclient/models/oauth2_token_response.go b/internal/httpclient/models/oauth2_token_response.go index ff18d83f33c..39f2a722be5 100644 --- a/internal/httpclient/models/oauth2_token_response.go +++ b/internal/httpclient/models/oauth2_token_response.go @@ -11,7 +11,7 @@ import ( "github.com/go-openapi/swag" ) -// Oauth2TokenResponse Oauth2TokenResponse The Access Token Response +// Oauth2TokenResponse Oauth2TokenResponse Oauth2TokenResponse The Access Token Response // swagger:model oauth2TokenResponse type Oauth2TokenResponse struct { diff --git a/internal/httpclient/models/userinfo_response.go b/internal/httpclient/models/userinfo_response.go index 04b067d0429..6e21dff7dea 100644 --- a/internal/httpclient/models/userinfo_response.go +++ b/internal/httpclient/models/userinfo_response.go @@ -11,7 +11,7 @@ import ( "github.com/go-openapi/swag" ) -// UserinfoResponse The userinfo response +// UserinfoResponse UserinfoResponse UserinfoResponse UserinfoResponse The userinfo response // swagger:model userinfoResponse type UserinfoResponse struct { diff --git a/internal/httpclient/models/version.go b/internal/httpclient/models/version.go index 8331ddbdfa5..45e0beeaf16 100644 --- a/internal/httpclient/models/version.go +++ b/internal/httpclient/models/version.go @@ -11,7 +11,7 @@ import ( "github.com/go-openapi/swag" ) -// Version version +// Version Version version // swagger:model version type Version struct { diff --git a/internal/httpclient/models/well_known.go b/internal/httpclient/models/well_known.go index 2eb68ebb8e7..36f8bf02751 100644 --- a/internal/httpclient/models/well_known.go +++ b/internal/httpclient/models/well_known.go @@ -13,7 +13,7 @@ import ( "github.com/go-openapi/validate" ) -// WellKnown WellKnown represents important OpenID Connect discovery metadata +// WellKnown WellKnown WellKnown represents important OpenID Connect discovery metadata // // It includes links to several endpoints (e.g. /oauth2/token) and exposes information on supported signature algorithms // among others. diff --git a/jwk/sql_migration_files.go b/jwk/sql_migration_files.go index e7ad74acee5..f6134d25f0e 100644 --- a/jwk/sql_migration_files.go +++ b/jwk/sql_migration_files.go @@ -1,4 +1,4 @@ -// Code generated for package jwk by go-bindata DO NOT EDIT. (@generated) +// Package jwk Code generated by go-bindata. (@generated) DO NOT EDIT. // sources: // migrations/sql/cockroach/4.sql // migrations/sql/mysql/4.sql @@ -102,7 +102,7 @@ func migrationsSqlCockroach4Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/cockroach/4.sql", size: 305, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/cockroach/4.sql", size: 305, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -122,7 +122,7 @@ func migrationsSqlMysql4Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/4.sql", size: 350, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/4.sql", size: 350, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -142,7 +142,7 @@ func migrationsSqlPostgres4Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/4.sql", size: 407, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/4.sql", size: 407, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -162,7 +162,7 @@ func migrationsSqlShared1Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/1.sql", size: 239, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/1.sql", size: 239, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -182,7 +182,7 @@ func migrationsSqlShared2Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/2.sql", size: 150, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/2.sql", size: 150, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -202,7 +202,7 @@ func migrationsSqlShared3Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/3.sql", size: 90, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/3.sql", size: 90, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -222,7 +222,7 @@ func migrationsSqlTestsGitkeep() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -242,7 +242,7 @@ func migrationsSqlTests1_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/1_test.sql", size: 126, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/1_test.sql", size: 126, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -262,7 +262,7 @@ func migrationsSqlTests2_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/2_test.sql", size: 145, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/2_test.sql", size: 145, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -282,7 +282,7 @@ func migrationsSqlTests3_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/3_test.sql", size: 145, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/3_test.sql", size: 145, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -302,7 +302,7 @@ func migrationsSqlTests4_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/4_test.sql", size: 145, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/4_test.sql", size: 145, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/oauth2/sql_migration_files.go b/oauth2/sql_migration_files.go index 0cf9af48213..4ae4f3a6e81 100644 --- a/oauth2/sql_migration_files.go +++ b/oauth2/sql_migration_files.go @@ -1,4 +1,4 @@ -// Code generated for package oauth2 by go-bindata DO NOT EDIT. (@generated) +// Package oauth2 Code generated by go-bindata. (@generated) DO NOT EDIT. // sources: // migrations/sql/cockroach/9.sql // migrations/sql/mysql/.gitkeep @@ -120,7 +120,7 @@ func migrationsSqlCockroach9Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/cockroach/9.sql", size: 4696, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/cockroach/9.sql", size: 4696, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -140,7 +140,7 @@ func migrationsSqlMysqlGitkeep() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -160,7 +160,7 @@ func migrationsSqlMysql10Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/10.sql", size: 2172, mode: os.FileMode(420), modTime: time.Unix(1575534526, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/10.sql", size: 2172, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -180,7 +180,7 @@ func migrationsSqlMysql5Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/5.sql", size: 361, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/5.sql", size: 361, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -200,7 +200,7 @@ func migrationsSqlMysql6Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/6.sql", size: 194, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/6.sql", size: 194, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -220,7 +220,7 @@ func migrationsSqlMysql7Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/7.sql", size: 2531, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/7.sql", size: 2531, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -240,7 +240,7 @@ func migrationsSqlMysql9Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/mysql/9.sql", size: 7031, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/mysql/9.sql", size: 7031, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -260,7 +260,7 @@ func migrationsSqlPostgresGitkeep() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -280,7 +280,7 @@ func migrationsSqlPostgres10Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/10.sql", size: 708, mode: os.FileMode(420), modTime: time.Unix(1575534526, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/10.sql", size: 708, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -300,7 +300,7 @@ func migrationsSqlPostgres5Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/5.sql", size: 314, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/5.sql", size: 314, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -320,7 +320,7 @@ func migrationsSqlPostgres6Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/6.sql", size: 171, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/6.sql", size: 171, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -340,7 +340,7 @@ func migrationsSqlPostgres7Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/7.sql", size: 1411, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/7.sql", size: 1411, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -360,7 +360,7 @@ func migrationsSqlPostgres9Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/postgres/9.sql", size: 6976, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/postgres/9.sql", size: 6976, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -380,7 +380,7 @@ func migrationsSqlShared1Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/1.sql", size: 1542, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/1.sql", size: 1542, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -400,7 +400,7 @@ func migrationsSqlShared2Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/2.sql", size: 552, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/2.sql", size: 552, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -420,7 +420,7 @@ func migrationsSqlShared3Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/3.sql", size: 445, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/3.sql", size: 445, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -440,7 +440,7 @@ func migrationsSqlShared4Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/4.sql", size: 638, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/4.sql", size: 638, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -460,7 +460,7 @@ func migrationsSqlShared8Sql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/shared/8.sql", size: 649, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/shared/8.sql", size: 649, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -480,7 +480,7 @@ func migrationsSqlTestsGitkeep() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/.gitkeep", size: 0, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -500,7 +500,7 @@ func migrationsSqlTests10_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/10_test.sql", size: 4304, mode: os.FileMode(420), modTime: time.Unix(1575534526, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/10_test.sql", size: 4304, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -520,7 +520,7 @@ func migrationsSqlTests1_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/1_test.sql", size: 913, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/1_test.sql", size: 913, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -540,7 +540,7 @@ func migrationsSqlTests2_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/2_test.sql", size: 1001, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/2_test.sql", size: 1001, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -560,7 +560,7 @@ func migrationsSqlTests3_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/3_test.sql", size: 1243, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/3_test.sql", size: 1243, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -580,7 +580,7 @@ func migrationsSqlTests4_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/4_test.sql", size: 1313, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/4_test.sql", size: 1313, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -600,7 +600,7 @@ func migrationsSqlTests5_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/5_test.sql", size: 1313, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/5_test.sql", size: 1313, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -620,7 +620,7 @@ func migrationsSqlTests6_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/6_test.sql", size: 1313, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/6_test.sql", size: 1313, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -640,7 +640,7 @@ func migrationsSqlTests7_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/7_test.sql", size: 1683, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/7_test.sql", size: 1683, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -660,7 +660,7 @@ func migrationsSqlTests8_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/8_test.sql", size: 1783, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/8_test.sql", size: 1783, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } @@ -680,7 +680,7 @@ func migrationsSqlTests9_testSql() (*asset, error) { return nil, err } - info := bindataFileInfo{name: "migrations/sql/tests/9_test.sql", size: 4232, mode: os.FileMode(420), modTime: time.Unix(1575291413, 0)} + info := bindataFileInfo{name: "migrations/sql/tests/9_test.sql", size: 4232, mode: os.FileMode(420), modTime: time.Unix(1578061360, 0)} a := &asset{bytes: bytes, info: info} return a, nil } diff --git a/scripts/test-env.sh b/scripts/test-env.sh new file mode 100644 index 00000000000..13ce2b7f0d1 --- /dev/null +++ b/scripts/test-env.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +export TEST_DATABASE_MYSQL='mysql://root:secret@(127.0.0.1:3444)/mysql?parseTime=true' +export TEST_DATABASE_POSTGRESQL='postgres://postgres:secret@127.0.0.1:3445/hydra?sslmode=disable' +export TEST_DATABASE_COCKROACHDB='cockroach://root@127.0.0.1:3446/defaultdb?sslmode=disable' \ No newline at end of file diff --git a/test/e2e/.gitignore b/test/e2e/.gitignore index ba4ec84690c..34d34748a69 100644 --- a/test/e2e/.gitignore +++ b/test/e2e/.gitignore @@ -1,2 +1,3 @@ *.log -*.so \ No newline at end of file +*.so +hydra \ No newline at end of file diff --git a/test/e2e/circle-ci.bash b/test/e2e/circle-ci.bash index ff9d125773c..06038a80f1c 100755 --- a/test/e2e/circle-ci.bash +++ b/test/e2e/circle-ci.bash @@ -12,7 +12,7 @@ export GO111MODULE=on if [[ ! -d "../../node_modules/" ]]; then (cd ../..; npm ci) fi -go install github.com/ory/hydra +(cd ../../; go build -o test/e2e/hydra . ) go build -buildmode=plugin -o ./memtest.so ./plugin/memtest.go # Install oauth2-client @@ -29,7 +29,7 @@ source ./circle-ci.env.bash case "$1" in memory) DSN=memory \ - hydra serve all --dangerous-force-http --disable-telemetry >> ./hydra.e2e.log 2>&1 & + ./hydra serve all --dangerous-force-http --disable-telemetry >> ./hydra.e2e.log 2>&1 & export CYPRESS_jwt_enabled=false ;; @@ -37,14 +37,14 @@ case "$1" in DSN=memory \ OAUTH2_ACCESS_TOKEN_STRATEGY=jwt \ OIDC_SUBJECT_IDENTIFIERS_ENABLED=public \ - hydra serve all --dangerous-force-http --disable-telemetry >> ./hydra.e2e.log 2>&1 & + ./hydra serve all --dangerous-force-http --disable-telemetry >> ./hydra.e2e.log 2>&1 & export CYPRESS_jwt_enabled=true ;; postgres) hydra migrate sql --yes $TEST_DATABASE_POSTGRESQL DSN=$TEST_DATABASE_POSTGRESQL \ - hydra serve all --dangerous-force-http --disable-telemetry >> ./hydra.e2e.log 2>&1 & + ./hydra serve all --dangerous-force-http --disable-telemetry >> ./hydra.e2e.log 2>&1 & export CYPRESS_jwt_enabled=false ;; @@ -53,14 +53,14 @@ case "$1" in DSN=$TEST_DATABASE_POSTGRESQL \ OAUTH2_ACCESS_TOKEN_STRATEGY=jwt \ OIDC_SUBJECT_IDENTIFIERS_ENABLED=public \ - hydra serve all --dangerous-force-http --disable-telemetry >> ./hydra.e2e.log 2>&1 & + ./hydra serve all --dangerous-force-http --disable-telemetry >> ./hydra.e2e.log 2>&1 & export CYPRESS_jwt_enabled=true ;; mysql) hydra migrate sql --yes $TEST_DATABASE_MYSQL DSN=$TEST_DATABASE_MYSQL \ - hydra serve all --dangerous-force-http --disable-telemetry >> ./hydra.e2e.log 2>&1 & + ./hydra serve all --dangerous-force-http --disable-telemetry >> ./hydra.e2e.log 2>&1 & export CYPRESS_jwt_enabled=false ;; @@ -69,14 +69,14 @@ case "$1" in DSN=$TEST_DATABASE_MYSQL \ OAUTH2_ACCESS_TOKEN_STRATEGY=jwt \ OIDC_SUBJECT_IDENTIFIERS_ENABLED=public \ - hydra serve all --dangerous-force-http --disable-telemetry >> ./hydra.e2e.log 2>&1 & + ./hydra serve all --dangerous-force-http --disable-telemetry >> ./hydra.e2e.log 2>&1 & export CYPRESS_jwt_enabled=true ;; cockroach) hydra migrate sql --yes $TEST_DATABASE_COCKROACHDB DSN=$TEST_DATABASE_COCKROACHDB \ - hydra serve all --dangerous-force-http --disable-telemetry >> ./hydra.e2e.log 2>&1 & + ./hydra serve all --dangerous-force-http --disable-telemetry >> ./hydra.e2e.log 2>&1 & export CYPRESS_jwt_enabled=false ;; @@ -85,13 +85,13 @@ case "$1" in DSN=$TEST_DATABASE_COCKROACHDB \ OAUTH2_ACCESS_TOKEN_STRATEGY=jwt \ OIDC_SUBJECT_IDENTIFIERS_ENABLED=public \ - hydra serve all --dangerous-force-http --disable-telemetry >> ./hydra.e2e.log 2>&1 & + ./hydra serve all --dangerous-force-http --disable-telemetry >> ./hydra.e2e.log 2>&1 & export CYPRESS_jwt_enabled=true ;; plugin) DSN=plugin://./memtest.so \ - hydra serve all --dangerous-force-http --disable-telemetry >> ./hydra.e2e.log 2>&1 & + ./hydra serve all --dangerous-force-http --disable-telemetry >> ./hydra.e2e.log 2>&1 & export CYPRESS_jwt_enabled=false ;; @@ -99,7 +99,7 @@ case "$1" in DSN=plugin://./memtest.so \ OAUTH2_ACCESS_TOKEN_STRATEGY=jwt \ OIDC_SUBJECT_IDENTIFIERS_ENABLED=public \ - hydra serve all --dangerous-force-http --disable-telemetry >> ./hydra.e2e.log 2>&1 & + ./hydra serve all --dangerous-force-http --disable-telemetry >> ./hydra.e2e.log 2>&1 & export CYPRESS_jwt_enabled=true ;; *) diff --git a/test/e2e/hydra b/test/e2e/hydra deleted file mode 100755 index 5a6bcb4480c..00000000000 Binary files a/test/e2e/hydra and /dev/null differ