Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support OIDC RP-initiated logout #30072

Open
wants to merge 20 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
d414a7c
Add ExternalAuthToken model
jlehtoranta Mar 25, 2024
dc03aec
Fix Exist function in virtual session provider
jlehtoranta Mar 25, 2024
1a648a3
Support accessing virtual session provider for managing existing sess…
jlehtoranta Mar 25, 2024
658b9d6
Add ExternalAuthToken service
jlehtoranta Mar 25, 2024
b3fa45d
Remove external session related data from ExternalLoginUser
jlehtoranta Mar 25, 2024
cf86822
Migrate DB ExternalLoginUser by removing ExternalAuthToken related co…
jlehtoranta Mar 25, 2024
741193a
Register auth source Type to gob
jlehtoranta Mar 25, 2024
266b4d9
Use login type identifiers in a session
jlehtoranta Mar 25, 2024
207dc75
Add login type identifiers to AuthToken
jlehtoranta Mar 25, 2024
d6050ea
Support checking if an auth token exists
jlehtoranta Mar 25, 2024
4073ff7
Sync login type identifiers between an auth token and session
jlehtoranta Mar 25, 2024
e9a50a6
Manage external sessions by using ExternalAuthTokens
jlehtoranta Mar 25, 2024
991e682
Update from local sign in to OAuth2/OIDC sign in after linking an acc…
jlehtoranta Mar 25, 2024
b12cea1
Delete ExternalAuthTokens when removing an account link
jlehtoranta Mar 25, 2024
d12acc1
Delete ExternalAuthTokens when removing a user
jlehtoranta Mar 25, 2024
5296f7c
Generate OIDC RP-initiated logout URLs
jlehtoranta Mar 25, 2024
ff17f0e
Add a handler for OAuth2 or OIDC RP-initiated logout
jlehtoranta Mar 25, 2024
dc74954
Add a callback handler for OIDC RP-initiated logout
jlehtoranta Mar 25, 2024
041bb96
Show any sign out errors occurring before SignOutOAuth
jlehtoranta Mar 25, 2024
514fa96
Redirect OAuth2/OIDC sessions to OAuth2/OIDC logout handler
jlehtoranta Mar 25, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Migrate DB ExternalLoginUser by removing ExternalAuthToken related co…
…lumns

Signed-off-by: Jarkko Lehtoranta <jarkko@bytecap.fi>
  • Loading branch information
jlehtoranta committed Mar 25, 2024
commit cf868225131f0cf654c23e4adea955ef9277788b
2 changes: 2 additions & 0 deletions models/migrations/migrations.go
Original file line number Diff line number Diff line change
Expand Up @@ -568,6 +568,8 @@ var migrations = []Migration{
NewMigration("Add PayloadVersion to HookTask", v1_22.AddPayloadVersionToHookTaskTable),
// v291 -> v292
NewMigration("Add Index to attachment.comment_id", v1_22.AddCommentIDIndexofAttachment),
// v292 -> v293
NewMigration("Drop raw_data, access_token, access_token_secret, refresh_token and expires_at columns from external_login_user table", v1_22.DropColumnsFromExternalLoginUserTable),
}

// GetCurrentDBVersion returns the current db version
Expand Down
37 changes: 37 additions & 0 deletions models/migrations/v1_22/v292.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
// Copyright 2024 The Gitea Authors. All rights reserved.
// SPDX-License-Identifier: MIT

package v1_22 //nolint

import (
"time"

"code.gitea.io/gitea/models/migrations/base"

"xorm.io/xorm"
)

func DropColumnsFromExternalLoginUserTable(x *xorm.Engine) error {
type ExternalLoginUser struct {
RawData map[string]any `xorm:"TEXT JSON"`
AccessToken string `xorm:"TEXT"`
AccessTokenSecret string `xorm:"TEXT"`
RefreshToken string `xorm:"TEXT"`
ExpiresAt time.Time
}
if err := x.Sync(new(ExternalLoginUser)); err != nil {
return err
}

sess := x.NewSession()
defer sess.Close()
if err := sess.Begin(); err != nil {
return err
}

if err := base.DropTableColumns(sess, "external_login_user", "raw_data", "access_token", "access_token_secret", "refresh_token", "expires_at"); err != nil {
return err
}

return sess.Commit()
}