Skip to content

Commit

Permalink
use PreferredUsername
Browse files Browse the repository at this point in the history
Signed-off-by: Rui Yang <[email protected]>
  • Loading branch information
Rui Yang committed Jan 16, 2020
1 parent 31f3fce commit c8d3ead
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 13 deletions.
13 changes: 6 additions & 7 deletions connector/oauth/oauth.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,10 @@ import (
"strings"
"time"

"golang.org/x/oauth2"

"github.com/dexidp/dex/connector"
"github.com/dexidp/dex/pkg/log"
"golang.org/x/oauth2"
)

type oauthConnector struct {
Expand Down Expand Up @@ -113,7 +114,6 @@ func newHTTPClient(rootCAs []string, insecureSkipVerify bool) (*http.Client, err
}

func (c *oauthConnector) LoginURL(scopes connector.Scopes, callbackURL, state string) (string, error) {

if c.redirectURI != callbackURL {
return "", fmt.Errorf("expected callback URL %q did not match the URL in the config %q", callbackURL, c.redirectURI)
}
Expand All @@ -130,7 +130,6 @@ func (c *oauthConnector) LoginURL(scopes connector.Scopes, callbackURL, state st
}

func (c *oauthConnector) HandleCallback(s connector.Scopes, r *http.Request) (identity connector.Identity, err error) {

q := r.URL.Query()
if errType := q.Get("error"); errType != "" {
return identity, errors.New(q.Get("error_description"))
Expand Down Expand Up @@ -185,7 +184,7 @@ func (c *oauthConnector) HandleCallback(s connector.Scopes, r *http.Request) (id

identity.UserID, _ = userInfoResult[c.userIDKey].(string)
identity.Username, _ = userInfoResult[c.userNameKey].(string)
identity.Name, _ = userInfoResult["name"].(string)
identity.PreferredUsername, _ = userInfoResult["name"].(string)
identity.Email, _ = userInfoResult["email"].(string)
identity.EmailVerified, _ = userInfoResult["email_verified"].(bool)

Expand All @@ -195,7 +194,7 @@ func (c *oauthConnector) HandleCallback(s connector.Scopes, r *http.Request) (id
c.addGroupsFromMap(groups, userInfoResult)
c.addGroupsFromToken(groups, token.AccessToken)

for groupName, _ := range groups {
for groupName := range groups {
identity.Groups = append(identity.Groups, groupName)
}
}
Expand All @@ -215,7 +214,7 @@ func (c *oauthConnector) HandleCallback(s connector.Scopes, r *http.Request) (id
func (c *oauthConnector) addGroupsFromMap(groups map[string]bool, result map[string]interface{}) error {
groupsClaim, ok := result[c.groupsKey].([]interface{})
if !ok {
return errors.New("Cant convert to array")
return errors.New("cant convert to array")
}

for _, group := range groupsClaim {
Expand All @@ -230,7 +229,7 @@ func (c *oauthConnector) addGroupsFromMap(groups map[string]bool, result map[str
func (c *oauthConnector) addGroupsFromToken(groups map[string]bool, token string) error {
parts := strings.Split(token, ".")
if len(parts) < 2 {
return errors.New("Invalid token")
return errors.New("invalid token")
}

decoded, err := decode(parts[1])
Expand Down
10 changes: 4 additions & 6 deletions connector/oauth/oauth_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,10 @@ import (
"sort"
"testing"

"github.com/dexidp/dex/connector"
"github.com/sirupsen/logrus"
jose "gopkg.in/square/go-jose.v2"

"github.com/dexidp/dex/connector"
)

func TestOpen(t *testing.T) {
Expand Down Expand Up @@ -67,7 +68,6 @@ func TestLoginURL(t *testing.T) {
}

func TestHandleCallBackForGroupsInUserInfo(t *testing.T) {

tokenClaims := map[string]interface{}{}

userInfoClaims := map[string]interface{}{
Expand All @@ -92,15 +92,14 @@ func TestHandleCallBackForGroupsInUserInfo(t *testing.T) {
expectEqual(t, len(identity.Groups), 2)
expectEqual(t, identity.Groups[0], "admin-group")
expectEqual(t, identity.Groups[1], "user-group")
expectEqual(t, identity.Name, "test-name")
expectEqual(t, identity.PreferredUsername, "test-name")
expectEqual(t, identity.UserID, "test-user-id")
expectEqual(t, identity.Username, "test-username")
expectEqual(t, identity.Email, "test-email")
expectEqual(t, identity.EmailVerified, true)
}

func TestHandleCallBackForGroupsInToken(t *testing.T) {

tokenClaims := map[string]interface{}{
"groups_key": []string{"test-group"},
}
Expand All @@ -124,15 +123,14 @@ func TestHandleCallBackForGroupsInToken(t *testing.T) {

expectEqual(t, len(identity.Groups), 1)
expectEqual(t, identity.Groups[0], "test-group")
expectEqual(t, identity.Name, "test-name")
expectEqual(t, identity.PreferredUsername, "test-name")
expectEqual(t, identity.UserID, "test-user-id")
expectEqual(t, identity.Username, "test-username")
expectEqual(t, identity.Email, "test-email")
expectEqual(t, identity.EmailVerified, true)
}

func testSetup(t *testing.T, tokenClaims map[string]interface{}, userInfoClaims map[string]interface{}) *httptest.Server {

key, err := rsa.GenerateKey(rand.Reader, 1024)
if err != nil {
t.Fatal("Failed to generate rsa key", err)
Expand Down

0 comments on commit c8d3ead

Please sign in to comment.