diff --git a/connector/microsoft/microsoft.go b/connector/microsoft/microsoft.go index 33034cc5..3a3cf3b5 100644 --- a/connector/microsoft/microsoft.go +++ b/connector/microsoft/microsoft.go @@ -9,6 +9,7 @@ import ( "fmt" "io" "net/http" + "strings" "sync" "time" @@ -51,6 +52,7 @@ type Config struct { Groups []string `json:"groups"` GroupNameFormat GroupNameFormat `json:"groupNameFormat"` UseGroupsAsWhitelist bool `json:"useGroupsAsWhitelist"` + EmailToLowercase bool `json:"emailToLowercase"` } // Open returns a strategy for logging in through Microsoft. @@ -67,6 +69,7 @@ func (c *Config) Open(id string, logger log.Logger) (connector.Connector, error) groupNameFormat: c.GroupNameFormat, useGroupsAsWhitelist: c.UseGroupsAsWhitelist, logger: logger, + emailToLowercase: c.EmailToLowercase, } // By default allow logins from both personal and business/school // accounts. @@ -109,6 +112,7 @@ type microsoftConnector struct { groups []string useGroupsAsWhitelist bool logger log.Logger + emailToLowercase bool } func (c *microsoftConnector) isOrgTenant() bool { @@ -171,6 +175,10 @@ func (c *microsoftConnector) HandleCallback(s connector.Scopes, r *http.Request) return identity, fmt.Errorf("microsoft: get user: %v", err) } + if c.emailToLowercase { + user.Email = strings.ToLower(user.Email) + } + identity = connector.Identity{ UserID: user.ID, Username: user.Name,