Hey there, I'm new to the frontend development community and I'm really grateful for the opportunity to explore OpenZiti. I have a question: currently, we have Android/iOS/Mac/Windows clients, which is fantastic. Now, I'm interested in independently developing a simple browser that allows users to join and access the covered network instantly, similar to embedding the client tool within the browser. It's meant to be an exclusive browser. I tried ZitiBrowser, but it seems to focus more on setting up backend servers. Could you please suggest any resources or SDKs that might assist me in this?
Hi @zhaojun1217. Welcome to the community.
independently developing a simple browser
This is an exceptionally difficult task, even a simple browser. You might want to start with an extension first if you try this
that allows users to join and access the covered network
This is what Browzer allows. Browzer is a suite of technologies that allows exactly this experience. Yes there are server side components but there are also browser-side parts too.
Other than Browzer, I don't personally know of anything else. Perhaps using the OpenZiti c sk to make a browser extension would be another option.
@zhaojun1217 You indicated that you "tried ZitiBrowser". Can you elaborate on your process/journey and whether you successfully achieved a running system?
Meanwhile, one of the goals of BrowZer is to allow anyone on any device where a browser (e.g. Chrome) already exists, to access a web app that is only accessible over a Ziti network. No need to install any new software on the client.
If you are indeed interested in creating a browser that is capable of joining/accessing a Ziti network, you might investigate the existing landscape of open-source browsers that are out there (e.g. Chromium, or Brave), fork one of them, and then integrate one of our SDKs (probably our C SDK since most browsers are implemented in C/C++).
@curt Thank you for your response. Leveraging Amazon servers, I've successfully implemented a browser workflow. I've noticed that during the initial console opening, there's a series of dependencies that need downloading, which might slow down efficiency in unknown situations. Therefore, I'm contemplating integrating them as part of the browser usage. I'm considering using WebKit to create a simple browser, though it's just an idea for now. I'm exploring the feasibility of this approach.
@TheLumberjack Thank you for your response, Browzer has been very helpful for me. I've implemented the example following your video tutorial (Example Enabling BrowZer | OpenZiti), although there might be a few imperfections in my work! Lately, I've been examining the source code for 'bootstrapper-main/core-main/sw-main/edge-client-main/runtime-main' as I believe they are interrelated. However, due to my lack of familiarity and minimal explanations in the README, I'm struggling to connect their functionalities, especially in the context of each stage in Browzer. Could you suggest any related videos or blogs for learning, or could you provide an explanation? For instance, their significant roles in each phase of Browzer would be greatly appreciated. Thank you!
It seems like a browser extension could be a good approach, reminiscent of mobile apps. What if the extension could identify JWT files and grant the browser access to Ziti? Would this be a simpler solution?
@zhaojun1217 One of the things I have on my backlog involves publishing more blogs/docs related to browZer internals.
This upcoming content will illuminate how the various browZer components interrelate, what the sequence of bootstrapping the Ziti session entails, etc.
If you haven't already done so, I recommend that you subscribe to https://blog.openziti.io and you will be notified when these articles get published.
To subscribe, open any blog post, scroll to the bottom of the article, and then use the dialog that looks like the following:
That's great! I've subscribed and I'm looking forward to new blog posts.