Skip to content

Commit

Permalink
Introduce external url service (#81234) (#85490)
Browse files Browse the repository at this point in the history
Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
# Conflicts:
#	src/core/public/index.ts
  • Loading branch information
legrego authored Dec 10, 2020
1 parent 6190fe7 commit 43d03b3
Show file tree
Hide file tree
Showing 57 changed files with 1,544 additions and 82 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [kibana-plugin-core-public](./kibana-plugin-core-public.md) &gt; [HttpSetup](./kibana-plugin-core-public.httpsetup.md) &gt; [externalUrl](./kibana-plugin-core-public.httpsetup.externalurl.md)

## HttpSetup.externalUrl property

<b>Signature:</b>

```typescript
externalUrl: IExternalUrl;
```
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ export interface HttpSetup
| [anonymousPaths](./kibana-plugin-core-public.httpsetup.anonymouspaths.md) | <code>IAnonymousPaths</code> | APIs for denoting certain paths for not requiring authentication |
| [basePath](./kibana-plugin-core-public.httpsetup.basepath.md) | <code>IBasePath</code> | APIs for manipulating the basePath on URL segments. See [IBasePath](./kibana-plugin-core-public.ibasepath.md) |
| [delete](./kibana-plugin-core-public.httpsetup.delete.md) | <code>HttpHandler</code> | Makes an HTTP request with the DELETE method. See [HttpHandler](./kibana-plugin-core-public.httphandler.md) for options. |
| [externalUrl](./kibana-plugin-core-public.httpsetup.externalurl.md) | <code>IExternalUrl</code> | |
| [fetch](./kibana-plugin-core-public.httpsetup.fetch.md) | <code>HttpHandler</code> | Makes an HTTP request. Defaults to a GET request unless overriden. See [HttpHandler](./kibana-plugin-core-public.httphandler.md) for options. |
| [get](./kibana-plugin-core-public.httpsetup.get.md) | <code>HttpHandler</code> | Makes an HTTP request with the GET method. See [HttpHandler](./kibana-plugin-core-public.httphandler.md) for options. |
| [head](./kibana-plugin-core-public.httpsetup.head.md) | <code>HttpHandler</code> | Makes an HTTP request with the HEAD method. See [HttpHandler](./kibana-plugin-core-public.httphandler.md) for options. |
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [kibana-plugin-core-public](./kibana-plugin-core-public.md) &gt; [IExternalUrl](./kibana-plugin-core-public.iexternalurl.md)

## IExternalUrl interface

APIs for working with external URLs.

<b>Signature:</b>

```typescript
export interface IExternalUrl
```

## Methods

| Method | Description |
| --- | --- |
| [validateUrl(relativeOrAbsoluteUrl)](./kibana-plugin-core-public.iexternalurl.validateurl.md) | Determines if the provided URL is a valid location to send users. Validation is based on the configured allow list in kibana.yml.<!-- -->If the URL is valid, then a URL will be returned. Otherwise, this will return null. |

Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [kibana-plugin-core-public](./kibana-plugin-core-public.md) &gt; [IExternalUrl](./kibana-plugin-core-public.iexternalurl.md) &gt; [validateUrl](./kibana-plugin-core-public.iexternalurl.validateurl.md)

## IExternalUrl.validateUrl() method

Determines if the provided URL is a valid location to send users. Validation is based on the configured allow list in kibana.yml.

If the URL is valid, then a URL will be returned. Otherwise, this will return null.

<b>Signature:</b>

```typescript
validateUrl(relativeOrAbsoluteUrl: string): URL | null;
```

## Parameters

| Parameter | Type | Description |
| --- | --- | --- |
| relativeOrAbsoluteUrl | <code>string</code> | |

<b>Returns:</b>

`URL | null`

Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [kibana-plugin-core-public](./kibana-plugin-core-public.md) &gt; [IExternalUrlPolicy](./kibana-plugin-core-public.iexternalurlpolicy.md) &gt; [allow](./kibana-plugin-core-public.iexternalurlpolicy.allow.md)

## IExternalUrlPolicy.allow property

Indicates if this policy allows or denies access to the described destination.

<b>Signature:</b>

```typescript
allow: boolean;
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [kibana-plugin-core-public](./kibana-plugin-core-public.md) &gt; [IExternalUrlPolicy](./kibana-plugin-core-public.iexternalurlpolicy.md) &gt; [host](./kibana-plugin-core-public.iexternalurlpolicy.host.md)

## IExternalUrlPolicy.host property

Optional host describing the external destination. May be combined with `protocol`<!-- -->. Required if `protocol` is not defined.

<b>Signature:</b>

```typescript
host?: string;
```

## Example


```ts
// allows access to all of google.com, using any protocol.
allow: true,
host: 'google.com'

```

Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [kibana-plugin-core-public](./kibana-plugin-core-public.md) &gt; [IExternalUrlPolicy](./kibana-plugin-core-public.iexternalurlpolicy.md)

## IExternalUrlPolicy interface

A policy describing whether access to an external destination is allowed.

<b>Signature:</b>

```typescript
export interface IExternalUrlPolicy
```

## Properties

| Property | Type | Description |
| --- | --- | --- |
| [allow](./kibana-plugin-core-public.iexternalurlpolicy.allow.md) | <code>boolean</code> | Indicates if this policy allows or denies access to the described destination. |
| [host](./kibana-plugin-core-public.iexternalurlpolicy.host.md) | <code>string</code> | Optional host describing the external destination. May be combined with <code>protocol</code>. Required if <code>protocol</code> is not defined. |
| [protocol](./kibana-plugin-core-public.iexternalurlpolicy.protocol.md) | <code>string</code> | Optional protocol describing the external destination. May be combined with <code>host</code>. Required if <code>host</code> is not defined. |

Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [kibana-plugin-core-public](./kibana-plugin-core-public.md) &gt; [IExternalUrlPolicy](./kibana-plugin-core-public.iexternalurlpolicy.md) &gt; [protocol](./kibana-plugin-core-public.iexternalurlpolicy.protocol.md)

## IExternalUrlPolicy.protocol property

Optional protocol describing the external destination. May be combined with `host`<!-- -->. Required if `host` is not defined.

<b>Signature:</b>

```typescript
protocol?: string;
```

## Example


```ts
// allows access to all destinations over the `https` protocol.
allow: true,
protocol: 'https'

```

2 changes: 2 additions & 0 deletions docs/development/core/public/kibana-plugin-core-public.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ The plugin integrates with the core system via lifecycle events: `setup`<!-- -->
| [IAnonymousPaths](./kibana-plugin-core-public.ianonymouspaths.md) | APIs for denoting paths as not requiring authentication |
| [IBasePath](./kibana-plugin-core-public.ibasepath.md) | APIs for manipulating the basePath on URL segments. |
| [IContextContainer](./kibana-plugin-core-public.icontextcontainer.md) | An object that handles registration of context providers and configuring handlers with context. |
| [IExternalUrl](./kibana-plugin-core-public.iexternalurl.md) | APIs for working with external URLs. |
| [IExternalUrlPolicy](./kibana-plugin-core-public.iexternalurlpolicy.md) | A policy describing whether access to an external destination is allowed. |
| [IHttpFetchError](./kibana-plugin-core-public.ihttpfetcherror.md) | |
| [IHttpInterceptController](./kibana-plugin-core-public.ihttpinterceptcontroller.md) | Used to halt a request Promise chain in a [HttpInterceptor](./kibana-plugin-core-public.httpinterceptor.md)<!-- -->. |
| [IHttpResponseInterceptorOverrides](./kibana-plugin-core-public.ihttpresponseinterceptoroverrides.md) | Properties that can be returned by HttpInterceptor.request to override the response. |
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [kibana-plugin-core-server](./kibana-plugin-core-server.md) &gt; [IExternalUrlConfig](./kibana-plugin-core-server.iexternalurlconfig.md)

## IExternalUrlConfig interface

External Url configuration for use in Kibana.

<b>Signature:</b>

```typescript
export interface IExternalUrlConfig
```

## Properties

| Property | Type | Description |
| --- | --- | --- |
| [policy](./kibana-plugin-core-server.iexternalurlconfig.policy.md) | <code>IExternalUrlPolicy[]</code> | A set of policies describing which external urls are allowed. |

Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [kibana-plugin-core-server](./kibana-plugin-core-server.md) &gt; [IExternalUrlConfig](./kibana-plugin-core-server.iexternalurlconfig.md) &gt; [policy](./kibana-plugin-core-server.iexternalurlconfig.policy.md)

## IExternalUrlConfig.policy property

A set of policies describing which external urls are allowed.

<b>Signature:</b>

```typescript
readonly policy: IExternalUrlPolicy[];
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [kibana-plugin-core-server](./kibana-plugin-core-server.md) &gt; [IExternalUrlPolicy](./kibana-plugin-core-server.iexternalurlpolicy.md) &gt; [allow](./kibana-plugin-core-server.iexternalurlpolicy.allow.md)

## IExternalUrlPolicy.allow property

Indicates of this policy allows or denies access to the described destination.

<b>Signature:</b>

```typescript
allow: boolean;
```
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [kibana-plugin-core-server](./kibana-plugin-core-server.md) &gt; [IExternalUrlPolicy](./kibana-plugin-core-server.iexternalurlpolicy.md) &gt; [host](./kibana-plugin-core-server.iexternalurlpolicy.host.md)

## IExternalUrlPolicy.host property

Optional host describing the external destination. May be combined with `protocol`<!-- -->. Required if `protocol` is not defined.

<b>Signature:</b>

```typescript
host?: string;
```

## Example


```ts
// allows access to all of google.com, using any protocol.
allow: true,
host: 'google.com'

```

Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [kibana-plugin-core-server](./kibana-plugin-core-server.md) &gt; [IExternalUrlPolicy](./kibana-plugin-core-server.iexternalurlpolicy.md)

## IExternalUrlPolicy interface

A policy describing whether access to an external destination is allowed.

<b>Signature:</b>

```typescript
export interface IExternalUrlPolicy
```

## Properties

| Property | Type | Description |
| --- | --- | --- |
| [allow](./kibana-plugin-core-server.iexternalurlpolicy.allow.md) | <code>boolean</code> | Indicates of this policy allows or denies access to the described destination. |
| [host](./kibana-plugin-core-server.iexternalurlpolicy.host.md) | <code>string</code> | Optional host describing the external destination. May be combined with <code>protocol</code>. Required if <code>protocol</code> is not defined. |
| [protocol](./kibana-plugin-core-server.iexternalurlpolicy.protocol.md) | <code>string</code> | Optional protocol describing the external destination. May be combined with <code>host</code>. Required if <code>host</code> is not defined. |

Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](./index.md) &gt; [kibana-plugin-core-server](./kibana-plugin-core-server.md) &gt; [IExternalUrlPolicy](./kibana-plugin-core-server.iexternalurlpolicy.md) &gt; [protocol](./kibana-plugin-core-server.iexternalurlpolicy.protocol.md)

## IExternalUrlPolicy.protocol property

Optional protocol describing the external destination. May be combined with `host`<!-- -->. Required if `host` is not defined.

<b>Signature:</b>

```typescript
protocol?: string;
```

## Example


```ts
// allows access to all destinations over the `https` protocol.
allow: true,
protocol: 'https'

```

2 changes: 2 additions & 0 deletions docs/development/core/server/kibana-plugin-core-server.md
Original file line number Diff line number Diff line change
Expand Up @@ -94,6 +94,8 @@ The plugin integrates with the core system via lifecycle events: `setup`<!-- -->
| [IContextContainer](./kibana-plugin-core-server.icontextcontainer.md) | An object that handles registration of context providers and configuring handlers with context. |
| [ICspConfig](./kibana-plugin-core-server.icspconfig.md) | CSP configuration for use in Kibana. |
| [ICustomClusterClient](./kibana-plugin-core-server.icustomclusterclient.md) | See [IClusterClient](./kibana-plugin-core-server.iclusterclient.md) |
| [IExternalUrlConfig](./kibana-plugin-core-server.iexternalurlconfig.md) | External Url configuration for use in Kibana. |
| [IExternalUrlPolicy](./kibana-plugin-core-server.iexternalurlpolicy.md) | A policy describing whether access to an external destination is allowed. |
| [IKibanaResponse](./kibana-plugin-core-server.ikibanaresponse.md) | A response data object, expected to returned as a result of [RequestHandler](./kibana-plugin-core-server.requesthandler.md) execution |
| [IKibanaSocket](./kibana-plugin-core-server.ikibanasocket.md) | A tiny abstraction for TCP socket. |
| [ImageValidation](./kibana-plugin-core-server.imagevalidation.md) | |
Expand Down
Loading

0 comments on commit 43d03b3

Please sign in to comment.