This is an automated email from the ASF dual-hosted git repository.

sfirke pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/master by this push:
     new e54353c4da docs: HTML embedding of charts/dashboards without 
authentication (#30032)
e54353c4da is described below

commit e54353c4da71c16d6ca1e3d3906d3bcdc8d7d7a1
Author: lindner-tj <[email protected]>
AuthorDate: Wed Sep 18 21:32:21 2024 +0200

    docs: HTML embedding of charts/dashboards without authentication (#30032)
    
    Co-authored-by: Sam Firke <[email protected]>
---
 docs/docs/configuration/networking-settings.mdx | 59 ++++++++++++++++++++++++-
 1 file changed, 58 insertions(+), 1 deletion(-)

diff --git a/docs/docs/configuration/networking-settings.mdx 
b/docs/docs/configuration/networking-settings.mdx
index 3993c8bfc4..611b44cf0a 100644
--- a/docs/docs/configuration/networking-settings.mdx
+++ b/docs/docs/configuration/networking-settings.mdx
@@ -1,3 +1,4 @@
+
 ---
 title: Network and Security Settings
 sidebar_position: 7
@@ -24,9 +25,65 @@ The following keys in `superset_config.py` can be specified 
to configure CORS:
 ## HTTP headers
 
 Note that Superset bundles [flask-talisman](https://pypi.org/project/talisman/)
-Self-descried as a small Flask extension that handles setting HTTP headers 
that can help
+Self-described as a small Flask extension that handles setting HTTP headers 
that can help
 protect against a few common web application security issues.
 
+
+## HTML Embedding of Dashboards and Charts
+
+There are two ways to embed a dashboard: Using the 
[SDK](https://www.npmjs.com/package/@superset-ui/embedded-sdk) or embedding a 
direct link. Note that in the latter case everybody who knows the link is able 
to access the dashboard.
+
+### Embedding a Public Direct Link to a Dashboard
+
+This works by first changing the content security policy (CSP) of 
[flask-talisman](https://github.com/GoogleCloudPlatform/flask-talisman) to 
allow for certain domains to display Superset content. Then a dashboard can be 
made publicly accessible, i.e. **bypassing authentication**. Once made public, 
the dashboard's URL can be added to an iframe in another website's HTML code.
+
+#### Changing flask-talisman CSP
+
+Add to `superset_config.py` the entire `TALISMAN_CONFIG` section from 
`config.py` and include a `frame-ancestors` section:
+```python
+TALISMAN_ENABLED = True
+TALISMAN_CONFIG = {
+    "content_security_policy": {
+    ...
+       "frame-ancestors": ["*.my-domain.com", "*.another-domain.com"],
+    ...
+```
+Restart Superset for this configuration change to take effect.
+
+#### Making a Dashboard Public
+
+1. Add the `'DASHBOARD_RBAC': True` [Feature 
Flag](https://github.com/apache/superset/blob/master/RESOURCES/FEATURE_FLAGS.md)
 to `superset_config.py`
+2. Add the `Public` role to your dashboard as described 
[here](https://superset.apache.org/docs/using-superset/creating-your-first-dashboard/#manage-access-to-dashboards)
+
+#### Embedding a Public Dashboard
+
+Now anybody can directly access the dashboard's URL. You can embed it in an 
iframe like so:
+
+```html
+<iframe
+  width="600"
+  height="400"
+  seamless
+  frameBorder="0"
+  scrolling="no"
+  
src="https://superset.my-domain.com/superset/dashboard/10/?standalone=1&height=400";
+>
+</iframe>
+```
+#### Embedding a Chart
+
+A chart's embed code can be generated by going to a chart's edit view and then 
clicking at the top right on `...` > `Share` > `Embed code`
+
+### Enabling Embedding via the SDK
+
+Clicking on `...` next to `EDIT DASHBOARD` on the top right of the dashboard's 
overview page should yield a drop-down menu including the entry "Embed 
dashboard".
+
+To enable this entry, add the following line to the `.env` file:
+
+```text
+SUPERSET_FEATURE_EMBEDDED_SUPERSET=true
+```
+
 ## CSRF settings
 
 Similarly, [flask-wtf](https://flask-wtf.readthedocs.io/en/0.15.x/config/) is 
used manage

Reply via email to