Merge pull request #7590 from reasonerjt/oidc-wrong-secret-err

Return more details for error in exchange token
This commit is contained in:
Wenkai Yin 2019-04-29 14:22:37 +08:00 committed by GitHub
commit c53d73775a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 3 deletions

View File

@ -222,6 +222,9 @@ func (b *BaseAPI) SendBadRequestError(err error) {
}
// SendInternalServerError sends internal server error to the client.
// Note the detail info of err will not include in the response body.
// When you send an internal server error to the client, you expect user to check the log
// to find out the root cause.
func (b *BaseAPI) SendInternalServerError(err error) {
log.Error(err.Error())
b.RenderFormattedError(http.StatusInternalServerError, http.StatusText(http.StatusInternalServerError))
@ -232,12 +235,12 @@ func (b *BaseAPI) SendForbiddenError(err error) {
b.RenderFormattedError(http.StatusForbidden, err.Error())
}
// SendPreconditionFailedError sends forbidden error to the client.
// SendPreconditionFailedError sends conflict error to the client.
func (b *BaseAPI) SendPreconditionFailedError(err error) {
b.RenderFormattedError(http.StatusPreconditionFailed, err.Error())
}
// SendStatusServiceUnavailableError sends forbidden error to the client.
// SendStatusServiceUnavailableError sends service unavailable error to the client.
func (b *BaseAPI) SendStatusServiceUnavailableError(err error) {
b.RenderFormattedError(http.StatusServiceUnavailable, err.Error())
}

View File

@ -86,7 +86,9 @@ func (oc *OIDCController) Callback() {
ctx := oc.Ctx.Request.Context()
token, err := oidc.ExchangeToken(ctx, code)
if err != nil {
oc.SendInternalServerError(err)
log.Errorf("Failed to exchange token, error: %v", err)
// Return a 4xx error so user can see the details in case it's due to misconfiguration.
oc.SendBadRequestError(err)
return
}
idToken, err := oidc.VerifyToken(ctx, token.IDToken)