// GetAuthKeys get access key id and secret access key func GetAuthKeys(url string) ([]byte, error) { op := RPCOps{ Method: "Auth.Get", Request: rpc.Args{Request: ""}, } req, err := NewRequest(url, op, http.DefaultTransport) if err != nil { return nil, iodine.New(err, nil) } resp, err := req.Do() defer closeResp(resp) if err != nil { return nil, iodine.New(err, nil) } var reply rpc.AuthReply if err := jsonrpc.DecodeClientResponse(resp.Body, &reply); err != nil { return nil, iodine.New(err, nil) } authConfig := &auth.Config{} authConfig.Version = "0.0.1" authConfig.Users = make(map[string]*auth.User) user := &auth.User{} user.Name = "testuser" user.AccessKeyID = reply.AccessKeyID user.SecretAccessKey = reply.SecretAccessKey authConfig.Users[reply.AccessKeyID] = user if err := auth.SaveConfig(authConfig); err != nil { return nil, iodine.New(err, nil) } return json.MarshalIndent(reply, "", "\t") }
// resetAuth reset auth keys for a user func resetAuth(args *AuthArgs, reply *AuthRep) *probe.Error { config, err := auth.LoadConfig() if err != nil { return err.Trace() } if _, ok := config.Users[args.User]; !ok { return probe.NewError(errors.New("User not found")) } accessKeyID, err := auth.GenerateAccessKeyID() if err != nil { return err.Trace() } reply.AccessKeyID = string(accessKeyID) secretAccessKey, err := auth.GenerateSecretAccessKey() if err != nil { return err.Trace() } reply.SecretAccessKey = string(secretAccessKey) reply.Name = args.User config.Users[args.User] = &auth.User{ Name: args.User, AccessKeyID: string(accessKeyID), SecretAccessKey: string(secretAccessKey), } return auth.SaveConfig(config).Trace() }
func (s *GoofysTest) setupMinio(t *C, addr string) (accessKey string, secretKey string) { accessKeyID, perr := auth.GenerateAccessKeyID() t.Assert(perr, IsNil) secretAccessKey, perr := auth.GenerateSecretAccessKey() t.Assert(perr, IsNil) accessKey = string(accessKeyID) secretKey = string(secretAccessKey) authConf := &auth.Config{} authConf.Users = make(map[string]*auth.User) authConf.Users[string(accessKeyID)] = &auth.User{ Name: "testuser", AccessKeyID: accessKey, SecretAccessKey: secretKey, } auth.SetAuthConfigPath(filepath.Join(t.MkDir(), "users.json")) perr = auth.SaveConfig(authConf) t.Assert(perr, IsNil) go server.Start(api.Config{Address: addr}) err := s.waitFor(t, addr) t.Assert(err, IsNil) return }
// generateAuth generate new auth keys for a user func generateAuth(args *AuthArgs, reply *AuthRep) *probe.Error { config, err := auth.LoadConfig() if err != nil { if os.IsNotExist(err.ToGoError()) { // Initialize new config, since config file doesn't exist yet config = &auth.Config{} config.Version = "0.0.1" config.Users = make(map[string]*auth.User) } else { return err.Trace() } } if _, ok := config.Users[args.User]; ok { return probe.NewError(errors.New("Credentials already set, if you wish to change this invoke Reset() method")) } accessKeyID, err := auth.GenerateAccessKeyID() if err != nil { return err.Trace() } reply.AccessKeyID = string(accessKeyID) secretAccessKey, err := auth.GenerateSecretAccessKey() if err != nil { return err.Trace() } reply.SecretAccessKey = string(secretAccessKey) reply.Name = args.User config.Users[args.User] = &auth.User{ Name: args.User, AccessKeyID: string(accessKeyID), SecretAccessKey: string(secretAccessKey), } if err := auth.SaveConfig(config); err != nil { return err.Trace() } return nil }
func (s *MyAPISignatureV4Suite) SetUpSuite(c *C) { root, err := ioutil.TempDir(os.TempDir(), "api-") c.Assert(err, IsNil) s.root = root conf := &donut.Config{} conf.Version = "0.0.1" conf.DonutName = "test" conf.NodeDiskMap = createTestNodeDiskMap(root) conf.MaxSize = 100000 donut.SetDonutConfigPath(filepath.Join(root, "donut.json")) perr := donut.SaveConfig(conf) c.Assert(perr, IsNil) accessKeyID, perr := auth.GenerateAccessKeyID() c.Assert(perr, IsNil) secretAccessKey, perr := auth.GenerateSecretAccessKey() c.Assert(perr, IsNil) authConf := &auth.Config{} authConf.Users = make(map[string]*auth.User) authConf.Users[string(accessKeyID)] = &auth.User{ Name: "testuser", AccessKeyID: string(accessKeyID), SecretAccessKey: string(secretAccessKey), } s.accessKeyID = string(accessKeyID) s.secretAccessKey = string(secretAccessKey) auth.SetAuthConfigPath(root) perr = auth.SaveConfig(authConf) c.Assert(perr, IsNil) minioAPI := getNewAPI() httpHandler := getAPIHandler(minioAPI) go startTM(minioAPI) testSignatureV4Server = httptest.NewServer(httpHandler) }