func (c *OtsimoAccounts) ConnectToServices(dexServiceUrl, apiServiceUrl string) { jwtCreds := NewOauthAccess(c.tm) var opts []grpc.DialOption if c.roots != nil { opts = append(opts, grpc.WithTransportCredentials(credentials.NewClientTLSFromCert(c.roots, ""))) } else { jwtCreds.RequireTLS = false opts = append(opts, grpc.WithInsecure()) } opts = append(opts, grpc.WithPerRPCCredentials(&jwtCreds)) conn, err := grpc.Dial(dexServiceUrl, opts...) if err != nil { log.Fatalf("Error while connection to dex service %v\n", err) } c.Dex = pb.NewDexServiceClient(conn) apiConn, err := grpc.Dial(apiServiceUrl, opts...) if err != nil { log.Fatalf("Error while connection to api service %v\n", err) } c.Api = apipb.NewApiServiceClient(apiConn) }
func connectClient(connect2registry, connect2catalog, connect2api bool) { discovery := os.Getenv("DEX_WORKER_ISSUER") cfg, err := oidc.FetchProviderConfig(http.DefaultClient, discovery) if err != nil { logrus.Fatalln("Unable to fetch provider configs") } ccfg := oidc.ClientConfig{ ProviderConfig: cfg, Credentials: cc, } //logrus.Printf("ccfg.Credentials: %+v",ccfg.Credentials) //logrus.Printf("ccfg.ProviderConfig: %+v",ccfg.ProviderConfig) myclient, err := oidc.NewClient(ccfg) if err != nil { logrus.Fatalf("Unable to create Client: %v", err) } tok, err := myclient.ClientCredsToken([]string{"openid"}) if err != nil { logrus.Printf("Token: %+v ", tok) logrus.Errorf("Error: %+v", err) logrus.Fatalf("Unable to get token") } jwtCreds := NewOauthAccess(tok.Encode()) //logrus.Println("got the jwtCreds") claims, err := tok.Claims() clientsub, _, _ = claims.StringClaim("sub") //logrus.Println("Get the clientsub", clientsub) if err != nil { logrus.Fatalln("unable to get getClientIdAndEmail", err) } if len(cafile) > 0 { auth, err := credentials.NewClientTLSFromFile(cafile, "") if err != nil { panic(err) } else { opts = append(opts, grpc.WithTransportCredentials(auth)) } } else { jwtCreds.RequireTLS = false opts = append(opts, grpc.WithInsecure()) } opts = append(opts, grpc.WithPerRPCCredentials(&jwtCreds)) if connect2api { apiUrl = os.Getenv("OTSIMO_SERVICES_API_URL") if apiUrl == "" { panic("OTSIMO_SERVICES_API_URL must set") } apiConn, _ := grpc.Dial(apiUrl, opts...) apiClient = apipb.NewApiServiceClient(apiConn) /* if err != nil { logrus.Println(" cannot dial ") logrus.Println(err) } else { logrus.Println(" dialed ") } if apiClient == nil { logrus.Println(" apiClient error ") } else { logrus.Println(" apiClient ") } */ } //------------------------------------------------------------------------------------------------------------------ if connect2registry { registryUrl = os.Getenv("OTSIMOCTL_REGISTRY") if registryUrl == "" { panic("OTSIMOCTL_REGISTRY must set") } regConn, _ := grpc.Dial(registryUrl, opts...) registryClient = apipb.NewRegistryServiceClient(regConn) /* if err != nil { logrus.Println(" cannot dial ") logrus.Println(err) } else { logrus.Println(" dialed ") } if registryClient == nil { logrus.Println(" catalogClt error ") } else { logrus.Println(" catalogClient ") } */ } //------------------------------------------------------------------------------------------------------------------ if connect2catalog { catalogUrl = os.Getenv("OTSIMOCTL_CATALOG") if catalogUrl == "" { panic("OTSIMOCTL_CATALOG must set") } catConn, _ := grpc.Dial(catalogUrl, opts...) catalogClient = apipb.NewCatalogServiceClient(catConn) /* if err != nil { logrus.Println(" cannot dial ") logrus.Println(err) } else { logrus.Println(" dialed ") } if catalogClient == nil { logrus.Println(" catalogClt error ") } else { logrus.Println(" catalogClient ") } */ } }
func connectUser(connect2registry, connect2catalog, connect2api bool) { accountsServiceUrl = os.Getenv("OTSIMOCTL_ACCOUNTS") if accountsServiceUrl == "" { panic("OTSIMOCTL_ACCOUNTS must set") } resp, err := http.PostForm(accountsServiceUrl+"/login", val) if err != nil { logrus.Fatalln("error while trying accountsServiceUrl", err) } dec := json.NewDecoder(resp.Body) asd := struct { Error string `json:"error,omitempty"` AccessToken string `json:"access_token,omitempty"` TokenType string `json:"token_type,omitempty"` RefreshToken string `json:"refresh_token,omitempty"` }{ AccessToken: "", TokenType: "", RefreshToken: "", } err = dec.Decode(&asd) if err != nil { logrus.Fatalln("unable to decode response body", err) } token := asd.AccessToken jwtCreds := NewOauthAccess(token) jwtToken, _ := jose.ParseJWT(token) usersub, _, err = getUserIdAndEmail(jwtToken) if err != nil { logrus.Fatalln("unable to get getUserIdAndEmail", err) } //logrus.Println("Get the usersub", usersub) if len(cafile) > 0 { auth, err := credentials.NewClientTLSFromFile(cafile, "") if err != nil { panic(err) } else { opts = append(opts, grpc.WithTransportCredentials(auth)) } } else { jwtCreds.RequireTLS = false opts = append(opts, grpc.WithInsecure()) } opts = append(opts, grpc.WithPerRPCCredentials(&jwtCreds)) //----------------------------------------------------------------------------------------------------------------- if connect2registry { registryUrl = os.Getenv("OTSIMOCTL_REGISTRY") if registryUrl == "" { panic("OTSIMOCTL_REGISTRY must set") } regConn, _ := grpc.Dial(registryUrl, opts...) registryClient = apipb.NewRegistryServiceClient(regConn) /* if err != nil { logrus.Println(" cannot dial ") logrus.Println(err) } else { logrus.Println(" dialed ") } if registryClient == nil { logrus.Println(" catalogClt error ") } else { logrus.Println(" catalogClient ") } */ } //------------------------------------------------------------------------------------------------------------------ if connect2catalog { catalogUrl = os.Getenv("OTSIMOCTL_CATALOG") if catalogUrl == "" { panic("OTSIMOCTL_CATALOG must set") } catConn, _ := grpc.Dial(catalogUrl, opts...) catalogClient = apipb.NewCatalogServiceClient(catConn) /* if err != nil { logrus.Println(" cannot dial ") logrus.Println(err) } else { logrus.Println(" dialed ") } if catalogClient == nil { logrus.Println(" catalogClt error ") } else { logrus.Println(" catalogClient ") } */ } //----------------------------------------------------------------------------------------------------------------- if connect2api { apiUrl = os.Getenv("OTSIMO_SERVICES_API_URL") if apiUrl == "" { panic("OTSIMO_SERVICES_API_URL must set") } apiConn, _ := grpc.Dial(apiUrl, opts...) apiClient = apipb.NewApiServiceClient(apiConn) /* if err != nil { logrus.Println(" cannot dial ") logrus.Println(err) } else { logrus.Println(" dialed ") } if apiClient == nil { logrus.Println(" apiClient error ") } else { logrus.Println(" apiClient ") } */ } }