Sisense Community logo
     
    • Community Feedback
    • Chapters
    • Events
    • Forums
      • Help and How To
      • Product Feedback Forum
      • Strategy & Use Cases
    • Blogs
    • KB Docs
      • KB Docs
      • Add-Ons & Plug-Ins
      • APIs
      • Best Practices
      • Blox
      • CDT
      • Cloud Managed Service
      • Data Models
      • Data Sources
      • Embedding Analytics
      • How-Tos & FAQs
      • Onboarding
      • PySisense
      • Security
      • Sisense Administration
      • Sisense Intelligence & AI
      • Troubleshooting
      • Widget & Dashboard Scripts
    • Support
    • Learning
      • Sisense Academy: Free Courses and Certifications
      • Official Developer Documentation
      • Official Product Documentation
      • Official Sisense Youtube Channel
      • Sisense Compose SDK Playground
      • Official Sisense Discord
    • Use Case Gallery
    •      
    Discussions
    •                    
    •                    
    •                    
    •                    
    •                    
    •                    
    •                    
    •                    
    •                    
    •                    
    •                    
    •                    
    •                    
    •                    
    •                    
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
    Discussions
    • TagsChevronRightIcon
    Embedding + Security
    • Blog banner
      • Embedding AnalyticsChevronRightIcon

      From Zero to ComposeSDK: Building a Sisense React Application with an AI Coding Assistant

                                                                                                                                       

      From Zero to ComposeSDK: Building a Sisense React Application with an AI Coding Assistant A computer with no development related setup, no code editor application, no programming languages or runtimes such as Node installed, no development tooling of any kind, can create a running ComposeSDK React application in a single development session, connected to a live Sisense instance and ready for continued iteration. The computer can be a laptop, desktop, or server, and the finished app can be served from localhost, a local IP address, or a domain. Almost none of this development and setup has to be done by hand. An AI coding assistant installs the tooling, runs the commands, and writes the code, while the developer describes what should happen and confirms the results along the way. This style of development is sometimes called vibe coding, which refers to working conversationally and letting the AI handle the mechanics. Any modern LLM based coding assistant can drive this workflow. It needs two capabilities, editing code files in the project folder and running terminal commands. This article uses Claude Code in VS Code as the concrete example, but the same steps work in other editors with agentic assistants, in a standalone CLI tool like Claude CLI, or in a desktop app with terminal access like Claude Desktop. The prompts translate directly and are not specific to Claude. Only two steps require manual installation. The first is installing the text editor with its AI assistant, and the second is generating an API token inside the Sisense web interface. Everything else happens through conversation, from installing Node.js to creating the project, configuring credentials, generating the .ts representation of a Sisense data model, and building the widgets, dashboards, and other visualizations themselves. The starting point on the Sisense side is a modern Linux instance with at least one data model, either an ElastiCube or a live model, and permission to generate an API bearer token on it. Prerequisites A modern Linux Sisense instance with at least one data model Permission to generate an API bearer token on that instance A computer with the ability to install programs and CLI access Access to an LLM like Claude, or similar Getting Started An editor and an AI assistant have to be installed before anything can be done conversationally, so the first two steps are done manually. Download and install Visual Studio Code . Open the Extensions view in VS Code, search for the assistant of choice, install it, and sign in. For Claude Code, see the Claude Code documentation . Other agentic assistants with file editing and terminal access work the same way. One behavior is worth knowing about before the first prompt. Agentic assistants ask for approval before running each terminal command, so expect to click Yes regularly during setup, and read each command before approving it. The approval step exists so the developer always knows what is about to run on the machine, and it only provides that protection if the commands are actually read. Most assistants also offer an option to allow certain commands without asking again, which becomes convenient once a pattern has been reviewed a few times. Editing files inside the project folder is a sensible thing to approve universally. Commands that reach outside the project folder, or that install programs system wide, should be reviewed every time and not auto approved. How Granular to Be The sections below proceed step by step, with each prompt doing one focused thing. That structure is deliberate. It makes each step verifiable before the next is added, and it gives the reader a chance to learn what is happening at every stage. It is not a limitation of the LLM. In practice, an agentic assistant handles much larger requests comfortably. Given an empty folder and little else, a single prompt can carry the project most of the way. Set up a new ComposeSDK React application in this folder. Install Node if it is missing, create a React TypeScript Vite project, add the Sisense ComposeSDK packages, and start the dev server. My Sisense instance is at https://example.sisense.com and I will provide an API token in the file where it is needed, tell me where it is. The assistant works through the chain on its own, installing what is missing, flagging where the token goes, and reporting back when the dev server is running. Granular prompts tend to be the better choice while learning. Broad prompts work better once the process is familiar. Most real sessions mix both freely. If any errors are visible, pasting the error message into the LLM chat will often allow the LLM to resolve the issue. Checking the browser developer tools console for error messages to copy can also be helpful. Handing the Environment to the Assistant From this point forward, work happens in the assistant's chat panel. The first task is the development environment itself. To open the Claude VS Code UI, click the orange flower icon in the top right corner when a text file is open in VS Code. Open VS Code in a new empty folder that will hold the project (File, Open Folder, then create or select a directory. Name the folder appropriately, to match the name of the ComposeSDK (CSDK) application). Create an empty text file if the Claude VS Code icon (or the equivalent for the LLM in use) is hidden. Then open the LLM chat panel and ask the assistant to set up the toolchain. Install the latest LTS version of Node on this machine, make sure it is on the path, then verify that node and npm both work from the terminal. The assistant detects the operating system, picks an appropriate install method for that platform, runs it, and confirms the versions. If the path changed during installation, the assistant will usually mention that the terminal or VS Code may need a restart before the change takes effect. Node.js can also be installed manually for the relevant OS from the Node.js website download section , if the LLM struggles to install it via CLI. This first exchange establishes the pattern for everything that follows. State the goal, let the LLM assistant run the commands, confirm the result, move to the next step. Creating the Project With the toolchain verified, the next request creates the application. Create a new React TypeScript app in this folder using Vite, install the dependencies, and start the dev server so I can confirm the default page loads. The assistant plans and sets up the project, installs packages, and starts the Vite dev server, usually at http://localhost:5173 . Open that URL in a browser and confirm the default Vite page renders. Confirming each layer before adding the next is a habit worth keeping. If a later step fails, a verified baseline makes it obvious where the problem was introduced. Installing ComposeSDK ComposeSDK ships as npm packages, so adding it is one request. Add the Sisense ComposeSDK packages to this project: sdk-ui and sdk-data as dependencies, and the SDK CLI as a dev dependency. The three packages serve distinct purposes. @sisense/sdk-ui provides the React components, the charts, dashboards, and filter UI. @sisense/sdk-data provides the query construction layer, including dimensions, measures, and filter factories. @sisense/sdk-cli is a development tool used to generate the TypeScript data model files covered later in this article, and never ships with the application. Full ComposeSDK documentation is available on developer.sisense.com. Connecting to the Sisense Instance Two values connect and authenticate the CSDK application to Sisense, the instance URL and an API bearer token. Generate the token in the Sisense web interface, from the user profile menu under API Token ( Sisense documentation on generating API tokens ). Copy it once generated. The recommended approach keeps the token out of the LLM chat entirely, so the LLM never has access to it. The assistant builds the configuration with the token left blank. Create a .env file with VITE_SISENSE_URL set to https://example.sisense.com and VITE_SISENSE_TOKEN left blank. Add .env to .gitignore, deny your own read access to .env in your permission settings, wrap the app in SisenseContextProvider using those environment variables, and tell me where to paste my token. The assistant creates the .env file with the relevant keys, excludes it from both version control and its own file access, and points to where the token goes. Editing the URL and pasting the token into .env directly in the editor completes the setup. From that point the application can read the bearer token value but the assistant cannot. In Claude Code specifically, the mechanism for blocking its own access is a permission deny rule rather than an ignore file. The rule lives in .claude/settings.json at the project level, or in ~/.claude/settings.json to apply across all projects. { "permissions": { "deny": ["Read(./.env)", "Read(./.env.*)"] } } The /permissions command in Claude Code can also add this rule interactively, saving it to .claude/settings.local.json . Other assistants have their own equivalents, whether ignore files or access controls. Whichever tool is in use, it is worth verifying the block before pasting the real token. Put a dummy value in .env , ask the assistant to read the file, and confirm it refuses. Pasting the token straight into the chat and letting the assistant write the whole file also works, but is not recommended, since it means trusting the chat tool with a credential. Either way, keep .env out of version control and rotate the token if exposure is suspected. Clicking the refresh icon in the Profile bearer token page rotates the token. A token from a viewer role user is all that is required for CSDK, as long as that user has access to every dashboard and data source the application uses. Bearer tokens are also not the only option. ComposeSDK can authenticate with Web Access Tokens (WAT) and SSO as well, which are worth considering beyond initial development ( ComposeSDK authentication documentation ). The resulting setup looks approximately like this in main.tsx , the entry file Vite generates. Wrapping inside App.tsx works just as well, as long as the provider sits above every ComposeSDK component. import { createRoot } from 'react-dom/client'; import { SisenseContextProvider } from '@sisense/sdk-ui'; import App from './App.tsx'; // The provider supplies the connection to every ComposeSDK component below it. // Values come from .env so credentials stay out of source control. createRoot(document.getElementById('root')!).render( <SisenseContextProvider url={import.meta.env.VITE_SISENSE_URL} token={import.meta.env.VITE_SISENSE_TOKEN} > <App /> </SisenseContextProvider> ); Smoke Testing the Connection Before building further, it is worth confirming the application can reach and authenticate with the Sisense instance. There are two reasonable ways to do it. The fastest is DashboardById , which renders an existing Sisense dashboard and requires no data model work in the project. Open any dashboard in Sisense and copy its OID from the browser URL. Render the dashboard with OID 65a1b2c3d4e5f6a7b8c9d0e1 from my Sisense instance on the main page using DashboardById, replacing the default Vite content. The alternative is a minimal chart against a known data model, which previews the widget workflow used in the rest of this article. Either one confirms the same thing, that the URL and token work and the instance is reachable from the browser. A rendered dashboard means the connection is established. A blank or broken one usually traces back to one of these common causes. The token is invalid or belongs to a user without access to the dashboard or data source. Regenerate the token and confirm the user can open the dashboard in Sisense directly. The URL is incorrect, commonly a missing https:// or a trailing path. The value should be the bare instance origin. The browser blocks the request with a CORS error. ComposeSDK typically works without any CORS configuration, but if the console shows a CORS error, an administrator can add http://localhost:5173 to the allowed origins in the Sisense Admin section under Security Settings ( Sisense documentation on CORS configuration ). Browser console errors generally identify which of these applies, and the error output can be pasted straight into the chat for diagnosis. Generating the TypeScript Data Model ComposeSDK includes a built in tool for this step. The SDK CLI installed earlier generates a .ts file that describes the data model, listing its tables, dimensions, and measures as typed TypeScript objects, so widget code references real fields with autocomplete rather than hand typed strings. It works the same way whether the model is an ElastiCube or a live model. Being specific in the prompt matters here. Naming the goal, a .ts file generated by the SDK's own CLI, steers the assistant toward the right tool, there otherwise being the possibility it would try to create or hallucinate its own representation. Use the ComposeSDK CLI (the get-data-model command from @sisense/sdk-cli) to generate a .ts file describing my data model named Sample ECommerce, and save it to src/models. Use the token in .env. Under the hood this runs a command of the following form. # Generates a .ts file describing the data model's tables, dimensions, and measures. # The token and URL are the same values used by the app itself. npx @sisense/sdk-cli get-data-model \ --url https://example.sisense.com \ --token <token> \ --dataSource "Sample ECommerce" \ --output src/models/sample-ecommerce.ts The generated .ts file exports a typed object, conventionally imported as DM , containing every table, dimension, and measure in the model. Everything built from this point on references fields through that object, which means typos become compile errors instead of silently empty charts. Building the First Widget With the .ts model file in place, building the first real chart is a single request. Using the generated Sample ECommerce data model in src/models, add a column chart below the dashboard showing total Revenue by Condition. The assistant writes a component along these lines. import { Chart } from '@sisense/sdk-ui'; import { measureFactory } from '@sisense/sdk-data'; import * as DM from './models/sample-ecommerce'; // A minimal ComposeSDK chart: one category dimension, one aggregated measure. <Chart dataSet={DM.DataSource} chartType="column" dataOptions={{ category: [DM.Commerce.Condition], value: [measureFactory.sum(DM.Commerce.Revenue, 'Total Revenue')], }} /> Once it renders, iteration can be done through continued conversation or manual code editing. The Vite application will auto update with any changes, without requiring manual refreshes. Change it to a bar chart, break it down by Gender, and only include 2024 data. The assistant adds the breakBy entry to the data options and a date filter to the chart, and the result appears on the next hot reload. Describe a change, see it render, refine. That loop is the core of the workflow, and it is the same whether the change is a chart type, a filter, or a layout adjustment. Styling and Structuring the Application The same conversational approach turns the result from a test page into something that looks like an application. Add a professional looking header and footer to the application, including the title [app title], and lay out the dashboard and the chart in cards. What this prompt actually says will vary by user and project. The card layout here is just one option, and the assistant follows whatever visual direction it is given, from minimal to fully branded. One distinction is worth knowing. Application CSS and widget theming are separate layers. Page layout, headers, and footers are ordinary React and CSS. The appearance of the ComposeSDK widgets themselves, including chart colors, fonts, and backgrounds, is controlled through the SDK's ThemeProvider component ( ComposeSDK theming documentation ). Asking for "a dark theme on the charts" versus "a dark background on the page" will, correctly, touch different code. Working with Live Data The ComposeSDK application itself does not typically contain or store data, though exceptions exist, a point that is often misunderstood. Every widget sends a JAQL query to the Sisense instance at render time, so the CSDK application always reflects the current state of the data model. For an ElastiCube that means fresh data appears after each build, and for a live model queries hit the source directly. In neither case does updated data require rebuilding or redeploying the application. The generated .ts model file only needs regeneration when the schema changes, such as new fields, renamed columns, or restructured tables. Data refreshes do not affect it. When the schema does change, regeneration is one request. My data model schema changed. Use the ComposeSDK CLI to regenerate the .ts model file and tell me if any existing widget code references fields that no longer exist. Because the model file is typed, removed fields surface as compile errors, and the assistant can identify and fix the affected components in the same exchange. Prompt Library The prompts below are starting points, not strings that need to be copied exactly. Everything in this article was done conversationally, and describing the goal in natural language as it comes to mind is usually faster than locating a prompt to paste. What makes these prompts work is their specificity, with actual field names, file locations, and a clear definition of when the task is finished. Those qualities carry over to any phrasing, including a single broad prompt that covers several steps at once. Setup and environment: Install the latest LTS version of Node, make sure it is on the path, and verify node and npm from the terminal. Create a React TypeScript Vite app here, install dependencies, and start the dev server. Set up a complete ComposeSDK React app in this folder: install anything missing, create the project, add the SDK packages, and get the dev server running. ComposeSDK installation and connection: Add the ComposeSDK packages: sdk-ui and sdk-data as dependencies and the SDK CLI as a dev dependency. Create a .env with my Sisense URL and a blank token, add it to .gitignore, deny your own read access to it, wire up SisenseContextProvider from those variables, and tell me where to paste my token. The dashboard component shows a network error. Here is the browser console output: [paste]. Diagnose whether this is CORS, the token, the URL, or something else. Data and widgets: Use the ComposeSDK CLI to generate a .ts file for the data model named [name] into src/models. Render the dashboard with OID [oid] using DashboardById. Add a line chart of [measure] by [date dimension] at month granularity, with a member filter on [dimension] limited to [values]. Add breakBy on [dimension] to the existing column chart and move the legend to the bottom. Advanced: Use useExecuteQuery to fetch [measure] grouped by [dimension] and render the result in a plain HTML table instead of an SDK chart component. Use onBeforeRender on the line chart to set the line width to 3 and enable data labels through the underlying Highcharts options. The advanced prompts reference real ComposeSDK extension points. useExecuteQuery runs a query directly and returns rows for custom rendering, and onBeforeRender exposes the underlying Highcharts options object before a chart draws, allowing customization beyond the SDK's own props ( useExecuteQuery reference , chart customization reference ). Useful Links ComposeSDK documentation ComposeSDK quickstart for React Claude Code documentation Sisense REST API and authentication documentation The techniques in this article generalize. Any capability in the ComposeSDK documentation, from dashboard filters to custom widget types, is reachable the same way. Describe it to the assistant with enough specificity, confirm the result in the browser, and refine conversationally.

      Jeremy Friedel
      Jeremy FriedelPosted 1 month ago • Last reply 3 weeks ago
      3
               
    • Blog banner
      • News & UpdatesChevronRightIcon

      Enhancing web security: A deep dive into single sign-on (SSO) and web access tokens (WAT)

                                               

      Single Sign-On (SSO) and Web Access Tokens (WAT) are two pivotal technologies in the domain of web security and user authentication. SSO simplifies the user experience by enabling access to multiple applications with a single set of login credentials, thereby enhancing both convenience and security. Conversely, WAT plays a crucial role in secure access management by granting temporary tokens that verify user identity and permissions across web applications. Both SSO and WAT are integral to creating a secure and seamless digital environment, each addressing unique facets of user authentication and access control. In the following sections, we will explore the mechanisms, benefits, and implementations of SSO and WAT. Understanding Single Sign-On (SSO) Single Sign-On (SSO) is a centralized authentication process that allows users to log in once and gain access to multiple applications without being prompted to log in again for each one. This technology is particularly beneficial in environments where users need to switch between different systems frequently. By reducing the number of login prompts, SSO not only enhances user convenience but also minimizes the risk of password fatigue and the associated security risks, such as password reuse or weak passwords. Moreover, SSO streamlines the management of user credentials, making it easier for administrators to enforce security policies and track access patterns. How SSO Works Single Sign-On (SSO) operates by establishing a trusted relationship between an identity provider (IdP) and multiple service providers (SPs). The IdP is responsible for authenticating the user's credentials, while the SPs are the various applications or services the user needs to access. This trusted relationship allows the user to authenticate once and gain access to multiple applications seamlessly. Step-by-Step Process: Initial Authentication: When a user attempts to access an application (SP), they are redirected to the identity provider (IdP) if they are not already authenticated. The IdP presents a login page where the user enters their credentials (e.g., username and password). Credential Verification: The IdP verifies the user's credentials. If the credentials are correct, the IdP generates an authentication token or ticket. This token contains information about the user and is securely signed to prevent tampering. Token Exchange: The authentication token is sent back to the user's browser, which then forwards it to the original application (SP) the user tried to access. The application verifies the token's validity by checking the IdP's signature. Access Granted: Once the token is verified, the user is granted access to the application without needing to enter their credentials again. The token can be used for subsequent requests to other SPs, enabling seamless access to multiple applications. Single Logout: SSO systems often include a single logout feature, where logging out from the IdP also logs the user out from all connected applications. This ensures that the user's session is securely terminated across all services. Underlying Technologies: SSO relies on several protocols and technologies to function effectively. Some common protocols include: SAML (Security Assertion Markup Language): A widely used standard for exchanging authentication and authorization data between an IdP and SPs. SAML uses XML-based messages to communicate assertions about user authentication and access rights. OAuth: An open standard for token-based authentication and authorization, commonly used for granting third-party applications limited access to user resources without exposing passwords. OpenID Connect: An authentication layer built on top of OAuth 2.0, allowing clients to verify the identity of users based on the authentication performed by an IdP and to obtain basic profile information. These protocols ensure secure and efficient communication between the IdP and SPs, enabling the seamless and secure exchange of authentication tokens. Security Measures: SSO systems implement several security measures to protect user credentials and authentication tokens: Encryption: Authentication tokens are encrypted to protect sensitive information during transmission. Digital Signatures: Tokens are digitally signed to prevent tampering and ensure their integrity. Multi-Factor Authentication (MFA): SSO can integrate MFA to add an extra layer of security, requiring users to provide additional verification (e.g., a code sent to their phone) beyond just a password. Session Management: SSO systems manage user sessions effectively, ensuring that tokens are valid only for a specific period and are renewed or revoked as needed. By combining these security measures and protocols, SSO systems provide a robust framework for managing user authentication across multiple applications, enhancing both security and user convenience. Pros and Cons of SSO Pros Cons Improved User Experience: Users only need to log in once to access multiple applications, reducing login fatigue. Simplifies the user experience by eliminating the need to remember multiple passwords. Enhanced Security: Centralized authentication allows for the implementation of stronger password policies. Easier to enforce multi-factor authentication (MFA) across all connected applications. Streamlined Administration: Simplifies user account management and access control. Easier to monitor and audit user access and behavior. Facilitates quick revocation of access when needed. Cost Efficiency: Reduces IT support costs related to password resets and account recovery. Saves time for users and administrators, improving overall productivity. Consistent User Policies: Ensures uniform security and access policies across multiple applications. Enhances compliance with regulatory requirements.   Single Point of Failure: If the SSO provider experiences downtime, users lose access to all connected applications. A compromised SSO account can potentially expose multiple applications to security risks. Complex Integration: Integrating SSO with existing applications can be technically challenging. Requires significant initial setup and configuration effort. Dependency on Third-Party Providers: Relying on external SSO providers can introduce risks related to service availability and data privacy. Potential for vendor lock-in if the SSO provider's technology becomes deeply integrated. Security Risks: Centralized authentication can make SSO systems attractive targets for attackers. Requires robust security measures to protect the SSO system itself. Scalability Issues: As the number of applications and users grows, the SSO system may face performance challenges. Ensuring consistent performance and availability can be complex. Useful Materials: Sisense SSO Documentation Sisense Composed SDK Authentication & Security Documentation Exploring Web Access Tokens (WAT) Web Access Tokens (WAT) are digital credentials used to authenticate and authorize users across web applications. Unlike traditional session management mechanisms, WATs provide a more scalable and secure method of handling user sessions. Typically, these tokens are used in stateless authentication systems, where the server does not maintain any session information. Instead, all necessary user information is encoded within the token itself, which the client includes in each request to access protected resources. How Web Access Tokens (WAT) Work Web Access Tokens (WAT), commonly implemented as JSON Web Tokens (JWT), are digital credentials used to authenticate and authorize users across web applications. Unlike traditional session-based authentication, WATs provide a stateless mechanism, meaning the server does not need to maintain session information. Instead, all necessary user information is encoded within the token itself, which the client includes in each request to access protected resources. Step-by-Step Process: User Authentication: When a user logs in to an application, they provide their credentials (e.g., username and password). The application sends these credentials to an authentication server for verification. Token Generation: Upon successful authentication, the authentication server generates a token, typically a JWT. This token contains encoded information about the user, such as their user ID, roles, and permissions. The token is digitally signed using a secret key or public/private key pair to ensure its integrity and authenticity. Token Storage: The generated token is sent back to the client (e.g., the user's browser or mobile app), where it is stored securely, often in local storage or a secure cookie. It's crucial to handle the token securely to prevent unauthorized access, such as through cross-site scripting (XSS) attacks. Token Usage: For subsequent requests to access protected resources, the client includes the token in the request header, typically in the Authorization header as a Bearer token. For example, the header might look like this: Authorization: Bearer <token>. Token Verification: When the server receives a request with a token, it verifies the token's signature to ensure it hasn't been tampered with. The server also checks the token's validity, including its expiration time and any other claims it contains. If the token is valid, the server processes the request and grants access to the requested resource. Token Expiration and Renewal: Tokens are usually issued with an expiration time to limit their validity period. Once a token expires, the user must re-authenticate to obtain a new token. Some systems use refresh tokens, which are long-lived tokens that can be used to obtain new access tokens without requiring the user to log in again. Security Measures: To ensure the security of WATs, several best practices are implemented: Encryption: Sensitive information within the token can be encrypted to protect user data. Signature Verification: Tokens are signed to ensure their integrity and authenticity. The server uses the same secret key (or public key in asymmetric encryption) to verify the token's signature. Secure Storage: Tokens should be stored securely on the client side, avoiding exposure to client-side scripts to prevent XSS attacks. Token Expiration: Tokens have an expiration time to limit the window of opportunity for misuse. Short-lived access tokens and long-lived refresh tokens balance security and user convenience. Scope and Audience Restrictions: Tokens can include claims that restrict their usage to specific scopes and audiences, enhancing security by ensuring tokens are used only as intended. By following these practices, WATs provide a scalable and secure method of managing user authentication and authorization across web applications, improving both performance and user experience. Pros and Cons of WAT Pros Cons Enhanced Security: Tokens are typically signed and can be encrypted, protecting against tampering and unauthorized access. Reduces the risk of session hijacking compared to traditional session management. Scalability: The stateless nature of tokens reduces server load and improves scalability. Servers do not need to maintain a session state, allowing for better performance under high load. Flexibility: Tokens can be used across different platforms, including mobile and single-page applications. Provides a consistent authentication mechanism for diverse environments. Fine-Grained Access Control: Tokens can contain detailed information about user permissions, enabling fine-grained access control and authorization. Allows for dynamic and context-sensitive access management. Decentralized Verification: Authentication and authorization can be performed without a centralized session store, enhancing reliability. Can easily integrate with microservices and distributed systems.   Token Management Challenges: Ensuring secure storage and handling of tokens on the client side is crucial to prevent token theft and misuse. Tokens stored in browser storage can be vulnerable to cross-site scripting (XSS) attacks. Expiration and Renewal: Tokens need to be regularly renewed to maintain security, adding complexity to session management. Handling token expiration and refresh workflows can be complex. Implementation Complexity: Implementing a token-based authentication system requires in-depth knowledge of security practices and protocols. Requires careful planning to ensure security and efficiency. Compatibility Issues: Ensuring that all applications and services can correctly handle and validate tokens can be challenging. Integration with legacy systems may require significant modifications. Performance Overhead: Token verification, especially with cryptographic signatures, adds computational overhead. It can impact performance if not managed properly, especially in high-load environments. Useful Materials: Sisense WAT Documentation Sisense Composed SDK Authentication & Security Documentation Integrating SSO and WAT Combining SSO and WAT can provide a comprehensive authentication and authorization solution. SSO can handle the initial authentication process, while WATs can manage user sessions and permissions across different applications. This integration allows organizations to leverage the strengths of both technologies, providing a seamless and secure user experience. In the next sections, we will explore real-world examples, best practices, and implementation strategies for integrating SSO and WAT in web applications. About Paldi Solutions is a trusted Sisense Gold Partner, specializing in advanced plugins, customized solutions, reporting automation, and embedded analytics enhancements. As a leading Sisense partner, we serve over 160 Sisense clients with enterprise-ready solutions designed for reliability and seamless performance. Our OEM-friendly plugins integrate effortlessly, ensuring scalability and long-term stability. With deep technical expertise and a commitment to innovation, we empower businesses to maximize their BI potential with powerful, user-friendly tools. Discover how Paldi Solutions can elevate your Sisense experience at  www.paldi.solutions  

      Benjamin Nissim
      Benjamin NissimPosted 1 year ago
      0