Bold BI supports embedding the widgets to other web applications using Single Sign-On authentication.
Below are the steps to embed widgets into other web applications.
Go to the settings page and click Embed
. Enable the Enable embed authentication
under that page.
Click Generate Secret
button.
On clicking it, the secret code will be generated. Save the secret key safely, as it will not be able to retrieve or restore this generated secret.
Once the secret code is generated, it can be regenerate by clicking the Regenerate Secret
button.
Warning : Resetting this code will break the previously working embedded dashboards.
More
option under the widget you want to embed .Then, select Get Embed Code
from the drop-down menu.The embed URL should be in the below format,
{dashboard URL}/{embed parameters}&embed_signature={signature}
Example: http://test.boldbi.com/bi/en-us/site/site1/dashboards/8428c9d9-85db-418c-b877-ea4495dcddd7/Predictive%20Analytics/Personal%20Expense%20Analysis?isWidgetMode=true&widgetId=0000aeab-3359-40c6-b014-1ea98e9a7ce9&embed_nonce=3e253410-1a82-4fb3-a337-122a8007dafc&embed_user_email=test@syncfusion.com&embeds=sdwd&embed_dashboard_views=true&embed_dashboard_export=true&embed_widget_comments=true&embed_timestamp=1583928213&embed_expirationtime=100&embed_signature=VYrDMVX4h85PrRBKX9mystRHYkU8z+HVC9bkVMc2qGY=' |
Please find the details of the parameter in the URL as below,
Parameter | Description |
dashboard URL | URL of the dashboard, in which the widget is present and will be embedded. |
embed parameters | Parameters required to embed the particular widget of dashboard with SSO. |
signature | The authorized key for the dashboard, in which the widget is present and will be embedded. |
The below values are necessary to form the signature
Parameter | Mandatory | Description | Example |
isWidgetMode | Yes | To enable the widget mode. | true |
widgetId | Yes | Widget Id of the widget to be embedded. To know how to get widgetId from the dashboard, here | 0fa8d95d-e262-4a89-0976-390e3a57ee50 |
embed_nonce | Yes | Random string that restricts the URL reconstruction or attacks from the hackers. | 0fa8d95d-e262-4a89-0976-390e3a57ee50 |
embed_user_email | Yes | The email id of the user. | [email protected] |
embed_dashboard_export | No | The export option to the various formats of the dashboard and widget in the embedded dashboard is displayed based on this value. | true |
embed_widget_comments | No | The actions related to comments such as post, edit, delete, reply, posting the image and user mention list options can be performed in widgets based on this value. | true |
embed_timestamp | Yes | The current time as UNIX time stamp. The embed URL formed is valid for 604800 sec(7 days as maximum) from this embed time stamp. | Example for embed_timestamp is 1583934776. |
embed_expirationtime | No | Set the duration for the token to be alive. It must be represented in seconds. The minimum time is 86400 sec (1 day) and the maximum time is 604800 sec(7 days). | Example for embed_expirationtime is 604800 |
Parameter | Mandatory | Description | Example |
embed_signature | Yes | A signature is generated using the secret code to authenticate the embed URL. | VYrDMVX4h85PrRBKX9mystRHYkU8z+HVC9bkVMc2qGY= |
The embed parameter should be formed as in the below format.
isWidgetMode=true&widgetId=0000aeab-3359-40c6-b014-1ea98e9a7ce9&embed_nonce=55a1c8f4-5015-487d-8463-d3ebeae655fd&embed_user_email=test@syncfusion.com&embed_dashboard_export=true&embed_widget_comments=true&embed_timestamp=1583935418&embed_expirationtime=100 |
To obtain the signature for the embed URL, pass the query parameters as an argument to the below GetSignatureUrl
method. It will return the hashed signature, which you must append to the existing query parameters with the query parameter name as ‘embed_signature’.
public string GetSignatureUrl(string queryString)
{
// Get the embedSecret key from Bold BI.
var embedSecret = "8apLLNabQisvriG2W1nOI7XWkl2CsYY";
var encoding = new System.Text.UTF8Encoding();
var keyBytes = encoding.GetBytes(embedSecret);
var messageBytes = encoding.GetBytes(queryString);
using (var hmacsha1 = new HMACSHA256(keyBytes))
{
var hashMessage = hmacsha1.ComputeHash(messageBytes);
return Convert.ToBase64String(hashMessage);
}
}
Provided the code sample to generate the signature in C#. You can write the equivalent code in your platform language.
Name | Type | In Widgets |
---|---|---|
embed_widget_comments |
boolean |
Show/hide widget comments |
embed_dashboard_export |
boolean |
Show/hide widget export option |
hide_widget_tool |
string |
Predefined values: fr-Filter,fs-FullScreen,om-Option Menu |
You can download the sample here.