mirror of https://github.com/minio/minio.git
				
				
				
			Fix browser login with multi users (#6644)
This commit is contained in:
		
							parent
							
								
									ef585037a0
								
							
						
					
					
						commit
						88c8c2d6cd
					
				
							
								
								
									
										34
									
								
								cmd/jwt.go
								
								
								
								
							
							
						
						
									
										34
									
								
								cmd/jwt.go
								
								
								
								
							|  | @ -49,7 +49,33 @@ var ( | ||||||
| 	errNoAuthToken          = errors.New("JWT token missing") | 	errNoAuthToken          = errors.New("JWT token missing") | ||||||
| ) | ) | ||||||
| 
 | 
 | ||||||
| func authenticateJWT(accessKey, secretKey string, expiry time.Duration) (string, error) { | func authenticateJWTUsers(accessKey, secretKey string, expiry time.Duration) (string, error) { | ||||||
|  | 	passedCredential, err := auth.CreateCredentials(accessKey, secretKey) | ||||||
|  | 	if err != nil { | ||||||
|  | 		return "", err | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	serverCred := globalServerConfig.GetCredential() | ||||||
|  | 	if serverCred.AccessKey != passedCredential.AccessKey { | ||||||
|  | 		var ok bool | ||||||
|  | 		serverCred, ok = globalIAMSys.GetUser(accessKey) | ||||||
|  | 		if !ok { | ||||||
|  | 			return "", errInvalidAccessKeyID | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	if !serverCred.Equal(passedCredential) { | ||||||
|  | 		return "", errAuthentication | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	jwt := jwtgo.NewWithClaims(jwtgo.SigningMethodHS512, jwtgo.StandardClaims{ | ||||||
|  | 		ExpiresAt: UTCNow().Add(expiry).Unix(), | ||||||
|  | 		Subject:   accessKey, | ||||||
|  | 	}) | ||||||
|  | 	return jwt.SignedString([]byte(serverCred.SecretKey)) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | func authenticateJWTAdmin(accessKey, secretKey string, expiry time.Duration) (string, error) { | ||||||
| 	passedCredential, err := auth.CreateCredentials(accessKey, secretKey) | 	passedCredential, err := auth.CreateCredentials(accessKey, secretKey) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return "", err | 		return "", err | ||||||
|  | @ -73,15 +99,15 @@ func authenticateJWT(accessKey, secretKey string, expiry time.Duration) (string, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func authenticateNode(accessKey, secretKey string) (string, error) { | func authenticateNode(accessKey, secretKey string) (string, error) { | ||||||
| 	return authenticateJWT(accessKey, secretKey, defaultInterNodeJWTExpiry) | 	return authenticateJWTAdmin(accessKey, secretKey, defaultInterNodeJWTExpiry) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func authenticateWeb(accessKey, secretKey string) (string, error) { | func authenticateWeb(accessKey, secretKey string) (string, error) { | ||||||
| 	return authenticateJWT(accessKey, secretKey, defaultJWTExpiry) | 	return authenticateJWTUsers(accessKey, secretKey, defaultJWTExpiry) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func authenticateURL(accessKey, secretKey string) (string, error) { | func authenticateURL(accessKey, secretKey string) (string, error) { | ||||||
| 	return authenticateJWT(accessKey, secretKey, defaultURLJWTExpiry) | 	return authenticateJWTUsers(accessKey, secretKey, defaultURLJWTExpiry) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func stsTokenCallback(jwtToken *jwtgo.Token) (interface{}, error) { | func stsTokenCallback(jwtToken *jwtgo.Token) (interface{}, error) { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue