@@ -357,22 +357,24 @@ func (p *OAuthProxy) redeemCode(ctx context.Context, host, code string) (*sessio
357 if err != nil {
357 if err != nil {
358 return nil, err
358 return nil, err
363+func (p *OAuthProxy) enrichSession(ctx context.Context, s *sessionsapi.SessionState) error {
361 if s.Email == "" {
365 if s.Email == "" {
362 s.Email, err = p.provider.GetEmailAddress(ctx, s)
366 s.Email, err = p.provider.GetEmailAddress(ctx, s)
363 if err != nil && err.Error() != "not implemented" {
367 if err != nil && err.Error() != "not implemented" {
364− return nil, err
368+ return err
368 if s.User == "" {
371 if s.User == "" {
369 s.User, err = p.provider.GetUserName(ctx, s)
372 s.User, err = p.provider.GetUserName(ctx, s)
370 if err != nil && err.Error() != "not implemented" {
373 if err != nil && err.Error() != "not implemented" {
371− return nil, err
374+ return err
375− return s, nil
377+ return nil
378// MakeCSRFCookie creates a cookie for CSRF
380// MakeCSRFCookie creates a cookie for CSRF
@@ -829,14 +831,21 @@ func (p *OAuthProxy) OAuthCallback(rw http.ResponseWriter, req *http.Request) {
834+ err = p.enrichSession(req.Context(), session)
836+ logger.Errorf("Error creating session during OAuth2 callback: %v", err)
837+ p.ErrorPage(rw, http.StatusInternalServerError, "Internal Server Error", "Internal Error")
832− s := strings.SplitN(req.Form.Get("state"), ":", 2)
841+ state := strings.SplitN(req.Form.Get("state"), ":", 2)
833− if len(s) != 2 {
842+ if len(state) != 2 {
834 logger.Error("Error while parsing OAuth2 state: invalid length")
843 logger.Error("Error while parsing OAuth2 state: invalid length")
835 p.ErrorPage(rw, http.StatusInternalServerError, "Internal Server Error", "Invalid State")
844 p.ErrorPage(rw, http.StatusInternalServerError, "Internal Server Error", "Invalid State")
838− nonce := s[0]
847+ nonce := state[0]
839− redirect := s[1]
848+ redirect := state[1]
840 c, err := req.Cookie(p.CSRFCookieName)
849 c, err := req.Cookie(p.CSRFCookieName)
841 if err != nil {
850 if err != nil {
842 logger.PrintAuthf(session.Email, req, logger.AuthFailure, "Invalid authentication via OAuth2: unable to obtain CSRF cookie")
851 logger.PrintAuthf(session.Email, req, logger.AuthFailure, "Invalid authentication via OAuth2: unable to obtain CSRF cookie")