diff options
author | KN4CK3R <admin@oldschoolhack.me> | 2021-08-21 04:16:45 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-20 22:16:45 -0400 |
commit | 0bd58d61e547f482dd3c38a30fccb4c58caf2a67 (patch) | |
tree | fbc87f7c8d550db4d54fe930f98d92db0e4b901d /services | |
parent | e9747de95242807a6319e146216575676de66f47 (diff) | |
download | gitea-0bd58d61e547f482dd3c38a30fccb4c58caf2a67.tar.gz gitea-0bd58d61e547f482dd3c38a30fccb4c58caf2a67.zip |
Added introspection endpoint. (#16752)
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Diffstat (limited to 'services')
-rw-r--r-- | services/auth/oauth2.go | 12 | ||||
-rw-r--r-- | services/forms/user_form.go | 11 |
2 files changed, 22 insertions, 1 deletions
diff --git a/services/auth/oauth2.go b/services/auth/oauth2.go index 93806c7072..f7f870dade 100644 --- a/services/auth/oauth2.go +++ b/services/auth/oauth2.go @@ -113,7 +113,7 @@ func (o *OAuth2) Verify(req *http.Request, w http.ResponseWriter, store DataStor return nil } - if !middleware.IsAPIPath(req) && !isAttachmentDownload(req) { + if !middleware.IsAPIPath(req) && !isAttachmentDownload(req) && !isAuthenticatedTokenRequest(req) { return nil } @@ -134,3 +134,13 @@ func (o *OAuth2) Verify(req *http.Request, w http.ResponseWriter, store DataStor log.Trace("OAuth2 Authorization: Logged in user %-v", user) return user } + +func isAuthenticatedTokenRequest(req *http.Request) bool { + switch req.URL.Path { + case "/login/oauth/userinfo": + fallthrough + case "/login/oauth/introspect": + return true + } + return false +} diff --git a/services/forms/user_form.go b/services/forms/user_form.go index 1e12795c70..7d6b976936 100644 --- a/services/forms/user_form.go +++ b/services/forms/user_form.go @@ -215,6 +215,17 @@ func (f *AccessTokenForm) Validate(req *http.Request, errs binding.Errors) bindi return middleware.Validate(errs, ctx.Data, f, ctx.Locale) } +// IntrospectTokenForm for introspecting tokens +type IntrospectTokenForm struct { + Token string `json:"token"` +} + +// Validate validates the fields +func (f *IntrospectTokenForm) Validate(req *http.Request, errs binding.Errors) binding.Errors { + ctx := context.GetContext(req) + return middleware.Validate(errs, ctx.Data, f, ctx.Locale) +} + // __________________________________________.___ _______ ________ _________ // / _____/\_ _____/\__ ___/\__ ___/| |\ \ / _____/ / _____/ // \_____ \ | __)_ | | | | | |/ | \/ \ ___ \_____ \ |