Skip to content

Commit ac08d08

Browse files
authored
ENG-1873: Add narrative and FAQ to Routes Portal (#1799)
1 parent 4e50e08 commit ac08d08

File tree

2 files changed

+69
-21
lines changed

2 files changed

+69
-21
lines changed

content/docs/capabilities/routes-portal.mdx

+60-11
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,57 @@ title: Pomerium Routes Portal
33
lang: en-US
44
sidebar_label: 'Routes Portal'
55
description: How to quickly view the routes you have access to in Pomerium.
6-
keywords: [pomerium, routing, portal]
6+
keywords: [pomerium, routes, portal, cli, desktop client, JSON API]
77
---
88

9-
The Pomerium Routes Portal allows a user to see all the routes they have access to. It is available on any domain frontend by Pomerium at the special `/.pomerium/routes` endpoint.
9+
The Pomerium Routes Portal allows a user to see all the routes they have access to and easily navigate or connect to them. The Routes Portal is personalized for each user based on their authorization to the configured routes. For non-HTTP routes, such as SSH or plain TCP connections, the portal provides corresponding Pomerium CLI commands that can be used to connect to the resources.
10+
11+
We recommend using the Routes Portal to help onboard new users to Pomerium and to provide a central location for users to access all their resources.
12+
13+
## Ways of Accessing the Routes Portal
14+
15+
The Routes Portal is available in the following ways:
16+
17+
- [**Web Page**](#web-page) - Generally useful for quickly navigating to available web applications or identifying non-HTTP CLI commands
18+
- [**Desktop Client**](#desktop-client) - Best for setting up non-HTTP connections such as SSH or databases
19+
- [**CLI**](#cli) - Can be used programmatically to list routes and then connect to them
20+
- [**JSON API**](#json-api) - Can be used to integrate with your own systems and processes
21+
22+
:::note Identifying Your Pomerium Domain
23+
24+
The Routes Portal is available on all Pomerium cluster domains. New users should contact their Pomerium administrator to identify their organization's Pomerium domain. The domain could be a Pomerium provided domain such as `curious-cat-9999.pomerium.app` or a custom domain.
25+
26+
:::
27+
28+
### Web Page
29+
30+
The web page version of the Routes Portal is accessible via a web browser at `https://<your-pomerium-domain>/.pomerium/routes`. Accessing the page when not authenticated will redirect you to the configured Identity Provider for authentication. Once logged in, you will see a list of all the routes you have access to.
1031

1132
![Routes Portal](./img/routes-portal/routes-portal.png)
1233

13-
This data is also available as JSON at `/.pomerium/api/v1/routes`.
34+
### Desktop Client
35+
36+
The Pomerium Desktop Client can automatically create connections using the Routes Portal. While static route lists can be exported, shared, and imported by users looking to set up their Pomerium Desktop Client, the portal provides a more dynamic way of loading available route configuration. After providing your Pomerium cluster domain, the Desktop Client will automatically load all the routes you have access to. You may optionally specify a tag for the loaded routes to identify the ones created by this process.
37+
38+
:::note Updating Routes in the Desktop Client
39+
40+
The Desktop Client does not automatically update the routes list when changes are made to the Pomerium configuration. An updated routes list can be loaded by performing the same process again.
41+
42+
:::
43+
44+
![Desktop Client](./img/routes-portal/desktop-client.png)
45+
46+
### CLI
47+
48+
The Pomerium CLI can list routes via the `routes list` subcommand:
49+
50+
```bash
51+
pomerium-cli routes list https://<your-pomerium-domain>
52+
```
53+
54+
### JSON API
55+
56+
Accessible via a JSON API at `https://<your-pomerium-domain>/.pomerium/api/v1/routes`
1457

1558
```json
1659
{
@@ -34,16 +77,22 @@ This data is also available as JSON at `/.pomerium/api/v1/routes`.
3477
}
3578
```
3679

37-
### CLI
80+
## FAQ
3881

39-
The Pomerium CLI can list routes via the `routes list` subcommand:
82+
### Is the Routes Portal publicly available?
4083

41-
```bash
42-
pomerium-cli routes list https://curious-cat-9999.pomerium.app
43-
```
84+
Yes, the Routes Portal is publicly available, but only authenticated users will be able to see the routes they have access to. Unauthenticated users will be forced to authenticate.
4485

45-
### Desktop Client
86+
### Can I disable the Routes Portal?
4687

47-
The Pomerium Desktop Client can automatically create connections using the Routes Portal.
88+
No, the Routes Portal is a core feature of Pomerium and cannot be disabled. If you have concerns about the security of the portal, please contact [email protected].
4889

49-
![Desktop Client](./img/routes-portal/desktop-client.png)
90+
### Can I customize the Routes Portal?
91+
92+
The routes which are displayed in the Routes Portal are based on the user's authorization and can be controlled by modifying the applied Pomerium policies for each given route. If you are interested in further customization, please contact [email protected]
93+
94+
### How can I find my Routes Portal domain?
95+
96+
The Routes Portal is available on all Pomerium cluster domains. If you know the URL of one of your routes, the domain of this route is your Pomerium domain.
97+
98+
New users should contact their Pomerium administrator to identify their organization's Pomerium domain. The domain could be a Pomerium provided domain such as curious-cat-9999.pomerium.app or a custom domain configured by an administrator.

src/theme/NotFound/Content/index.tsx

+9-10
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,25 @@ import type {WrapperProps} from '@docusaurus/types';
66
type Props = WrapperProps<typeof ContentType>;
77

88
export default function ContentWrapper(props: Props): JSX.Element {
9-
109
useEffect(() => {
1110
if (typeof window !== 'undefined' && window?.gtag) {
1211
//normal page_view event
13-
gtag("event", "page_view", {
14-
page_title: "404 Not Found",
12+
gtag('event', 'page_view', {
13+
page_title: '404 Not Found',
1514
page_path: window.location.pathname,
16-
event_category: "Errors",
17-
event_label: "404"
15+
event_category: 'Errors',
16+
event_label: '404',
1817
});
1918

2019
//custom event that might be easier to work with
21-
window.gtag("event", "not_found", {
22-
page_title: "Page Not Found",
20+
window.gtag('event', 'not_found', {
21+
page_title: 'Page Not Found',
2322
page_path: window.location.pathname,
24-
event_category: "Errors",
25-
event_label: "404"
23+
event_category: 'Errors',
24+
event_label: '404',
2625
});
2726
}
28-
}, [])
27+
}, []);
2928
return (
3029
<>
3130
<Content {...props} />

0 commit comments

Comments
 (0)