{"componentChunkName":"component---src-templates-blog-list-template-js","path":"/67","result":{"data":{"allMarkdownRemark":{"edges":[{"node":{"excerpt":"In modern websites that serve different kinds of users, there is a need to create a distinction between users to determine what kind of…","fields":{"slug":"/engineering/guest-post/role-based-user-authentication-with-loginradius-and-reactjs/"},"html":"<p>In modern websites that serve different kinds of users, there is a need to create a distinction between users to determine what kind of privileges are assigned to them. You can achieve this with authentication. Through authentication, we validate user-specific credentials to determine if the user is genuine and then assign a specific role, which could be a simple client or administrator access, for example.</p>\n<p>React user authentication is usually carried out by using a trusted third-party customer identity and access management (CIAM) software. This tutorial uses LoginRadius API to carry out user authentication with React application. </p>\n<h2 id=\"prerequisites\" style=\"position:relative;\"><a href=\"#prerequisites\" aria-label=\"prerequisites permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Prerequisites</h2>\n<p>You should know React to be able to follow this tutorial. Also, you should have the node package manager or yarn installed on your PC.</p>\n<h2 id=\"overview\" style=\"position:relative;\"><a href=\"#overview\" aria-label=\"overview permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Overview</h2>\n<p>First, you need to install the <a href=\"https://www.npmjs.com/package/loginradius-react\">LoginRadius React SDK</a>. You can then configure it to provide authentication and role assignment for use within your React application.</p>\n<h2 id=\"introduction\" style=\"position:relative;\"><a href=\"#introduction\" aria-label=\"introduction permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Introduction</h2>\n<h3 id=\"what-is-loginradius\" style=\"position:relative;\"><a href=\"#what-is-loginradius\" aria-label=\"what is loginradius permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is LoginRadius?</h3>\n<blockquote>\n<p><a href=\"https://www.loginradius.com/docs/api/v2/getting-started/introduction/\">LoginRadius</a> is a SaaS-based customer identity and access management (CIAM) system with features to manage customer identity, privacy, and access. It is a simple, implementable solution for adding user authentication and authorization to your website.</p>\n</blockquote>\n<p>LoginRadius has features to add different <a href=\"https://www.loginradius.com/platforms/authentication-and-registration\">login authentication options</a>, including email, phone, and social network logins, such as Google and Facebook. It also provides security on these data. Some security features it offers include:</p>\n<ul>\n<li><strong>Accessing the Admin Console:</strong> Generally, this is where we can control authentication factors regarding our apps.</li>\n<li><strong>Using API Secret:</strong> A unique generated key to access our API.</li>\n<li><strong><a href=\"https://www.loginradius.com/platforms/multi-factor-authentication\">Multi-Factor Authentication</a>:</strong> This features covers two-factor authentication.</li>\n<li><strong>SSL Verification</strong></li>\n</ul>\n<p>LoginRadius comes with different SDKs, including reactjs authentication, to support different frameworks. One of them is the <a href=\"https://github.com/LoginRadius/loginradius-react\">LoginRadius ReactJS SDK</a>, which allows you to add authentication within your React app.</p>\n<h2 id=\"getting-started\" style=\"position:relative;\"><a href=\"#getting-started\" aria-label=\"getting started permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Getting Started</h2>\n<h3 id=\"creating-a-loginradius-account\" style=\"position:relative;\"><a href=\"#creating-a-loginradius-account\" aria-label=\"creating a loginradius account permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Creating a LoginRadius Account</h3>\n<p>First, you need to <a href=\"https://accounts.loginradius.com/auth.aspx\">create a LoginRadius account</a> with a Developer Pro plan selected instead of the free plan. This is to be able to access role management features, which are only available in the Developer Pro plan. </p>\n<p>You'll get a page requesting you to create a new application. Click on \"create a new application\". After which, a page comes up where you should enter the name of your app and the URL to your app. Here, Input any name and URL of your choice.</p>\n<p><img src=\"https://paper-attachments.dropbox.com/s_14B4BD8EDBFA59296DCDB812AB5C6EF8CE164AAF0A2268A9E90E57893E23504E_1627245515754_Screenshot+97.png\" alt=\"Naming App\"></p>\n<h3 id=\"auth-page-idx\" style=\"position:relative;\"><a href=\"#auth-page-idx\" aria-label=\"auth page idx permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Auth Page (IDX)</h3>\n<p>LoginRadius allows you to create a custom login page (an auth page that you can customize from the dashboard), which you can then preview. This is a page provided by LoginRadius that you can easily customize to contain different form contents. Features like user log in, signup, email, and password have been pre-implemented on this page. You'll be using this page for registration and authentication with react application. To learn more on how to customize this page to contain more form contents, refer to <a href=\"https://www.loginradius.com/developers/\">customizing Auth Page.</a></p>\n<p><img src=\"https://paper-attachments.dropbox.com/s_14B4BD8EDBFA59296DCDB812AB5C6EF8CE164AAF0A2268A9E90E57893E23504E_1627245718848_Screenshot+100.png\" alt=\"A preview of my Auth page\"></p>\n<p>To be able to use user roles within your app, you first have to set up these roles and their respective privileges from the dashboard. In this tutorial, you'll set up two roles, namely Admin and Client. </p>\n<p>To set up roles, navigate to your dashboard, click on \"user management\". </p>\n<p>Click on \"manage roles\" and click on \"add roles\". A popup opens in which you add the role name. And in the permission tab, add what permissions that role should have. </p>\n<p>This tutorial has added a \"client\" role with a permission called \"view\" and an \"admin\" role with permissions: \"view, edit, delete\". Enable \"set as default\" for the client role to automatically assign the client role to any user in our app by default.</p>\n<p><img src=\"https://paper-attachments.dropbox.com/s_14B4BD8EDBFA59296DCDB812AB5C6EF8CE164AAF0A2268A9E90E57893E23504E_1627245829693_Screenshot+101.png\" alt=\"Role Creation\"></p>\n<h2 id=\"integrate-loginradius-into-react\" style=\"position:relative;\"><a href=\"#integrate-loginradius-into-react\" aria-label=\"integrate loginradius into react permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Integrate LoginRadius into React</h2>\n<h3 id=\"creating-a-react-application\" style=\"position:relative;\"><a href=\"#creating-a-react-application\" aria-label=\"creating a react application permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Creating a React Application</h3>\n<p>To build your application, you'll be using the command-line interface (CLI) with <code>create-react-app</code></p>\n<p>For node users:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"powershell\" data-index=\"0\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">npx create-react-app {project name}</span></span></code></pre>\n<p>Alternatively, if you're using yarn, write:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"powershell\" data-index=\"1\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">yarn add create-react-app {project name}</span></span></code></pre>\n<p>Next, <code>cd</code> into the directory with the command below:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"powershell\" data-index=\"2\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">cd {project name}</span></span></code></pre>\n<h3 id=\"configuring-loginradius-for-react\" style=\"position:relative;\"><a href=\"#configuring-loginradius-for-react\" aria-label=\"configuring loginradius for react permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Configuring LoginRadius for React</h3>\n<p>Next, you'll install the LoginRadius React dependency using the CLI:</p>\n<p>For node users:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"powershell\" data-index=\"3\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">npm install loginradius-react</span></span></code></pre>\n<p>yarn:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"powershell\" data-index=\"4\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">yarn add loginradius-react</span></span></code></pre>\n<p>To use the react-router components, you need to install <code>react-router-dom</code> using CLI. Run the following code to achieve this:</p>\n<p>For node:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"powershell\" data-index=\"5\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">npm install react-router-dom</span></span></code></pre>\n<p>yarn:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"powershell\" data-index=\"6\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">yarn add react-router-dom</span></span></code></pre>\n<p>Setup a <code>.env</code> file in the root directory with the following details:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"powershell\" data-index=\"7\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">REACT_APP_LR_APP_NAME={app name}</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">REACT_APP_API_KEY={your app key}</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">REACT_APP_SECRET={your secret key}</span></span></code></pre>\n<p>You can find the keys required above in your dashboard within react user authentication configuration: API key and secret. </p>\n<h2 id=\"building-login-components\" style=\"position:relative;\"><a href=\"#building-login-components\" aria-label=\"building login components permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Building Login Components</h2>\n<p>The Auth Page(IDX) is a web page created for you that reflects the configurations you create in our dashboard. You'll utilize this page as the login and signup page within your app and set up routes to route users to a different page based on their roles.</p>\n<p>Go to the <code>index.js</code> file and add:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"javascript\" data-index=\"8\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> </span><span class=\"mtk12\">React</span><span class=\"mtk1\"> </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;react&quot;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> </span><span class=\"mtk12\">ReactDOM</span><span class=\"mtk1\"> </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;react-dom&quot;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> </span><span class=\"mtk12\">App</span><span class=\"mtk1\"> </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;./App&quot;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> { </span><span class=\"mtk12\">LRAuthProvider</span><span class=\"mtk1\"> } </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;loginradius-react&quot;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">ReactDOM</span><span class=\"mtk1\">.</span><span class=\"mtk11\">render</span><span class=\"mtk1\">(</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">React.StrictMode</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">LRAuthProvider</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">appName</span><span class=\"mtk1\">=</span><span class=\"mtk4\">{</span><span class=\"mtk12\">process</span><span class=\"mtk1\">.</span><span class=\"mtk12\">env</span><span class=\"mtk1\">.</span><span class=\"mtk12\">REACT_APP_LR_APP_NAME</span><span class=\"mtk1\"> || </span><span class=\"mtk8\">&quot;&quot;</span><span class=\"mtk4\">}</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">apiKey</span><span class=\"mtk1\">=</span><span class=\"mtk4\">{</span><span class=\"mtk12\">process</span><span class=\"mtk1\">.</span><span class=\"mtk12\">env</span><span class=\"mtk1\">.</span><span class=\"mtk12\">REACT_APP_API_KEY</span><span class=\"mtk1\"> || </span><span class=\"mtk8\">&quot;&quot;</span><span class=\"mtk4\">}</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">redirectUri</span><span class=\"mtk1\">=</span><span class=\"mtk4\">{</span><span class=\"mtk12\">window</span><span class=\"mtk1\">.</span><span class=\"mtk12\">location</span><span class=\"mtk1\">.</span><span class=\"mtk12\">origin</span><span class=\"mtk4\">}</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">App</span><span class=\"mtk1\"> </span><span class=\"mtk17\">/&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk10\">LRAuthProvider</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;/</span><span class=\"mtk10\">React.StrictMode</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">document</span><span class=\"mtk1\">.</span><span class=\"mtk11\">getElementById</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&quot;root&quot;</span><span class=\"mtk1\">)</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">);</span></span></code></pre>\n<p>In the above code, you made imports for required modules, set up your <code>LRAuthProvider</code> component with parameters <code>appname</code> and <code>apikeys</code> from your <code>.env</code> file, and also created your redirect URI. In this case, it is equal to your current <code>window.location.origin</code>, which is the URL of the webpage -- in this case, it is our localhost.</p>\n<p>Localhosts are whitelisted by default. If you're building your app using a hosted site, you have to whitelist the URL in your dashboard. The entry component in the code is set to the <code>App</code> component.</p>\n<p>In the <code>App.js</code> component, add the following code:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"javascript\" data-index=\"9\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> </span><span class=\"mtk12\">React</span><span class=\"mtk1\"> </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&#39;react&#39;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&#39;./App.css&#39;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">BrowserRouter</span><span class=\"mtk1\"> </span><span class=\"mtk15\">as</span><span class=\"mtk1\"> </span><span class=\"mtk12\">Router</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">Switch</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">Route</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">} </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;react-router-dom&quot;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> </span><span class=\"mtk12\">Auth</span><span class=\"mtk1\"> </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;./Landing&quot;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> </span><span class=\"mtk12\">CallAPI</span><span class=\"mtk1\"> </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&#39;./Return&#39;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">function</span><span class=\"mtk1\"> </span><span class=\"mtk11\">App</span><span class=\"mtk1\">() {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">return</span><span class=\"mtk1\"> (</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\"> </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">Router</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">className</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;App&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">Switch</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">Route</span><span class=\"mtk1\"> </span><span class=\"mtk12\">exact</span><span class=\"mtk1\"> </span><span class=\"mtk12\">path</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;/&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span><span class=\"mtk4\">{</span><span class=\"mtk8\">&quot;Application home&quot;</span><span class=\"mtk4\">}</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">Auth</span><span class=\"mtk1\"> </span><span class=\"mtk17\">/&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk10\">Route</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">Route</span><span class=\"mtk1\"> </span><span class=\"mtk12\">path</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;/login&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">CallAPI</span><span class=\"mtk1\"> </span><span class=\"mtk17\">/&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk10\">Route</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk10\">Switch</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk10\">Router</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">}</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">export</span><span class=\"mtk1\"> </span><span class=\"mtk15\">default</span><span class=\"mtk1\"> </span><span class=\"mtk12\">App</span><span class=\"mtk1\">;</span></span></code></pre>\n<p>Here, you've set up your routes using <code>Browser routes</code>, <code>Switch</code>, and <code>Route</code> components imported from the <code>react-router-dom</code> module. The path to your home page is blank (\"/\"). It displays the text Application home.  It runs an <code>Auth</code> component that was earlier imported. A second route is made for a second page with a path of \"/login\" that runs the <code>CallAPI</code> component on the new page.</p>\n<p>You'll then create a page that will serve as the landing page for your site. To do this, create a <code>Landing.js</code> file in your <code>src</code> folder and input the following code:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"javascript\" data-index=\"10\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> { </span><span class=\"mtk12\">useLRAuth</span><span class=\"mtk1\"> } </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;loginradius-react&quot;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk11\">Auth</span><span class=\"mtk1\"> = () </span><span class=\"mtk4\">=&gt;</span><span class=\"mtk1\"> {</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> {</span><span class=\"mtk12\">isAuthenticated</span><span class=\"mtk1\">,</span><span class=\"mtk12\">loginWithRedirect</span><span class=\"mtk1\">,</span><span class=\"mtk12\">logout</span><span class=\"mtk1\"> } =  </span><span class=\"mtk11\">useLRAuth</span><span class=\"mtk1\">();</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk15\">if</span><span class=\"mtk1\"> (</span><span class=\"mtk12\">isAuthenticated</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk15\">return</span><span class=\"mtk1\"> (</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">button</span><span class=\"mtk1\"> </span><span class=\"mtk12\">onClick</span><span class=\"mtk1\">=</span><span class=\"mtk4\">{</span><span class=\"mtk1\">() </span><span class=\"mtk4\">=&gt;</span><span class=\"mtk1\"> </span><span class=\"mtk11\">logout</span><span class=\"mtk1\">()</span><span class=\"mtk4\">}</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          Log out</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">button</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    );</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  } </span><span class=\"mtk15\">else</span><span class=\"mtk1\"> {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk15\">return</span><span class=\"mtk1\"> </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">button</span><span class=\"mtk1\"> </span><span class=\"mtk12\">onClick</span><span class=\"mtk1\">=</span><span class=\"mtk4\">{</span><span class=\"mtk1\">() </span><span class=\"mtk4\">=&gt;</span><span class=\"mtk1\"> </span><span class=\"mtk11\">loginWithRedirect</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&quot;/login&quot;</span><span class=\"mtk1\">)</span><span class=\"mtk4\">}</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Login/Register</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">button</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  }</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">}; </span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">export</span><span class=\"mtk1\"> </span><span class=\"mtk15\">default</span><span class=\"mtk1\"> </span><span class=\"mtk12\">Auth</span><span class=\"mtk1\">;</span></span></code></pre>\n<p>In the code written above, you've used <code>loginWithRedirect</code>, <code>loginWithPopup</code>, and <code>logout</code> authentication methods from the <code>useLRAuth</code> hook in your components to set up the authentication flow within your React application. You can also get access to the authentication state using <code>isAuthenticated</code>. The <code>isAuthenticated</code> method is used to check if the user is already logged into the app; it true, it returns true and displays a <code>log out</code> button that is connected to a logout function. Else, it returns false and displays a <code>Login/Register</code> button, which when clicked is set up to redirect to the path <code>/login</code>. The <code>loginWithRedirect()</code> and <code>logout()</code> methods use the Auth Page (IDX), where registration and login functionality is already implemented to perform these tasks.</p>\n<p>You can style the button to make it easier to see by adding the following code within your <code>App.css</code> file:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"css\" data-index=\"11\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">//for our login </span><span class=\"mtk6\">button</span><span class=\"mtk1\"> on our landing page </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk6\">button</span><span class=\"mtk1\">{</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">background-color</span><span class=\"mtk1\">: </span><span class=\"mtk8\">#2d56da</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">color</span><span class=\"mtk1\">: </span><span class=\"mtk8\">#fff</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">padding</span><span class=\"mtk1\">: </span><span class=\"mtk7\">20px</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">border-radius</span><span class=\"mtk1\">: </span><span class=\"mtk7\">8px</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">}</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">//for the </span><span class=\"mtk6\">output</span><span class=\"mtk1\"> in our login route which we will cover later</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk6\">span</span><span class=\"mtk1\">{</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">font-size</span><span class=\"mtk1\">: </span><span class=\"mtk7\">24px</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">height</span><span class=\"mtk1\">: </span><span class=\"mtk7\">80vh</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">width</span><span class=\"mtk1\">: </span><span class=\"mtk7\">100%</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">display</span><span class=\"mtk1\">: </span><span class=\"mtk8\">flex</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">justify-content</span><span class=\"mtk1\">: </span><span class=\"mtk8\">center</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">align-items</span><span class=\"mtk1\">: </span><span class=\"mtk8\">center</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">text-align</span><span class=\"mtk1\">: </span><span class=\"mtk8\">center</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">}</span></span></code></pre>\n<h2 id=\"using-the-loginradius-api\" style=\"position:relative;\"><a href=\"#using-the-loginradius-api\" aria-label=\"using the loginradius api permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Using the LoginRadius API</h2>\n<p>As an additional feature, you can use the LoginRadius React SDK to access the API to get parameters that are assigned upon logging in using the login form. You can use this method to check if a user is a client or administrator. Whenever a user creates an account using the form, the user is assigned a unique user-id called <code>Uid</code>, which you can view in your dashboard under \"manage users\". You can reference this user-id to determine your users’ roles. To do this, you need to fetch and return the <code>Uid</code> of the current user. The fetch request for the user role requires the <code>Uid</code> and your <code>app secret key</code> as parameters within the URL.</p>\n<p>In your <code>src</code> folder, create a file name <code>return.js</code>, and populate it with the following code:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"javascript\" data-index=\"12\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> </span><span class=\"mtk12\">React</span><span class=\"mtk1\">, { </span><span class=\"mtk12\">useEffect</span><span class=\"mtk1\">, </span><span class=\"mtk12\">useState</span><span class=\"mtk1\"> } </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;react&quot;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> { </span><span class=\"mtk12\">useLRAuth</span><span class=\"mtk1\">, </span><span class=\"mtk12\">withAuthenticationRequired</span><span class=\"mtk1\"> } </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;loginradius-react&quot;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk11\">CallAPI</span><span class=\"mtk1\"> = () </span><span class=\"mtk4\">=&gt;</span><span class=\"mtk1\"> {</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk4\">const</span><span class=\"mtk1\"> [</span><span class=\"mtk12\">resp</span><span class=\"mtk1\">, </span><span class=\"mtk12\">setResp</span><span class=\"mtk1\">] = </span><span class=\"mtk11\">useState</span><span class=\"mtk1\">(</span><span class=\"mtk4\">null</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk4\">const</span><span class=\"mtk1\"> { </span><span class=\"mtk12\">user</span><span class=\"mtk1\"> } = </span><span class=\"mtk11\">useLRAuth</span><span class=\"mtk1\">();</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">uid</span><span class=\"mtk1\"> = </span><span class=\"mtk12\">user</span><span class=\"mtk1\">[</span><span class=\"mtk8\">&quot;Uid&quot;</span><span class=\"mtk1\">];</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk11\">useEffect</span><span class=\"mtk1\">(() </span><span class=\"mtk4\">=&gt;</span><span class=\"mtk1\"> {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    (</span><span class=\"mtk4\">async</span><span class=\"mtk1\"> () </span><span class=\"mtk4\">=&gt;</span><span class=\"mtk1\"> {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk15\">try</span><span class=\"mtk1\"> {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">response</span><span class=\"mtk1\"> = </span><span class=\"mtk15\">await</span><span class=\"mtk1\"> </span><span class=\"mtk11\">fetch</span><span class=\"mtk1\">(</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          </span><span class=\"mtk8\">`https://api.loginradius.com/identity/v2/manage/account/</span><span class=\"mtk4\">${</span><span class=\"mtk12\">uid</span><span class=\"mtk4\">}</span><span class=\"mtk8\">/role?apiKey=</span><span class=\"mtk4\">${</span><span class=\"mtk12\">process</span><span class=\"mtk1\">.</span><span class=\"mtk12\">env</span><span class=\"mtk1\">.</span><span class=\"mtk12\">REACT_APP_API_KEY</span><span class=\"mtk4\">}</span><span class=\"mtk8\">&apiSecret=</span><span class=\"mtk4\">${</span><span class=\"mtk12\">process</span><span class=\"mtk1\">.</span><span class=\"mtk12\">env</span><span class=\"mtk1\">.</span><span class=\"mtk12\">REACT_APP_SECRET</span><span class=\"mtk4\">}</span><span class=\"mtk8\">`</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          {}</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        );</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk11\">setResp</span><span class=\"mtk1\">(</span><span class=\"mtk15\">await</span><span class=\"mtk1\"> </span><span class=\"mtk12\">response</span><span class=\"mtk1\">.</span><span class=\"mtk11\">json</span><span class=\"mtk1\">());</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      } </span><span class=\"mtk15\">catch</span><span class=\"mtk1\"> (</span><span class=\"mtk12\">e</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk10\">console</span><span class=\"mtk1\">.</span><span class=\"mtk11\">error</span><span class=\"mtk1\">(</span><span class=\"mtk12\">e</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      }</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    })();</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  });</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk15\">if</span><span class=\"mtk1\"> (!</span><span class=\"mtk12\">resp</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk15\">return</span><span class=\"mtk1\"> </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Loading...</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  }</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk15\">return</span><span class=\"mtk1\"> </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">span</span><span class=\"mtk17\">&gt;</span><span class=\"mtk4\">{</span><span class=\"mtk10\">JSON</span><span class=\"mtk1\">.</span><span class=\"mtk11\">stringify</span><span class=\"mtk1\">(</span><span class=\"mtk12\">resp</span><span class=\"mtk1\">, </span><span class=\"mtk4\">null</span><span class=\"mtk1\">, </span><span class=\"mtk7\">2</span><span class=\"mtk1\">)</span><span class=\"mtk4\">}</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">span</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">};</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">export</span><span class=\"mtk1\"> </span><span class=\"mtk15\">default</span><span class=\"mtk1\"> </span><span class=\"mtk11\">withAuthenticationRequired</span><span class=\"mtk1\">(</span><span class=\"mtk12\">CallAPI</span><span class=\"mtk1\">, {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk11\">onRedirecting</span><span class=\"mtk12\">:</span><span class=\"mtk1\"> () </span><span class=\"mtk4\">=&gt;</span><span class=\"mtk1\"> </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Loading...</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">});</span></span></code></pre>\n<p>Here, within your <code>CallAPI</code> component, you've used <code>usestate</code> hook to create two states <code>resp</code> and <code>setResp</code> to check if you have received a response from the API. A constant <code>user</code> was made to use the <code>LAuth</code> method to get the current user data, and then the next line gets the id of the current user. The <code>useeffect</code> React hook that runs after the render contains an asynchronous function is used to fetch the role of the current user <code>uid</code>. It returns the data and outputs it in JSON form, which value is given to <code>SetResp</code>. Else, it throws an error if the fetch request fails.</p>\n<p>Since it is an asynchronous function, the code below it runs while fetching and awaiting a response. <code>resp</code> is false during this time while waiting for the result of the asynchronous function. Therefore, it outputs \"Loading...\" on the screen until the async returns the data that it then outputs. </p>\n<p>The last code block: <code>export</code> is simply used to show \"Loading...\" on the screen during redirecting. </p>\n<h2 id=\"running-the-code\" style=\"position:relative;\"><a href=\"#running-the-code\" aria-label=\"running the code permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Running the Code</h2>\n<p>You can run the present code by <code>cd</code> into your parent directory and running:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"powershell\" data-index=\"13\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">npm start</span></span></code></pre>\n<p>When it successfully starts the server, you would have a similar page as follows:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 48%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAoUlEQVQoz2P4jwX8+/cPTH/8/Pv/oTOv/+869uL/o+ff4XIweXT1b968+c+AzcC/fyEKbj/8+r98wr3/Wa23/28//Bos9ucvpoF///4F06dPn8ZuINDO/xA9/1AwQuw/VgPPnTuH3UCYRhCNjEHEPyQvkmDgP5TwQg43bGFI0EBSAW0NRPcWOZjqLoSFKdjA379//6cU//z5E2zgmTNn/gMAZmERcIXoefcAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"landing page\"\n        title=\"landing page\"\n        src=\"/static/1714adf7da3862d3b19e47ad22304772/e5715/application-home.png\"\n        srcset=\"/static/1714adf7da3862d3b19e47ad22304772/a6d36/application-home.png 650w,\n/static/1714adf7da3862d3b19e47ad22304772/e5715/application-home.png 768w,\n/static/1714adf7da3862d3b19e47ad22304772/cb425/application-home.png 1678w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>This is the landing page you've built in the <code>Auth</code> component and is your <code>/</code> path in your routes within <code>App.js</code>. If you click on the \"login/register\" button, you'll be redirected to your custom Auth Page (IDX) provided by LoginRadius, where you can create a user account and login. You can manage the users who have accounts from your dashboard in \"manage users\".</p>\n<p>After logging in auth react js, with your user, you'll get redirected to the /login route that then runs the CallAPI component and gives you a result similar to the following:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 43.69230769230769%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAZklEQVQoz9VR0QrAIAjs/3+xHwjCMAgWgd5g0NjGbCP2soND1FMOdTCgqltsraGUgqXWvd57V23OGQ4DWIOWjojshV3UHZ3ze21KaezwLX628HijWYrI81NmwMxwIQR8wRgjvPdYAfp/xY2+bpgMAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Login route\"\n        title=\"Login route\"\n        src=\"/static/78ccb05be2dc6355ffaaa126074dd90e/e5715/user-roles.png\"\n        srcset=\"/static/78ccb05be2dc6355ffaaa126074dd90e/a6d36/user-roles.png 650w,\n/static/78ccb05be2dc6355ffaaa126074dd90e/e5715/user-roles.png 768w,\n/static/78ccb05be2dc6355ffaaa126074dd90e/df88b/user-roles.png 1906w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>This is the current role of the user. Any user would have the role of client assigned since you've set to assign the client role by default to all our users from your dashboard during the creation of roles.</p>\n<h2 id=\"managing-user-authentication-and-data\" style=\"position:relative;\"><a href=\"#managing-user-authentication-and-data\" aria-label=\"managing user authentication and data permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Managing User Authentication and Data</h2>\n<h3 id=\"user-authentication\" style=\"position:relative;\"><a href=\"#user-authentication\" aria-label=\"user authentication permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>User Authentication</h3>\n<p>In the above section, you've created a user account with different parameters for the email and password. Upon creation of an account, you get directed to the login page, where you can sign in using the credentials of the created account. Authentication was carried out on the parameters in the input field by the LoginRadius API set up in the Auth Page. </p>\n<p>Your user authentication is carried out by the API. This checks the input details against the registered user details. If any input not matching this is put in the form, you'll get an alert \"user does not exist\" upon clicking the login button. Upon logging in, your app key and secret are sent by your app to the authentication server. Upon authentication, the server responds with an access token and authorizes the user. To view this token, you can create a new file called <code>Token.js</code> and insert the following code into it:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"javascript\" data-index=\"14\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> </span><span class=\"mtk12\">React</span><span class=\"mtk1\">, { </span><span class=\"mtk12\">useEffect</span><span class=\"mtk1\">, </span><span class=\"mtk12\">useState</span><span class=\"mtk1\"> } </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;react&quot;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> { </span><span class=\"mtk12\">useLRAuth</span><span class=\"mtk1\">, </span><span class=\"mtk12\">withAuthenticationRequired</span><span class=\"mtk1\"> } </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;loginradius-react&quot;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk11\">CallAPI</span><span class=\"mtk1\"> = () </span><span class=\"mtk4\">=&gt;</span><span class=\"mtk1\"> {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk4\">const</span><span class=\"mtk1\"> { </span><span class=\"mtk12\">getAccessTokenSilently</span><span class=\"mtk1\"> } = </span><span class=\"mtk11\">useLRAuth</span><span class=\"mtk1\">();</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk4\">const</span><span class=\"mtk1\"> [</span><span class=\"mtk12\">resp</span><span class=\"mtk1\">, </span><span class=\"mtk12\">setResp</span><span class=\"mtk1\">] = </span><span class=\"mtk11\">useState</span><span class=\"mtk1\">(</span><span class=\"mtk4\">null</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk11\">useEffect</span><span class=\"mtk1\">(() </span><span class=\"mtk4\">=&gt;</span><span class=\"mtk1\"> {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    (</span><span class=\"mtk4\">async</span><span class=\"mtk1\"> () </span><span class=\"mtk4\">=&gt;</span><span class=\"mtk1\"> {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk15\">try</span><span class=\"mtk1\"> {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">token</span><span class=\"mtk1\"> = </span><span class=\"mtk15\">await</span><span class=\"mtk1\"> </span><span class=\"mtk11\">getAccessTokenSilently</span><span class=\"mtk1\">();</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">response</span><span class=\"mtk1\"> = </span><span class=\"mtk15\">await</span><span class=\"mtk1\"> </span><span class=\"mtk11\">fetch</span><span class=\"mtk1\">(</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk8\">`https://api.loginradius.com/identity/v2/auth/access_token/validate?access_token=</span><span class=\"mtk4\">${</span><span class=\"mtk12\">token</span><span class=\"mtk4\">}</span><span class=\"mtk8\">&apiKey=</span><span class=\"mtk4\">${</span><span class=\"mtk12\">process</span><span class=\"mtk1\">.</span><span class=\"mtk12\">env</span><span class=\"mtk1\">.</span><span class=\"mtk12\">REACT_APP_API_KEY</span><span class=\"mtk4\">}</span><span class=\"mtk8\">`</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          {}</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        );</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk11\">setResp</span><span class=\"mtk1\">(</span><span class=\"mtk15\">await</span><span class=\"mtk1\"> </span><span class=\"mtk12\">response</span><span class=\"mtk1\">.</span><span class=\"mtk11\">json</span><span class=\"mtk1\">());</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      } </span><span class=\"mtk15\">catch</span><span class=\"mtk1\"> (</span><span class=\"mtk12\">e</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk10\">console</span><span class=\"mtk1\">.</span><span class=\"mtk11\">error</span><span class=\"mtk1\">(</span><span class=\"mtk12\">e</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      }</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    })();</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  }, [</span><span class=\"mtk12\">getAccessTokenSilently</span><span class=\"mtk1\">]);</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk15\">if</span><span class=\"mtk1\"> (!</span><span class=\"mtk12\">resp</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk15\">return</span><span class=\"mtk1\"> </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Loading...</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  }</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk15\">return</span><span class=\"mtk1\"> (</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">span</span><span class=\"mtk17\">&gt;</span><span class=\"mtk4\">{</span><span class=\"mtk10\">JSON</span><span class=\"mtk1\">.</span><span class=\"mtk11\">stringify</span><span class=\"mtk1\">(</span><span class=\"mtk12\">resp</span><span class=\"mtk1\">, </span><span class=\"mtk4\">null</span><span class=\"mtk1\">, </span><span class=\"mtk7\">2</span><span class=\"mtk1\">)</span><span class=\"mtk4\">}</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">span</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  );</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">};</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">export</span><span class=\"mtk1\"> </span><span class=\"mtk15\">default</span><span class=\"mtk1\"> </span><span class=\"mtk11\">withAuthenticationRequired</span><span class=\"mtk1\">(</span><span class=\"mtk12\">CallAPI</span><span class=\"mtk1\">, {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk11\">onRedirecting</span><span class=\"mtk12\">:</span><span class=\"mtk1\"> () </span><span class=\"mtk4\">=&gt;</span><span class=\"mtk1\"> </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Loading...</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">, </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    });</span></span></code></pre>\n<p>The code above runs a fetch request for the access token and displays it when the data is returned. To view the output of this code, import the newly created file into your <code>App.js</code> file. Since the name of the function component in the code is still <code>CallAPI</code>, you don't need to edit the component called in the login route. You just need to comment out the former import for the component from your <code>return.js</code> file as shown below:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"javascript\" data-index=\"15\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;./App.css&quot;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> { </span><span class=\"mtk12\">BrowserRouter</span><span class=\"mtk1\"> </span><span class=\"mtk15\">as</span><span class=\"mtk1\"> </span><span class=\"mtk12\">Router</span><span class=\"mtk1\">, </span><span class=\"mtk12\">Switch</span><span class=\"mtk1\">, </span><span class=\"mtk12\">Route</span><span class=\"mtk1\"> } </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;react-router-dom&quot;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> </span><span class=\"mtk12\">Auth</span><span class=\"mtk1\"> </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;./Landing&quot;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\">// import Login from &quot;./Login&quot;;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> </span><span class=\"mtk12\">React</span><span class=\"mtk1\"> </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&#39;react&#39;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\">// import CallAPI from &#39;./Return&#39;;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\"> </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> </span><span class=\"mtk12\">CallAPI</span><span class=\"mtk1\"> </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&#39;./Token&#39;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">function</span><span class=\"mtk1\"> </span><span class=\"mtk11\">App</span><span class=\"mtk1\">() {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk15\">return</span><span class=\"mtk1\"> (</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">Router</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">className</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;App&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">Switch</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">Route</span><span class=\"mtk1\"> </span><span class=\"mtk12\">exact</span><span class=\"mtk1\"> </span><span class=\"mtk12\">path</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;/&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span><span class=\"mtk4\">{</span><span class=\"mtk8\">&quot;Application home&quot;</span><span class=\"mtk4\">}</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">Auth</span><span class=\"mtk1\"> </span><span class=\"mtk17\">/&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk10\">Route</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">Route</span><span class=\"mtk1\"> </span><span class=\"mtk12\">path</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;/login&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">CallAPI</span><span class=\"mtk1\"> </span><span class=\"mtk17\">/&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk10\">Route</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk10\">Switch</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk10\">Router</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  );</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">}</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">export</span><span class=\"mtk1\"> </span><span class=\"mtk15\">default</span><span class=\"mtk1\"> </span><span class=\"mtk12\">App</span><span class=\"mtk1\">;</span></span></code></pre>\n<p>You then need to run the code by starting the server using the <code>npm start</code> command. Upon starting the server, when you log in, you'll have your user token displayed on the screen. Your output will be similar to the following:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 50.30769230769231%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAA2ElEQVQoz62QyQrCQBBE55/iEkFjRFAvivfgR+eaBb1nT8YsZCnTk6gY8CCm4VHdQ9H0FDvsd1irKpYrBbK8gCRNIU16pC9M3sxnMpTtBsfzCRdNAwvDEEEQtPgIW6X5NwL4ng+ecOi6DoYR63a9gjVNIwbSId9q6KvrWrxblgVWFAWSJEGapkLjOBZKuK4Dx+nwPK+dXfFNfufCF0WRUM458jyHYRhgtL0sS1RV1VO/ejIRWZYJqP/0dtDb68IxsnvGY9t2l+G/fGQ4+oW0fZjJrzwzNE0TD+tJ4seP9r46AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"access token\"\n        title=\"access token\"\n        src=\"/static/f9d01fdbe19a868e34eb0d65b7a9bda1/e5715/access-token.png\"\n        srcset=\"/static/f9d01fdbe19a868e34eb0d65b7a9bda1/a6d36/access-token.png 650w,\n/static/f9d01fdbe19a868e34eb0d65b7a9bda1/e5715/access-token.png 768w,\n/static/f9d01fdbe19a868e34eb0d65b7a9bda1/0a344/access-token.png 1741w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Here, you can see the access token and its details. You can then return your code to the previous <code>CallAPI</code> component imported from <code>Return.js</code>.</p>\n<h3 id=\"user-data\" style=\"position:relative;\"><a href=\"#user-data\" aria-label=\"user data permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>User Data</h3>\n<p>You can view and manage user accounts from the dashboard. You can find the panel for this under \"User management\":</p>\n<p><img src=\"https://paper-attachments.dropbox.com/s_14B4BD8EDBFA59296DCDB812AB5C6EF8CE164AAF0A2268A9E90E57893E23504E_1628263707754_Screenshot+117.png\" alt=\"User Manangement\"></p>\n<p>Manage users:</p>\n<p><img src=\"https://paper-attachments.dropbox.com/s_14B4BD8EDBFA59296DCDB812AB5C6EF8CE164AAF0A2268A9E90E57893E23504E_1628263762129_Screenshot+119.png\" alt=\"Manage users\"></p>\n<p>Here, you can view the account information of your users, search for a particular user details using the email, Uid, or phone number as the query in the search box. Also, the panel provides an option to reset the password of a user, block users, and delete users as the above image shows. You can create new users by clicking on the \"add user\" button and filling in the details of the new user.</p>\n<h2 id=\"viewing-user-permissions\" style=\"position:relative;\"><a href=\"#viewing-user-permissions\" aria-label=\"viewing user permissions permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Viewing User Permissions</h2>\n<p>To view all roles and permissions for your app, change the URL in the fetch request to <code>https://api.loginradius.com/identity/v2/manage/role</code>, keeping the rest of the URL the same. That is, it still contains your <code>appkey</code> and <code>appsecret</code> parameters.</p>\n<p>Reload your page, and you'll have an output similar as follows:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 49.23076923076923%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAAA7EAAAOxAGVKw4bAAAAg0lEQVQoz82S2QrFIAxE/f/vFPTJpRc1rtNGWtr3WriBQxJxhqARmQgppUmMEXT0jDEGzjl472GtnbU9+G0bKOd5hzWUCCEE1FpnL1pruODDq06ncT7Fz/zUMKUUcCilILAgxhgza60huHlL7/02XD7h/xuufMNvfpl36C28m2wqpcQOOe8Vp6wLBgYAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"All user Roles and permissions\"\n        title=\"All user Roles and permissions\"\n        src=\"/static/e5012f3e03c0d4ab6505554c0b93b4e6/e5715/user-roles-permissions.png\"\n        srcset=\"/static/e5012f3e03c0d4ab6505554c0b93b4e6/a6d36/user-roles-permissions.png 650w,\n/static/e5012f3e03c0d4ab6505554c0b93b4e6/e5715/user-roles-permissions.png 768w,\n/static/e5012f3e03c0d4ab6505554c0b93b4e6/4c917/user-roles-permissions.png 1859w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<h2 id=\"adding-a-role-to-the-current-user\" style=\"position:relative;\"><a href=\"#adding-a-role-to-the-current-user\" aria-label=\"adding a role to the current user permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Adding a Role to the Current User</h2>\n<p>To add the Admin role to the current user, create objects for this by adding the following code within the parenthesis after your fetch URL:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"json\" data-index=\"16\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">method: </span><span class=\"mtk8\">&quot;PUT&quot;</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">     headers: {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk14\">&#39;Content-Type&#39;</span><span class=\"mtk1\">: </span><span class=\"mtk14\">&#39;application/json&#39;</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">     },</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">     body: JSON.stringify({</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk14\">roles</span><span class=\"mtk1\">: [</span><span class=\"mtk8\">&quot;Admin&quot;</span><span class=\"mtk1\">],</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">     }),</span></span></code></pre>\n<p>This adds the Admin role to the current logged-in user since it is the <code>Uid</code> that is within our URL. <code>fetch</code> uses a GET request by default. Since you're making a change to the URL, you're using a PUT method instead. You'll get a result similar to as follows:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 37.53846153846154%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAA7DAAAOwwHHb6hkAAAARklEQVQY02P4jw38+PHj27dvX79+/fnzJ6bsv3//gOSdO3cY/pMOIJqvXbtGvubr16+POM03btxg+Ew6+PTpEzAiL168CACpUddSJiooCgAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Added admin role to current Uid\"\n        title=\"Added admin role to current Uid\"\n        src=\"/static/8e50ee1a7a6556490152e13a1d806d5b/e5715/roles-client-admin.png\"\n        srcset=\"/static/8e50ee1a7a6556490152e13a1d806d5b/a6d36/roles-client-admin.png 650w,\n/static/8e50ee1a7a6556490152e13a1d806d5b/e5715/roles-client-admin.png 768w,\n/static/8e50ee1a7a6556490152e13a1d806d5b/29114/roles-client-admin.png 1920w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>The user has both client and admin roles because you've added client roles by default to all our users.</p>\n<h3 id=\"assigning-client-and-admin-roles\" style=\"position:relative;\"><a href=\"#assigning-client-and-admin-roles\" aria-label=\"assigning client and admin roles permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Assigning Client and Admin roles</h3>\n<p>To assign specific roles to different people, first you should uncheck the set as default in the \"manage roles\" section of your dashboard. You can then run an <code>if block</code> to check if the users’ logged-in emails are equal to a particular set of emails and then perform the assignment of admin roles to them; else, assign the client roles instead. Modify your <code>return.js</code> file as below:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"javascript\" data-index=\"17\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> </span><span class=\"mtk12\">React</span><span class=\"mtk1\">, { </span><span class=\"mtk12\">useState</span><span class=\"mtk1\"> } </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;react&quot;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> { </span><span class=\"mtk12\">useLRAuth</span><span class=\"mtk1\">, </span><span class=\"mtk12\">withAuthenticationRequired</span><span class=\"mtk1\"> } </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;loginradius-react&quot;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk11\">CallAPI</span><span class=\"mtk1\"> = () </span><span class=\"mtk4\">=&gt;</span><span class=\"mtk1\"> {</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk4\">const</span><span class=\"mtk1\"> [</span><span class=\"mtk12\">resp</span><span class=\"mtk1\">, </span><span class=\"mtk12\">setResp</span><span class=\"mtk1\">] = </span><span class=\"mtk11\">useState</span><span class=\"mtk1\">(</span><span class=\"mtk4\">null</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk4\">const</span><span class=\"mtk1\"> { </span><span class=\"mtk12\">user</span><span class=\"mtk1\"> } = </span><span class=\"mtk11\">useLRAuth</span><span class=\"mtk1\">();</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">uid</span><span class=\"mtk1\"> = </span><span class=\"mtk12\">user</span><span class=\"mtk1\">[</span><span class=\"mtk8\">&quot;Uid&quot;</span><span class=\"mtk1\">];</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk4\">var</span><span class=\"mtk1\"> </span><span class=\"mtk12\">response</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">email</span><span class=\"mtk1\"> = </span><span class=\"mtk12\">user</span><span class=\"mtk1\">[</span><span class=\"mtk8\">&quot;Email&quot;</span><span class=\"mtk1\">];</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk4\">var</span><span class=\"mtk1\"> </span><span class=\"mtk12\">emailmain</span><span class=\"mtk1\"> = </span><span class=\"mtk12\">email</span><span class=\"mtk1\">[</span><span class=\"mtk7\">0</span><span class=\"mtk1\">].</span><span class=\"mtk12\">Value</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  (</span><span class=\"mtk4\">async</span><span class=\"mtk1\"> () </span><span class=\"mtk4\">=&gt;</span><span class=\"mtk1\"> {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk15\">if</span><span class=\"mtk1\"> (</span><span class=\"mtk12\">emailmain</span><span class=\"mtk1\">.</span><span class=\"mtk11\">toLowerCase</span><span class=\"mtk1\">() === </span><span class=\"mtk8\">&quot;admin@example.com&quot;</span><span class=\"mtk1\">){</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk15\">try</span><span class=\"mtk1\"> {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk12\">response</span><span class=\"mtk1\"> = </span><span class=\"mtk15\">await</span><span class=\"mtk1\"> </span><span class=\"mtk11\">fetch</span><span class=\"mtk1\">(</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          </span><span class=\"mtk8\">`https://api.loginradius.com/identity/v2/manage/account/</span><span class=\"mtk4\">${</span><span class=\"mtk12\">uid</span><span class=\"mtk4\">}</span><span class=\"mtk8\">/role?apiKey=</span><span class=\"mtk4\">${</span><span class=\"mtk12\">process</span><span class=\"mtk1\">.</span><span class=\"mtk12\">env</span><span class=\"mtk1\">.</span><span class=\"mtk12\">REACT_APP_API_KEY</span><span class=\"mtk4\">}</span><span class=\"mtk8\">&apiSecret=</span><span class=\"mtk4\">${</span><span class=\"mtk12\">process</span><span class=\"mtk1\">.</span><span class=\"mtk12\">env</span><span class=\"mtk1\">.</span><span class=\"mtk12\">REACT_APP_SECRET</span><span class=\"mtk4\">}</span><span class=\"mtk8\">`</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            </span><span class=\"mtk12\">method:</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;PUT&quot;</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            </span><span class=\"mtk12\">headers:</span><span class=\"mtk1\"> {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">              </span><span class=\"mtk8\">&#39;Content-Type&#39;</span><span class=\"mtk12\">:</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&#39;application/json&#39;</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            },</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            </span><span class=\"mtk12\">body:</span><span class=\"mtk1\"> </span><span class=\"mtk10\">JSON</span><span class=\"mtk1\">.</span><span class=\"mtk11\">stringify</span><span class=\"mtk1\">({</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">              </span><span class=\"mtk12\">roles:</span><span class=\"mtk1\"> [</span><span class=\"mtk8\">&quot;Admin&quot;</span><span class=\"mtk1\">],</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            }),</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          }</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        );</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk11\">setResp</span><span class=\"mtk1\">(</span><span class=\"mtk15\">await</span><span class=\"mtk1\"> </span><span class=\"mtk12\">response</span><span class=\"mtk1\">.</span><span class=\"mtk11\">json</span><span class=\"mtk1\">());</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      } </span><span class=\"mtk15\">catch</span><span class=\"mtk1\"> (</span><span class=\"mtk12\">e</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk10\">console</span><span class=\"mtk1\">.</span><span class=\"mtk11\">error</span><span class=\"mtk1\">(</span><span class=\"mtk12\">e</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      }</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    }</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk15\">else</span><span class=\"mtk1\"> {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">       </span><span class=\"mtk15\">try</span><span class=\"mtk1\"> {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">         </span><span class=\"mtk12\">response</span><span class=\"mtk1\"> = </span><span class=\"mtk15\">await</span><span class=\"mtk1\"> </span><span class=\"mtk11\">fetch</span><span class=\"mtk1\">(</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">           </span><span class=\"mtk8\">`https://api.loginradius.com/identity/v2/manage/account/</span><span class=\"mtk4\">${</span><span class=\"mtk12\">uid</span><span class=\"mtk4\">}</span><span class=\"mtk8\">/role?apiKey=</span><span class=\"mtk4\">${</span><span class=\"mtk12\">process</span><span class=\"mtk1\">.</span><span class=\"mtk12\">env</span><span class=\"mtk1\">.</span><span class=\"mtk12\">REACT_APP_API_KEY</span><span class=\"mtk4\">}</span><span class=\"mtk8\">&apiSecret=</span><span class=\"mtk4\">${</span><span class=\"mtk12\">process</span><span class=\"mtk1\">.</span><span class=\"mtk12\">env</span><span class=\"mtk1\">.</span><span class=\"mtk12\">REACT_APP_SECRET</span><span class=\"mtk4\">}</span><span class=\"mtk8\">`</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">           {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">             </span><span class=\"mtk12\">method:</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;PUT&quot;</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">             </span><span class=\"mtk12\">headers:</span><span class=\"mtk1\"> {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">               </span><span class=\"mtk8\">&quot;Content-Type&quot;</span><span class=\"mtk12\">:</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;application/json&quot;</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">             },</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">             </span><span class=\"mtk12\">body:</span><span class=\"mtk1\"> </span><span class=\"mtk10\">JSON</span><span class=\"mtk1\">.</span><span class=\"mtk11\">stringify</span><span class=\"mtk1\">({</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">               </span><span class=\"mtk12\">roles:</span><span class=\"mtk1\"> [</span><span class=\"mtk8\">&quot;Client&quot;</span><span class=\"mtk1\">],</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">             }),</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">           }</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">         );</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">         </span><span class=\"mtk11\">setResp</span><span class=\"mtk1\">(</span><span class=\"mtk15\">await</span><span class=\"mtk1\"> </span><span class=\"mtk12\">response</span><span class=\"mtk1\">.</span><span class=\"mtk11\">json</span><span class=\"mtk1\">());</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">       } </span><span class=\"mtk15\">catch</span><span class=\"mtk1\"> (</span><span class=\"mtk12\">e</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">         </span><span class=\"mtk10\">console</span><span class=\"mtk1\">.</span><span class=\"mtk11\">error</span><span class=\"mtk1\">(</span><span class=\"mtk12\">e</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">       }</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    }</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  })();</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk15\">if</span><span class=\"mtk1\"> (!</span><span class=\"mtk12\">resp</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk15\">return</span><span class=\"mtk1\"> </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Loading...</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  }</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">   </span><span class=\"mtk15\">return</span><span class=\"mtk1\"> </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">span</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    Welcome user : </span><span class=\"mtk4\">{</span><span class=\"mtk12\">uid</span><span class=\"mtk4\">}</span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">br</span><span class=\"mtk17\">/&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    Email : </span><span class=\"mtk4\">{</span><span class=\"mtk12\">emailmain</span><span class=\"mtk4\">}</span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">br</span><span class=\"mtk17\">/&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk4\">{</span><span class=\"mtk10\">JSON</span><span class=\"mtk1\">.</span><span class=\"mtk11\">stringify</span><span class=\"mtk1\">(</span><span class=\"mtk12\">resp</span><span class=\"mtk1\">, </span><span class=\"mtk4\">null</span><span class=\"mtk1\">, </span><span class=\"mtk7\">2</span><span class=\"mtk1\">)</span><span class=\"mtk4\">}</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">span</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">};</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">export</span><span class=\"mtk1\"> </span><span class=\"mtk15\">default</span><span class=\"mtk1\"> </span><span class=\"mtk11\">withAuthenticationRequired</span><span class=\"mtk1\">(</span><span class=\"mtk12\">CallAPI</span><span class=\"mtk1\">, {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk11\">onRedirecting</span><span class=\"mtk12\">:</span><span class=\"mtk1\"> () </span><span class=\"mtk4\">=&gt;</span><span class=\"mtk1\"> </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Loading...</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">});</span></span></code></pre>\n<p>In the code above, you've created a const email that returned an array containing the user email. To get the email specifically, you've created another variable <code>emailmain</code> which gets the value at a particular array position containing the user email.</p>\n<p>The <code>async</code> request block has now been modified to check if the user email being used for logging in is equivalent to a particular email which you've declared. Alternatively, you can have your emails pulled from a database and assign the admin roles to the ones you want. The else block assigns a client role to emails that do not meet the first criteria. When you create a new account with an email similar to what I have in the <code>if block</code>, that is admin@example.com; when rerouted to the <code>/login</code> path, you'll discover that the role of admin was assigned while any other email will have the client role assigned upon login. The return statement returns the user id of the logged-in user, the email, and then the role in a JSON format. The output would be similar to the following:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 46.15384615384615%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAA7DAAAOwwHHb6hkAAAAb0lEQVQoz9WQsQ7AIAhE/f9/Uzdnk7I6oE6KUNrR2qSOvYEBeOEOM/ZFRCISQjCyL+W1WmvNc9B7Z74u8GCV3rk7PMHe+xnWvVIKIsJxAECMMaVUa22tTbBzbm1bY5WclcGMRGNp+xX+kvmnsH77BNyMEdj88cisAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"output on login route\"\n        title=\"output on login route\"\n        src=\"/static/355f593626692189a44110d4bd1ece52/e5715/output.png\"\n        srcset=\"/static/355f593626692189a44110d4bd1ece52/a6d36/output.png 650w,\n/static/355f593626692189a44110d4bd1ece52/e5715/output.png 768w,\n/static/355f593626692189a44110d4bd1ece52/29114/output.png 1920w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<h2 id=\"conclusion\" style=\"position:relative;\"><a href=\"#conclusion\" aria-label=\"conclusion permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Conclusion</h2>\n<p>This tutorial covered:</p>\n<ul>\n<li>Setting up LoginRadius with a React app </li>\n<li>Using the setup to authenticate users and assigning specific roles with different privileges  </li>\n</ul>\n<p>These privileges can be used to give users certain permissions as to what they can do on your website.</p>\n<p>LoginRadius is a great tool and is easy to implement if you want to implement authentication in your application.</p>\n<p>A working version of the code used in this tutorial is available <a href=\"https://github.com/Victory-ET/LoginRadius\">on Github</a>.</p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n  .dark-default-dark {\n    background-color: #1E1E1E;\n    color: #D4D4D4;\n  }\n  .dark-default-dark .mtk1 { color: #D4D4D4; }\n  .dark-default-dark .mtk15 { color: #C586C0; }\n  .dark-default-dark .mtk12 { color: #9CDCFE; }\n  .dark-default-dark .mtk8 { color: #CE9178; }\n  .dark-default-dark .mtk11 { color: #DCDCAA; }\n  .dark-default-dark .mtk17 { color: #808080; }\n  .dark-default-dark .mtk10 { color: #4EC9B0; }\n  .dark-default-dark .mtk4 { color: #569CD6; }\n  .dark-default-dark .mtk6 { color: #D7BA7D; }\n  .dark-default-dark .mtk7 { color: #B5CEA8; }\n  .dark-default-dark .mtk3 { color: #6A9955; }\n  .dark-default-dark .mtk14 { color: #F44747; }\n</style>","frontmatter":{"date":"September 03, 2021","updated_date":null,"description":"This tutorial illustrates how to perform user authentication and assign roles to users in React apps using LoginRadius.","title":"How to Implement Role-Based Authentication with React Apps","tags":["Authentication","React","User Roles"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/fcf79f1a32f1d204a52c31c37957f8b4/ee604/coverImage.png","srcSet":"/static/fcf79f1a32f1d204a52c31c37957f8b4/69585/coverImage.png 200w,\n/static/fcf79f1a32f1d204a52c31c37957f8b4/497c6/coverImage.png 400w,\n/static/fcf79f1a32f1d204a52c31c37957f8b4/ee604/coverImage.png 800w,\n/static/fcf79f1a32f1d204a52c31c37957f8b4/f3583/coverImage.png 1200w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Victory Tuduo","github":"Victory-ET","avatar":null}}}},{"node":{"excerpt":"The authentication services market is seeing enormous growth in recent times and is only projected to increase. Most reports state that by…","fields":{"slug":"/growth/future-of-authentication-service-market/"},"html":"<p>The authentication services market is seeing enormous growth in recent times and is only projected to increase. Most reports state that by 2026, the authentication security market will reach an exponential high of <a href=\"https://www.mordorintelligence.com/industry-reports/authentication-services-market\">USD 2,411.45 million</a>. The market at present is valued at around 731.34 million dollars. This means that the market is projected to increase at a current annual growth rate or CAGR of 22%.</p>\n<p>This article will aim to determine what makes the advanced authentication security market so potent and what developments will take place shortly.</p>\n<h2 id=\"what-does-authentication-services-mean\" style=\"position:relative;\"><a href=\"#what-does-authentication-services-mean\" aria-label=\"what does authentication services mean permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What does Authentication Services Mean?</h2>\n<p>The authentication services refer to the process where a user requests access to information from a certain authenticating party. A user can do so by disclosing certain details like login credentials which are only privy to the user and the authenticating party. When they do so, the authenticating party will cross verify if the details provided by the user align or match with the details in an on-premises directory.</p>\n<p>Almost every website uses some form of authentication service to allow users to access the data they have to offer. In recent times, <a href=\"https://www.loginradius.com/authentication/\">authentication services</a> have seen implementation on the cloud which is now known as Authentication-as-a-service. AaaS makes it possible for organisations to control the access of users to applications through services like multi-factor authentication, single sign-on and password management, all in the cloud.</p>\n<h2 id=\"the-segmentation-of-the-authentication-services-market\" style=\"position:relative;\"><a href=\"#the-segmentation-of-the-authentication-services-market\" aria-label=\"the segmentation of the authentication services market permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>The Segmentation of the Authentication Services Market</h2>\n<p>The analysis of the authentication services market takes place after segmenting it on the basis of its types. These types include:</p>\n<ul>\n<li>Authentication type: This segment usually involves the different forms or methods of authentication. That is two and <a href=\"https://www.loginradius.com/blog/engineering/why-mfa-important/\">multi-factor authentication</a>, single sign-on and other forms.</li>\n<li>Service type: This refers to the service aspects like compliance management, managed public key infrastructure or PKI and subscription keys management.</li>\n<li>End-user industry: The segment that deals with the industries that specifically use authentication services. This includes IT and Telecommunications, BFSI or Banking, Finance and Insurance Services, Healthcare and finally, Government services.</li>\n<li>Geography: The analysis of the adoption and growth of the market from a geographical standpoint. For example, what does the market look like on different continents or a specific region? These include regions like North America, Europe, Asia-Pacific, Latin America, Middle East and Africa.</li>\n</ul>\n<p><a href=\"https://www.loginradius.com/resource/ebook/buyers-guide-to-multi-factor-authentication/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABkklEQVQY0zWQyy9jYRjGTwQ9vYlQpTrViJ7T0lZIpeq0TqN1mWSmBAuKxCVCIqQrEqEiqUjM7GYjwcaKjQUWkxmJhZmNlZ2NZP6V33znHBZPvuR7n/e5vJJdzeBS01SVT4me/eViYpfVVp363ApSewG3msMu5gZPDmk4onk8qUkau/PYY8PIkSyykkY25gKSQXQoGt6dH/gq9ywnF0koWRKfUsj+EdzhvCBqlqDgOeMjBIZmiQ7P4EhOYYuPiv13Q/FKspLBKRLUrVWQisdIsRmkYJ6GwCS1vgKukG65C7IzohPo/4K/7zNNvaP4E2MEU19pEGnld1FT0Kji3fpO1/4lkaUT/EMlGmNFatwaro5B7OGMSa7t0MzltoECASFkoEWIm5U/BK3KabxrRyjb56jFQ5rT63jC0zg9WepEfVenjuTrYbP8jde3f9z8fOTq9hfXd795en7h4c8z9fGcaWgJGpXEcatVnepQBptIbQsZ/4M4whaqgkn6x5fY2DthvlRmbmvfxMp2hYXSgWlqE8H+AywzymSbMN5UAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"EB-GD-to-MFA\"\n        title=\"EB-GD-to-MFA\"\n        src=\"/static/5093fa5ddf26d3a3ec38a96c3e0387e6/e5715/EB-GD-to-MFA.png\"\n        srcset=\"/static/5093fa5ddf26d3a3ec38a96c3e0387e6/a6d36/EB-GD-to-MFA.png 650w,\n/static/5093fa5ddf26d3a3ec38a96c3e0387e6/e5715/EB-GD-to-MFA.png 768w,\n/static/5093fa5ddf26d3a3ec38a96c3e0387e6/81501/EB-GD-to-MFA.png 2886w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<p>By analysing the market through different segments, it becomes possible to obtain a better understanding  of the digital identity trends.</p>\n<h2 id=\"an-overview-of-the-authentication-services-market\" style=\"position:relative;\"><a href=\"#an-overview-of-the-authentication-services-market\" aria-label=\"an overview of the authentication services market permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>An Overview of the Authentication Services Market</h2>\n<p>The authentication services market is seeing enormous growth for specific reasons and technologies. The reason for this growth is due to the following reasons:</p>\n<ul>\n<li>Increase in ransomware attacks:</li>\n</ul>\n<p>In 2020 alone, there were around <a href=\"https://www.statista.com/statistics/494947/ransomware-attacks-per-year-worldwide/\">304</a> million ransomware attacks worldwide. This was a <a href=\"https://www.statista.com/statistics/494947/ransomware-attacks-per-year-worldwide/\">62%</a> increase from the previous year. Even tech giants like Microsoft became victims of <a href=\"https://www.loginradius.com/blog/identity/how-to-handle-data-breaches/\">ransomware attacks</a>. For this reason, enterprises have implemented a variety of authentication tools for extra protection.</p>\n<ul>\n<li>Adoption of cloud:</li>\n</ul>\n<p>The amount of data that enterprises and organisations are deploying over the cloud is increasing exponentially. For this reason, the vulnerability of data loss through hacking is increasing as well.</p>\n<ul>\n<li>Change in working conditions:</li>\n</ul>\n<p>Most employees also work from home. Therefore, causing gaps in the existing <a href=\"https://www.loginradius.com/blog/identity/cybersecurity-best-practices-for-enterprises/\">cybersecurity protocols</a> that enterprises may have like unsecured devices and more. For this reason, authentication services make it possible for enterprises to plug these gaps.</p>\n<p>Of the many technologies that authentication services have to offer, Multi-factor authentication is seeing more adoption in comparison to others. This is because:</p>\n<ul>\n<li>Outdated authentication options</li>\n</ul>\n<p>Before the advent of advanced authentication services, users were only protected through passwords. The unauthorised sharing of passwords became the most common cause of data breaches. For this reason, multi-factor authentication or MFA acts as a more stringent form of <a href=\"https://www.loginradius.com/blog/identity/login-security/\">login security</a>.</p>\n<ul>\n<li>Advanced MFA</li>\n</ul>\n<p>This form of authentication can combine with other technologies like authentication applications, biometric technologies and more for better protection.</p>\n<p>According to analysis, from a geographical standpoint, North America will be the most prominent contributor. To be more precise, the United States is most likely to adopt authentication services in comparison to any other country. This is because of the increased use of devices and the storage of data on electronic databases.</p>\n<p>Therefore, authentication services have a lot to offer every sector possible, from healthcare to even defense. It is essentially the future of login security and will play an important role in reducing ransomware attacks.</p>\n<p><a href=\"https://www.loginradius.com/book-a-demo/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABdElEQVQY002RO0/CUBzFG6PtbZWHCAmRmBB5P8vDII9SSC0omog4oAEGjZMO6OKEuLjoJ2Fx0cSBwUQnXZxcHPwux38LJA7nNvfec8+5v1tOCCiwpbbhye2BxbYgBMtgIRVioDRRsARGXxZUzLlEHmehBaesQ4rrEMPViYf2DR9nDGKkChbVICVqsMt1WJI1sHCFwhUsUIFohJH49TxECvRUjhDW2mAbB5iP6hB8hUkhiRPN5KIZYJdrsEYrcCSpmQqMm6/m9ylUhSulY7N5ivROB3L9GOlGF3Ktbc4zuz341UPw/uIk0ESbBjoSGlYIx8BfzjSwVmyCEYEUUmCPa3Bnd+hwC75yC95S05SxbolU/iEbOCFCpDexEfIioTNCNd6Tp6IlMnNuGeeDe3z//OLx5RWj5zFGT2O8fXxh/P4Ja6w6vSEFCnTIlW2YiDzhzX7ATFKojDlvjpBPcDF4QPdyiG5/iE7/BmfXd+hd3VKpCoG8fzxWw2+c+yTpAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"book-a-demo-Consultation\"\n        title=\"book-a-demo-Consultation\"\n        src=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png\"\n        srcset=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/a6d36/book-a-demo-loginradius.png 650w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png 768w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/63ff0/book-a-demo-loginradius.png 2887w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"September 02, 2021","updated_date":null,"description":"Authentication services have a lot to offer every sector possible, from healthcare to even defense. It is essentially the future of login security and will play an important role in reducing ransomware attacks.","title":"How Does the Future Look Like for the Authentication Services Market?","tags":["data security","authentication","mfa","cybersecurity"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.7391304347826086,"src":"/static/e38e059bd8a6938fc97e9b740cdfb540/eec3f/future-of-authentication-market.jpg","srcSet":"/static/e38e059bd8a6938fc97e9b740cdfb540/f836f/future-of-authentication-market.jpg 200w,\n/static/e38e059bd8a6938fc97e9b740cdfb540/2244e/future-of-authentication-market.jpg 400w,\n/static/e38e059bd8a6938fc97e9b740cdfb540/eec3f/future-of-authentication-market.jpg 612w","sizes":"(max-width: 612px) 100vw, 612px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.jpg"}}}},{"node":{"excerpt":"An Overview With growing numbers of websites and consumers on those websites, authenticating each one of them becomes an arduous task. Also…","fields":{"slug":"/identity/sms-authentication-protect-business/"},"html":"<h2 id=\"an-overview\" style=\"position:relative;\"><a href=\"#an-overview\" aria-label=\"an overview permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>An Overview</h2>\n<p>With growing numbers of websites and consumers on those websites, authenticating each one of them becomes an arduous task. Also, it becomes an important aspect to protect and secure the consumer's data available on your application.  To protect sensitive consumer data, two-factor authentication became a mandatory requirement in today's digital world.</p>\n<p><a href=\"https://www.loginradius.com/resource/loginradius-ciam-two-factor-authentication/+\">Two-factor authentication</a> can be done via multiple channels. One is by using google authenticator codes, and the other is sending OTP on the consumer's email. But the easiest and convenient way is to do it via SMS.</p>\n<p>SMS stands for <strong>Short Messaging Service</strong>, which you guessed right. The text messages that we get on our mobile phones. This SMS holds an One Time Password (OTP), used to validate the consumer login. So basically, it can be used as a backend agent who reaches out to the original consumer and provides him access to any network, system, or web application.</p>\n<h2 id=\"how-does-sms-authentication-work\" style=\"position:relative;\"><a href=\"#how-does-sms-authentication-work\" aria-label=\"how does sms authentication work permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How does SMS Authentication Work?</h2>\n<p>A short messaging service (SMS) is generally used to carry any information to the end-user. It can be information like promotional messages, notifications, or personal texts, but they also carry authentication codes (OTPs). </p>\n<p>Using SMS authentication is quite simple and easy to understand. When a consumer tries to log in to a website, system, or network, he provides the login credentials. On successfully authenticating the login credentials, the server now does a two-factor authentication. It ensures that the consumer trying to log in is who he says he is. To authenticate the user, a text SMS and an OTP are sent to the consumer's registered mobile number. When that OTP is entered, the consumer gets authenticated, and then only they can access the contents of the system/application.</p>\n<p>SMS authentication is based on one of the three types of <a href=\"https://www.loginradius.com/blog/identity/what-is-multi-factor-authentication/\">multifactor authentication</a>, i.e., <strong>Possession based authentication</strong>. In this type of MFA, the consumer is authenticated via something that only he can possess, which is the mobile handset.</p>\n<h2 id=\"merits-and-demerits-of-using-sms-authentication\" style=\"position:relative;\"><a href=\"#merits-and-demerits-of-using-sms-authentication\" aria-label=\"merits and demerits of using sms authentication permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Merits and Demerits of Using SMS Authentication</h2>\n<p>Everything in this world holds both the concepts of merits and demerits, and so does SMS authentication. Let's first discuss the merits that it has.</p>\n<ol>\n<li><strong>Additional Layer of security:</strong> Two-factor authentication is now widely used to protect consumers' account data. SMS authentication provides an extra layer of protection that too without any complexity. At least it is far better than having no additional security check.</li>\n<li><strong>Ease of usage</strong>: It is the human behaviour that we always look for an easy way to get our work done. Now imagine having a complex two factor authentication setup. Users will end up frustrated doing complex authentications. Here SMS authentication rises as an easy and secure option.</li>\n<li><strong>Ease of usage</strong>: It is human behavior that we always look for an easy way to get our work done. Now imagine having a complex two-factor authentication setup. Users will end up frustrated doing complex authentications. Here SMS authentication rises as an easy and secure option.</li>\n<li><strong>Low Cost:</strong> Sending SMS to consumers includes minor charges, which helps a lot for the organization with a large consumer base.</li>\n</ol>\n<p>Even after being so convenient and easy to operate, there are some demerits also. These demerits are capable enough to make the organizations think that it is enough to protect the business. Let's discuss them one by one:</p>\n<ol>\n<li><strong>SIM Highjacking or Device theft:</strong> It looks effortless to send the verification code on a mobile number and authenticate consumers based on that. But the Option of SMS authentication can be harmful if the SIM/device got lost or stolen by someone. As in this case, SIMs can easily be used on other mobile phones, and they will still receive the validation code.</li>\n<li><strong>Hacking:</strong> Earlier, it was complicated to intercept GSM-based SMS, but as the technologies are evolving, hackers have also got more power in their hands. The regular text which is sent and received over mobile phones can easily be intercepted today.</li>\n<li><strong>Social Engineering Attacks:</strong> Compared to earlier days, more devices are now connected to the internet today. Today, <a href=\"https://www.loginradius.com/blog/identity/phishing-for-identity/\">a simple phishing link</a> via a text msg or any advertisement will do the job. If a consumer clicks on the link by mistake or falls into any such trap, all his data will be gained by hackers, including SMS.</li>\n</ol>\n<p><a href=\"https://www.loginradius.com/resource/loginradius-ciam-phone-authentication/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABjklEQVQY0z2QTWsTURSGB1uaZBKqxbS10YlJY2yMjdpJdMaJSZi0+Y6CFSq2VQR3BmI3XTXBhav8EZEuCi2Cn6AiiG7cuRFtK6IuG1ri9nHmkvHCy7n33HOf854reU5fwZY8lcEby+CLZa2YRbZz/TtH7lMG8tk8fv06R8/P4pmewx3L4Y6mcfdrJAc2mjAZiaXxRTSGowaBZImxCwWOTJvigYBa0WtBguYt4nM3kbV5XImiyIuGVpScTUiroFcXUQsLhFJFXJNp5Hiew32grdGZIicv15lQi4xZOpEqE9RqBC5WhCkBdLqH9SoJc55z+RtMGTWOqSWU3AL+mZIY1Rl7PFm2AFUUrY6iX2XCgg3Hc/+nEA4HwzrrT1/T7Xb5tr3D7o+f/Pr9h4PeXwpLDQ6FLiEdV7m/1uHL1+9sPH/D480XPNl6ybuPn3n1/pP4mqGIgWRbHQhrPHv7AXvt7XXZ3z+g1+uJc+VOE0lJMTipo127S6PVYflBm8Vmi6Vmm3urj7i98hDfmSwuy+U/WlHeyOc+VIYAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"phone-auth-DS\"\n        title=\"phone-auth-DS\"\n        src=\"/static/e803561322c0f2e7a0423cf87d0771b2/e5715/phone-auth-DS.png\"\n        srcset=\"/static/e803561322c0f2e7a0423cf87d0771b2/a6d36/phone-auth-DS.png 650w,\n/static/e803561322c0f2e7a0423cf87d0771b2/e5715/phone-auth-DS.png 768w,\n/static/e803561322c0f2e7a0423cf87d0771b2/63ff0/phone-auth-DS.png 2887w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<h2 id=\"should-businesses-use-sms-authentication\" style=\"position:relative;\"><a href=\"#should-businesses-use-sms-authentication\" aria-label=\"should businesses use sms authentication permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Should Businesses Use SMS Authentication?</h2>\n<p>With all the demerit points discussed above and keeping all the security issues in mind, businesses might want to reconsider their authentication methodology. It is known very clearly that cybercrimes and hackers are overgrowing, especially after the internet revolution. </p>\n<p>Hacking groups and organizations are getting sophisticated daily, and SMS authentication has not evolved with such changes. We are still using a similar old mechanism to send text messages.</p>\n<p>Hence, intercepting a text message is easier as compared to earlier days.</p>\n<p>So to answer the big question, yes, it is better to have some two-factor authentication in the form of SMS authentication, but businesses should not rely entirely on it. They must think of other possible authentication mechanisms if they are collecting sensitive consumer data.</p>\n<h2 id=\"conclusion\" style=\"position:relative;\"><a href=\"#conclusion\" aria-label=\"conclusion permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Conclusion</h2>\n<p>Dropping the idea of SMS authentication might look easy. Still, it is a bit difficult for some organizations because, as we already mentioned, SMS authentication is a very well-established method and has been used for a long time. The convenience provided in authenticating the end-users is also unparalleled. </p>\n<p>But businesses need to find an alternative for this as SMS authentication cannot be heavily relied upon. The key to achieving that is to find any other authentication method which is as easy, convenient, user-friendly, and secure at the same time. Going with the new trends in the technologies, <a href=\"https://www.loginradius.com/blog/identity/what-is-mob-biometric-authentication/\">Biometric Authentication</a> is one feasible solution. Well, we will indeed talk about that some other day :)</p>\n<p>Cheers!</p>\n<p><a href=\"https://www.loginradius.com/book-a-demo/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABdElEQVQY002RO0/CUBzFG6PtbZWHCAmRmBB5P8vDII9SSC0omog4oAEGjZMO6OKEuLjoJ2Fx0cSBwUQnXZxcHPwux38LJA7nNvfec8+5v1tOCCiwpbbhye2BxbYgBMtgIRVioDRRsARGXxZUzLlEHmehBaesQ4rrEMPViYf2DR9nDGKkChbVICVqsMt1WJI1sHCFwhUsUIFohJH49TxECvRUjhDW2mAbB5iP6hB8hUkhiRPN5KIZYJdrsEYrcCSpmQqMm6/m9ylUhSulY7N5ivROB3L9GOlGF3Ktbc4zuz341UPw/uIk0ESbBjoSGlYIx8BfzjSwVmyCEYEUUmCPa3Bnd+hwC75yC95S05SxbolU/iEbOCFCpDexEfIioTNCNd6Tp6IlMnNuGeeDe3z//OLx5RWj5zFGT2O8fXxh/P4Ja6w6vSEFCnTIlW2YiDzhzX7ATFKojDlvjpBPcDF4QPdyiG5/iE7/BmfXd+hd3VKpCoG8fzxWw2+c+yTpAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"LoginRadius Book a Demo\"\n        title=\"LoginRadius Book a Demo\"\n        src=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png\"\n        srcset=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/a6d36/book-a-demo-loginradius.png 650w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png 768w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/63ff0/book-a-demo-loginradius.png 2887w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"September 02, 2021","updated_date":null,"description":"Protecting your business with two-factor/ multi-factor authentication is a great way to keep unauthorized users away from your confidential data. But are SMS secure enough for this purpose? Are there any other security flaws involved in using SMS for authentication? Let’s find out.","title":"SMS Authentication — Can it Really Protect Your Business?","tags":["security"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.6666666666666667,"src":"/static/1eeb09974e808e86297ec44977490ac5/14b42/sms-authentication-protect-business-cover.jpg","srcSet":"/static/1eeb09974e808e86297ec44977490ac5/f836f/sms-authentication-protect-business-cover.jpg 200w,\n/static/1eeb09974e808e86297ec44977490ac5/2244e/sms-authentication-protect-business-cover.jpg 400w,\n/static/1eeb09974e808e86297ec44977490ac5/14b42/sms-authentication-protect-business-cover.jpg 800w,\n/static/1eeb09974e808e86297ec44977490ac5/16310/sms-authentication-protect-business-cover.jpg 1024w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Ashish Kumar Yadav","github":null,"avatar":null}}}},{"node":{"excerpt":"The restaurant industry is still adapting to the digital-first paradigm brought on by the pandemic, but online order volume is growing for…","fields":{"slug":"/growth/how-mfa-makes-qsr-promotions-fraud-free/"},"html":"<p>The restaurant industry is still adapting to the digital-first paradigm brought on by the pandemic, but online order volume is growing for quick-service restaurant QSR chains and is not going away anytime soon. In fact, it is becoming mission-critical for QSR restaurants to take advantage of marketing opportunities afforded by this new normal.</p>\n<p>Mobile-savvy restaurant owners are seeing a boom in engagement, but so are the scammers looking to get a piece of the pie. Restaurants have made security a primary concern, with many implementing multifactor authentication (MFA) methods to stop such attacks.</p>\n<p><a href=\"https://www.loginradius.com/multi-factor-authentication/\">Multi-factor authentication</a> is a type of authentication service that requires a user to give two or more verifications to obtain access to a resource like an application, an online account, or a VPN. Robust identity and access management policy should include multi-factor authentication.</p>\n<p>MFA needs one or more additional verification criteria in addition to the login and <a href=\"https://www.loginradius.com/blog/identity/2021/01/how-to-choose-a-secure-password/\">secure password</a>, which reduces the chances of a successful cyber attack.</p>\n<h2 id=\"why-should-restaurants-implement-mfa\" style=\"position:relative;\"><a href=\"#why-should-restaurants-implement-mfa\" aria-label=\"why should restaurants implement mfa permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Why Should Restaurants Implement MFA?</h2>\n<p>The major <a href=\"https://www.loginradius.com/blog/identity/benefits-of-mfa/#:~:text=Put%20simply%2C%20MFA%20reduces%20the,part%20of%20their%20best%20practices.\">benefit of MFA</a> is that it increases the security of your business by forcing users to identify themselves with more than just a username and password. Despite been for a long time, usernames and passwords can be stolen by third parties and are vulnerable to brute force attacks.  </p>\n<p>Enforcing the use of multi-factor authentication (MFA) features like a fingerprint or a genuine hardware key boosts your restaurant’s confidence in its capacity to defend itself from hackers.</p>\n<h2 id=\"how-does-mfa-work\" style=\"position:relative;\"><a href=\"#how-does-mfa-work\" aria-label=\"how does mfa work permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How Does MFA Work?</h2>\n<p>MFA works by seeking further information to verify its claims (factors). One-time passwords (OTP) are one of the most prevalent MFA elements that consumers face. OTPs are four to eight-digit codes that you may get by email, SMS, or a mobile app.</p>\n<p>When using OTPs, a new code is produced regularly or whenever an authentication request is made. The code is produced using a seed value provided to the user when they initially register and another element, such as an incremental counter or a time value.</p>\n<h2 id=\"three-factors-of-mfa\" style=\"position:relative;\"><a href=\"#three-factors-of-mfa\" aria-label=\"three factors of mfa permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Three Factors of MFA</h2>\n<p>The majority of MFA authentication methods rely on one of three sorts of extra data:</p>\n<ul>\n<li>Passwords and PINs are examples of things you know.</li>\n<li>Your possessions, such as a badge or a smartphone</li>\n<li>Biometrics, such as fingerprints or voice recognition, are examples of things you are.</li>\n</ul>\n<p>In an <a rel=\"nofollow\" href=\"https://www.pymnts.com/news/security-and-risk/2021/multi-factor-authentication-makes-qsrs-promotions-discounts-fraud-free/\">interview with PYMNTS</a>, Vikram Dhawan, vice president and senior product leader at Kount, an Equifax business, warned that QSRs and other merchants must safeguard their promotions and customers' accounts to strengthen their defenses against an assault of faceless, digitally-mounted attackers.</p>\n<p><a href=\"https://www.loginradius.com/resource/ebook/buyers-guide-to-multi-factor-authentication/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABkklEQVQY0zWQyy9jYRjGTwQ9vYlQpTrViJ7T0lZIpeq0TqN1mWSmBAuKxCVCIqQrEqEiqUjM7GYjwcaKjQUWkxmJhZmNlZ2NZP6V33znHBZPvuR7n/e5vJJdzeBS01SVT4me/eViYpfVVp363ApSewG3msMu5gZPDmk4onk8qUkau/PYY8PIkSyykkY25gKSQXQoGt6dH/gq9ywnF0koWRKfUsj+EdzhvCBqlqDgOeMjBIZmiQ7P4EhOYYuPiv13Q/FKspLBKRLUrVWQisdIsRmkYJ6GwCS1vgKukG65C7IzohPo/4K/7zNNvaP4E2MEU19pEGnld1FT0Kji3fpO1/4lkaUT/EMlGmNFatwaro5B7OGMSa7t0MzltoECASFkoEWIm5U/BK3KabxrRyjb56jFQ5rT63jC0zg9WepEfVenjuTrYbP8jde3f9z8fOTq9hfXd795en7h4c8z9fGcaWgJGpXEcatVnepQBptIbQsZ/4M4whaqgkn6x5fY2DthvlRmbmvfxMp2hYXSgWlqE8H+AywzymSbMN5UAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"EB-GD-to-MFA\"\n        title=\"EB-GD-to-MFA\"\n        src=\"/static/5093fa5ddf26d3a3ec38a96c3e0387e6/e5715/EB-GD-to-MFA.png\"\n        srcset=\"/static/5093fa5ddf26d3a3ec38a96c3e0387e6/a6d36/EB-GD-to-MFA.png 650w,\n/static/5093fa5ddf26d3a3ec38a96c3e0387e6/e5715/EB-GD-to-MFA.png 768w,\n/static/5093fa5ddf26d3a3ec38a96c3e0387e6/81501/EB-GD-to-MFA.png 2886w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a>  </p>\n<p>The news came as PYMNTS research revealed that 44 percent of respondents indicated they were more likely to order from restaurants that offered specials or discounts. According to Dhawan, this circumstance allows for marketing misuse and fraud.</p>\n<p>“Anytime you have the option to give anything out for free or at a very low cost,” Dhawan added, “you will draw traffic.” And the question is, \"How much traffic is good and how much is bad?\"</p>\n<p>It's not simple to tell which is which, especially when a good campaign may increase traffic dramatically.</p>\n<p>He recalled how one of the restaurants Kount now works with ran into issues when it started giving free things and noticed an \"enormous\" amount of signups for free products.</p>\n<h2 id=\"monitoring-endpoints\" style=\"position:relative;\"><a href=\"#monitoring-endpoints\" aria-label=\"monitoring endpoints permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Monitoring Endpoints</h2>\n<p>Fraudsters discover ways to try account takeover tactics in the face of such volume increases, he added. The endpoints of a transaction are the first thing merchants must understand to prevent account takeovers.</p>\n<p>He mentioned Kount's technology, allowing clients to see how many accounts are generated from the same endpoint device, such as a phone, laptop, or tablet. A few accounts arriving may be acceptable, but hundreds, if not thousands, of accounts arriving from a single endpoint, indicate a problem.</p>\n<p>Many shops require that email addresses be used for signups, but he pointed out that creating an email account can be done for free and indefinitely these days. Criminals can generate several fake emails to sign up for an offer and take advantage of it.</p>\n<p>He claims that his company's \"Email Insights\" service may provide information on an email's \"reputation,\" such as if it was produced lately and how frequently it could be utilized. Restaurants and shops can choose whether to halt account creations or redirect them to a secondary authentication method.</p>\n<p>He believes that modern technology — such as internet platforms — may also be used to halt promo code misuse. He claims that bad actors are aware of a promotional code or 17-digit alphanumeric string structure and go out of their way to find current promo codes.</p>\n<p>He said, \"When they locate an active promo code, they disseminate it across their networks, which is how promo code abuse happens.\" Tracking many such attempts to a single device can help detect whether a fraudster is attempting to apply \"brute force\" on a code.</p>\n<h2 id=\"the-balancing-act\" style=\"position:relative;\"><a href=\"#the-balancing-act\" aria-label=\"the balancing act permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>The Balancing Act</h2>\n<p>When it comes to anti-fraud measures and consumer experiences, there is a delicate balance to be struck. Raising the barrier excessively high so that no one can get in harm, real customers.</p>\n<p>Merchants must determine how high to elevate the threat level and at what degree to implement payment authentication difficulties based on their business operations.</p>\n<p>“Perhaps it's dependent on the pricing or the amount of money you spend,” Dhawan said, citing an example of a customer who previously spent $5 and $10 each transaction but suddenly spent $5,000 on order. That's a good sign that suggests we should \"double-check that it's you.\"</p>\n<p>In an age where, even after the pandemic, <a href=\"https://www.loginradius.com/blog/identity/digital-transformation-consumer-iam/\">digital transformation</a>, online ordering, and online marketing, particularly among QSRs, will endure, he added, the necessity to employ modern technology and acceptable levels of friction remain especially essential.</p>\n<p>“Consumers who order items and services from QSRs using digital technology are not going away,” Dhawan told PYMNTS. They appreciated how the systems work since they didn’t have to wait in lines, said another participant.</p>\n<p>Consumers may now eat these goods in a variety of ways. So it would be fascinating for merchants to react to that change and that dynamic nature.”\n<a href=\"https://www.loginradius.com/book-a-demo/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABdElEQVQY002RO0/CUBzFG6PtbZWHCAmRmBB5P8vDII9SSC0omog4oAEGjZMO6OKEuLjoJ2Fx0cSBwUQnXZxcHPwux38LJA7nNvfec8+5v1tOCCiwpbbhye2BxbYgBMtgIRVioDRRsARGXxZUzLlEHmehBaesQ4rrEMPViYf2DR9nDGKkChbVICVqsMt1WJI1sHCFwhUsUIFohJH49TxECvRUjhDW2mAbB5iP6hB8hUkhiRPN5KIZYJdrsEYrcCSpmQqMm6/m9ylUhSulY7N5ivROB3L9GOlGF3Ktbc4zuz341UPw/uIk0ESbBjoSGlYIx8BfzjSwVmyCEYEUUmCPa3Bnd+hwC75yC95S05SxbolU/iEbOCFCpDexEfIioTNCNd6Tp6IlMnNuGeeDe3z//OLx5RWj5zFGT2O8fXxh/P4Ja6w6vSEFCnTIlW2YiDzhzX7ATFKojDlvjpBPcDF4QPdyiG5/iE7/BmfXd+hd3VKpCoG8fzxWw2+c+yTpAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"book-a-demo-Consultation\"\n        title=\"book-a-demo-Consultation\"\n        src=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png\"\n        srcset=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/a6d36/book-a-demo-loginradius.png 650w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png 768w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/63ff0/book-a-demo-loginradius.png 2887w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"September 01, 2021","updated_date":null,"description":"Quick-Service Restaurants are seeing a boom in engagement, but so are the scammers. Read this blog to find out how to boost your restaurant’s confidence in its capacity to defend itself from hackers.","title":"How MFA Makes Quick Service Restaurants (QSR) Promotion Fraud-Free","tags":["mfa","digital transformation","biometric authentication"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/7637183f5147c43df2add0a6b6622601/eec3f/qsr-payment-ciam-loginradius.jpg","srcSet":"/static/7637183f5147c43df2add0a6b6622601/f836f/qsr-payment-ciam-loginradius.jpg 200w,\n/static/7637183f5147c43df2add0a6b6622601/2244e/qsr-payment-ciam-loginradius.jpg 400w,\n/static/7637183f5147c43df2add0a6b6622601/eec3f/qsr-payment-ciam-loginradius.jpg 612w","sizes":"(max-width: 612px) 100vw, 612px"}}},"author":{"id":"Navanita Devi","github":null,"avatar":null}}}},{"node":{"excerpt":"According to recent research, it takes 5 to 7 impressions\n for people to remember your brand, meaning that customers will recognize your…","fields":{"slug":"/growth/how-consumer-identity-influence-brand-recognizability/"},"html":"<p>According to recent research, it takes <a rel=\"nofollow\" href=\"https://www.smallbizgenius.net/by-the-numbers/branding-statistics/#gref\">5 to 7 impressions</a>\nfor people to remember your brand, meaning that customers will recognize your brand after they have seen it at least five times on different platforms. Your brand could be seen through many different formats, from <a rel=\"nofollow\" href=\"https://www.twine.net/find/banner-ad-designers\">banner ads</a> to video ads - but depending on the consumer identity, your brand will be perceived differently.</p>\n<p>Brand recognizability depends on various aspects, and consumer identity is one of the integral components on the way to your company's popularity.</p>\n<p>Let’s explore more about how people's self-perception influences brand choice and the types of consumer identities for you to consider.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 512px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 55.078125%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAACqklEQVQozwGfAmD9APPz8Pz9/vz9/+js7bO5tvH08b3FyoWDguXNq9ng4YKiudjQxfLElvXFmMq3pcPHy7/Fydfc35ianZWYnQDp6+f7/P7+///08u/s5N316d3W0dODiIiMtKp0paFkqqbW3dvl39mErqrc5+bU1NSjr7TFzM+UlJaZm58Ag4mOvru56vb5W7XVS6fKSajMNo6wgo6SwNrdrtHSepaXkpqbtbW3m6Kilpmah35/w5iX2sDAmJubIkFbAJWboKmhmtjn6xGJwAB7uAWLygBuoo+Xmvn06e3u3qymlJaVkru6ubawsKilpZSNjsarqurc3J6hpAAePQCJj5WgmJLN1tcUerAAcq0IgrwAcaWaqabl3a7MyqTV06rb3djw4+PNsbLKra7d1dfd29HbvJqTkI4BIj8AR0xRaVxTuLqzEWyhAGqlBnq2AGKSepGXyre4wrmo09rc0dLUzc/SqrrCkqe1orC5t7a3hXluaWhoAB86ACEmLV1SS8jLxRJglwBbmQBnqRdypoaLj5KQk46LjI6NjIqKi4eGiYeFhomGhYaDgYJ/fXp2c2pjXhUuRwA6Oj6Wj4bS1tQrYokXXIwWZpZEibHa4+zS4OrS3ufP2uHe4eHm5ODf3trExcW1t7u6sJr7shrbnDATK0cAdXFdnpp/w8W3uLiZu72fvbiVnJqKkq7FkLTPjrPOi7HOqLa/pqimm52bhZineJCnhZKR8K8lypU7TmJ7AHdwWJuWe7Wwn8a8psa+pdbPvMjT0tft8ubw8eru8OPr7rW+w5efoo6Ulqawt8XO1L/IzLi+va+2oqGnkwCgl43Gxr7gusfwss++pKre4N/c7/PJ5uvJ4+nG3OXc3uLS19vT2NrP0tbFyc3Gy87Bw8i7u7K7vYSytYARHLDtGiG4swAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"brand-recognizability\"\n        title=\"brand-recognizability\"\n        src=\"/static/19d1ef3928b7e2db001127b6dfa1ef22/01e7c/brand-recognizability.png\"\n        srcset=\"/static/19d1ef3928b7e2db001127b6dfa1ef22/01e7c/brand-recognizability.png 512w\"\n        sizes=\"(max-width: 512px) 100vw, 512px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Image Source: <a rel=\"nofollow\" href=\"https://liveinspiredmag.com/2020/10/01/5-tips-to-make-your-digital-brand-more-recognizable/\">Live Inspired Mag</a></p>\n<h2 id=\"what-is-brand-recognizability\" style=\"position:relative;\"><a href=\"#what-is-brand-recognizability\" aria-label=\"what is brand recognizability permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is Brand Recognizability?</h2>\n<p>Brands are constantly competing to stand out and attract larger clientele. Marketers and advertisers develop new strategies to increase brands' visibility and make them recognizable.</p>\n<p>Today, it is extremely easy to promote brands and sell products on different online platforms, but the problem lies in uniqueness and the possibility of staying in people’s memory.</p>\n<p>We find a plethora of brand promotions on social media, news, YouTube videos, films, but sometimes they are annoying. Thus, instead of getting interested in a brand, our brain creates negative associations with it, especially when the product or service is too strange and unnecessary for us.</p>\n<p>Therefore, <a href=\"https://www.loginradius.com/blog/fuel/top-5-marketing-strategies-to-power-up-your-business/\">brand promotions</a> should be targeted at specific groups of consumers, taking into account not only their needs and preferences but something more sophisticated - their identities.</p>\n<h2 id=\"consumer-identity-importance\" style=\"position:relative;\"><a href=\"#consumer-identity-importance\" aria-label=\"consumer identity importance permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Consumer Identity Importance</h2>\n<p>There’s no doubt that purchases consumers make are directly influenced by the image individuals have of themselves. People have these images in their heads, and they determine the choice of the brand.</p>\n<p>The things we buy help us to better express who we are. Sounds fantastic, isn’t it? But <a rel=\"nofollow\" href=\"https://www.elon.edu/u/academics/communications/journal/wp-content/uploads/sites/153/2017/06/01IlawEJFall14.pdf\">many researchers</a> in the field of marketing and psychology prove the credibility of this connection between self-and product-image.</p>\n<p>Consumers try to express their internal feelings with external means such as brands. We can conclude that purchase is the form of self-expression, and brand is the symbol of our inner self.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 512px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 66.796875%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAANCAIAAAAmMtkJAAAACXBIWXMAAAsTAAALEwEAmpwYAAADIElEQVQozxWL3U8aBwDA76lZlr4ta7bHJv0Lara+tSZr03TNlrp+ZIttbf2oAgrDIlKRUrCK3s67Q+BODiiCeCAf98XBwYHIp8eHQmeyRmey1Ji2pk1rfOge9rLS5Jff7+kH9A3cZmPhBEtNGbX37v7S3fubH0Mt46pIOFLf3H51+P7th+M3746az1tLDijDxTaKeamYr1WKUjkPsJFQkokhsOVa1w8j8vu37tyUP+h5hmNUjPIHyHA7XLxQquzs7DpQkCG9DanSPhtSuVYuAn6vJ7jsh6DZc51nvz/fceXa5RGd9vETYz6XM5hNY/rJAZnMaDYq1MMb1ebe37tb9dpmVWo1Gq1GHaDIABNezcQ5gYn5fd5QJHplcPDUmW/SguBdCc7Ajqdz827/SufVi0Wp9e9//7/cP6iWi7VKqW0gwzIixwocnebZg4NDZq3UNfH45Ldf4gS2Xq6a5lA+XXD5ljsufJcvbb7/8PHo+GOzXm9IG22A+GooQUV5KlKtbr7Y2TfCSC+Cnfj6iyG1orn9AnZ4/to9kKl//+r0qZ9vdOl1hnyuvP281azX/tzaAkjfszY8x+6/PqJp3mSZHgXBG93XJ40ThYpEeMm9fw5R2+LAg/4Ll87/dP1HJ2Zv1qpSqSCVigBmhXEb6iEW02LO4/a6MJvLYbUhkHzo9uzMk0nTFMPy2VyFZjMxipdK+fZWLqyXCuvF3BqAgBYrNGeFwAUIdOMOn5tw4XZ8AWkb/WNmaFjudDrpMJlMJCuVaj6XzaZTmVQqlxHX0iKAgqBtHsKsCOGwexYxv8e1RCx6CTwSXMGtUPedWwEylOJZMRkXk3xGSGZTgphIJFkmTlOAxWyCLDMIOAeDszZk3o4idgTGF6wE5liAoWHZveAKmU2lhEQinRREQVgTsxkhleA4JhoFDI/G9boxlVKmUAxqHqr0Oq1hQmc06KfN5kdaTU/PrzYUXiVD0XCEjsaoSJSjGZaiPztKA2rl8NioSjUiVyoG1Uq5ZlSp04xqH6omxrUatbK/7+701FOn3enECbfLHfAt+72+YCBIhamAL/AJ87TdMKrEUoAAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"brand-recognizability\"\n        title=\"brand-recognizability\"\n        src=\"/static/8bda68ce49b91c3eee1b76b2e13d6d90/01e7c/brand-recognizability2.png\"\n        srcset=\"/static/8bda68ce49b91c3eee1b76b2e13d6d90/01e7c/brand-recognizability2.png 512w\"\n        sizes=\"(max-width: 512px) 100vw, 512px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Image Source: <a rel=\"nofollow\" href=\"https://xo.ua/kuda-poehat-na-shopping-top-5-napravlen/\">XO</a></p>\n<h2 id=\"how-brand-recognizability-works-for-different-consumer-identities\" style=\"position:relative;\"><a href=\"#how-brand-recognizability-works-for-different-consumer-identities\" aria-label=\"how brand recognizability works for different consumer identities permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How Brand Recognizability Works for Different Consumer Identities</h2>\n<p>There are many elements influencing recognizability success and many still believe that it's the brand logo that determines success. However, experts argue against this idea and suggest new ways of making the brand appealing and recognizable.</p>\n<p>In this article, we’ll try to figure out what brand recognizability is made up of and how it is connected to <a href=\"https://www.loginradius.com/blog/identity/digital-transformation-consumer-iam/\">consumer identity</a>. Let’s move on to discover how it works.</p>\n<h3 id=\"image-oriented-consumers\" style=\"position:relative;\"><a href=\"#image-oriented-consumers\" aria-label=\"image oriented consumers permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Image-Oriented Consumers</h3>\n<p>The visual component is integral for brand recognizability, making it visible and popular. As a rule, it’s simple and memorable, allowing a brand to stand out from the crowd of powerful competitors.</p>\n<p>This type of consumer pays attention to symbols and color, and it was found out that a consistent color palette on the logo increases brand recognizability by <a rel=\"nofollow\" href=\"https://www.smallbizgenius.net/by-the-numbers/branding-statistics/#gref\">80%</a>.</p>\n<p>A logo is the company's face, and a considerable number of consumers recognize a brand visually. Thus, if the brand logo corresponds to their personal image of beauty and attractiveness, they will choose you.</p>\n<h3 id=\"audio-oriented-consumers\" style=\"position:relative;\"><a href=\"#audio-oriented-consumers\" aria-label=\"audio oriented consumers permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Audio-Oriented Consumers</h3>\n<p>Many people better perceive information aurally, meaning that customers easily recognize a brand by melody or song accompanying its advertising.</p>\n<p>Audio-oriented consumers better recognize short catchy melodies of high quality. Provide consumers with a great audio experience and work on sound clearness and recognizability. It must be unique or resemble popular songs, but the main task is to trigger in their memory your brand.</p>\n<h3 id=\"text-oriented-consumers\" style=\"position:relative;\"><a href=\"#text-oriented-consumers\" aria-label=\"text oriented consumers permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Text-Oriented Consumers</h3>\n<p>Statistics say that <a rel=\"nofollow\" href=\"https://www.smallbizgenius.net/by-the-numbers/branding-statistics/#gref\">82% of consumers</a> feel more positive about a brand after reading meaningful content. If you want to increase brand recognizability, pay attention to customers’ preferences and publish customizable content regularly, whether that’s through blog articles or <a href=\"https://www.visme.co/newsletter-maker\">newsletters</a>.</p>\n<p>With <a href=\"https://www.essaytigers.com/write-my-essay\">Write my essay</a>, brands can improve their visibility and convey unique messages to existing and potential consumers.</p>\n<h3 id=\"emotion-oriented-consumers\" style=\"position:relative;\"><a href=\"#emotion-oriented-consumers\" aria-label=\"emotion oriented consumers permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Emotion-Oriented Consumers</h3>\n<p>Emotions mean a lot to many of us, but the emotion-oriented type of consumers find this criterion crucial when recognizing a brand. There is a survey indicating that <a rel=\"nofollow\" href=\"https://www.customerthermometer.com/consumers-connecting-with-companies\">more than 65% of respondents</a> were emotionally connected to a brand. They felt like the company or business cared about people like them. People feel interested, optimistic, and joyous when they are connected to a brand.</p>\n<h2 id=\"conclusion\" style=\"position:relative;\"><a href=\"#conclusion\" aria-label=\"conclusion permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Conclusion</h2>\n<p>Now you understand the concept of <a href=\"https://www.loginradius.com/blog/growth/does-your-website-imagery-reflect-your-brand-identity/\">brand recognizability</a> and its bounds with customer identity. We explored four types of consumer identities you should pay attention to and defined their main preferences.</p>\n<p>Brand recognizability is based on the self-perceptions of potential consumers, and you should target their self-concepts properly. These findings can help you build stronger connections with consumers and increase your brand's success.\n<a href=\"https://www.loginradius.com/book-a-demo/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABdElEQVQY002RO0/CUBzFG6PtbZWHCAmRmBB5P8vDII9SSC0omog4oAEGjZMO6OKEuLjoJ2Fx0cSBwUQnXZxcHPwux38LJA7nNvfec8+5v1tOCCiwpbbhye2BxbYgBMtgIRVioDRRsARGXxZUzLlEHmehBaesQ4rrEMPViYf2DR9nDGKkChbVICVqsMt1WJI1sHCFwhUsUIFohJH49TxECvRUjhDW2mAbB5iP6hB8hUkhiRPN5KIZYJdrsEYrcCSpmQqMm6/m9ylUhSulY7N5ivROB3L9GOlGF3Ktbc4zuz341UPw/uIk0ESbBjoSGlYIx8BfzjSwVmyCEYEUUmCPa3Bnd+hwC75yC95S05SxbolU/iEbOCFCpDexEfIioTNCNd6Tp6IlMnNuGeeDe3z//OLx5RWj5zFGT2O8fXxh/P4Ja6w6vSEFCnTIlW2YiDzhzX7ATFKojDlvjpBPcDF4QPdyiG5/iE7/BmfXd+hd3VKpCoG8fzxWw2+c+yTpAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"book-a-demo-Consultation\"\n        title=\"book-a-demo-Consultation\"\n        src=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png\"\n        srcset=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/a6d36/book-a-demo-loginradius.png 650w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png 768w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/63ff0/book-a-demo-loginradius.png 2887w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"August 31, 2021","updated_date":null,"description":"People are more likely to pay attention to your offer if they recognize your brand among hundreds of others and consider it trustworthy.","title":"How Consumer Identity Influence Brand Recognizability","tags":null,"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/c03fac2de467066d44b4061099e705cf/eec3f/brand-identity.jpg","srcSet":"/static/c03fac2de467066d44b4061099e705cf/f836f/brand-identity.jpg 200w,\n/static/c03fac2de467066d44b4061099e705cf/2244e/brand-identity.jpg 400w,\n/static/c03fac2de467066d44b4061099e705cf/eec3f/brand-identity.jpg 612w","sizes":"(max-width: 612px) 100vw, 612px"}}},"author":{"id":"Conrad Sturdy","github":null,"avatar":null}}}},{"node":{"excerpt":"We all have witnessed the sudden paradigm shift where movie theatres have been replaced by OTT (over the top) platforms and books and…","fields":{"slug":"/identity/poor-login-concurrency-impact-ott-platforms/"},"html":"<p>We all have witnessed the sudden paradigm shift where movie theatres have been replaced by OTT (over the top) platforms and books and magazines by e-books amid the global pandemic. </p>\n<p>As social isolation continues to be the new normal amidst remote working and social distancing measures, the popularity of OTT streaming apps – both video and audio has jumped exponentially to meet the surging demand. </p>\n<p>The latest stats reveal that the number of users in the OTT Video segment is expected to reach <a href=\"https://www.statista.com/outlook/amo/media/tv-video/ott-video/india\">462.7 million by 2025.</a></p>\n<p>However, with the increase in subscriptions and the number of audiences online, several underlying threats have severely impacted the OTT businesses. </p>\n<p>One such issue is poor login concurrency, which can lead to severe identity theft issues for individuals and OTT platforms. </p>\n<p>Login concurrency refers to a situation where a user is logged into multiple devices from a single identity. </p>\n<p>Login concurrency can be pretty risky as two or more users using the same credentials have access to resources and critical information, and it becomes difficult for service providers to identify the unauthorized user that may have wrong intentions. </p>\n<p>Let’s understand this in-depth and understand the harmful consequences of poor concurrency management for OTT platforms and how OTT platform providers can leverage identity management. </p>\n<h2 id=\"what-is-a-concurrent-login\" style=\"position:relative;\"><a href=\"#what-is-a-concurrent-login\" aria-label=\"what is a concurrent login permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is a Concurrent Login?</h2>\n<p>Concurrent login is a situation where a user is logged into a network through a single identity from multiple devices and has access to resources and information. </p>\n<p>The user can be a single individual or two or even multiple individuals using the same identity on a platform to access services from different locations or devices. </p>\n<p>There can be multiple reasons for concurrent login: the user’s negligence, poor session management by vendors, or a sneak into a consumer’s identity. </p>\n<h2 id=\"how-concurrent-login-affects-ott-platform\" style=\"position:relative;\"><a href=\"#how-concurrent-login-affects-ott-platform\" aria-label=\"how concurrent login affects ott platform permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How Concurrent Login Affects OTT Platform?</h2>\n<p>Various live streaming cloud OTT providers face challenges where concurrent login issues hamper user experience and eventually become a threat. </p>\n<p>Cybercriminals are exploiting consumer identities of OTT subscribers and are accessing critical consumer information and trying to exploit business data for diverse purposes. </p>\n<p>Moreover, the most subscribed OTT platform globally has reported users sharing access credentials beyond permitted limits with their friends and families, which is the leading cause of revenue loss. </p>\n<p>Thus, to overcome the situation where concurrent login is exploited in OTT services, there needs to be a stringent mechanism that provides real-time insights regarding a user’s login details and adequately manages login sessions for each sign-in and sign-out. </p>\n<p>Here’s where the role of a <a href=\"https://www.loginradius.com/\">robust CIAM</a>  (Consumer Identity and Access Management) comes into play. </p>\n<p><a href=\"https://www.loginradius.com/resource/ciam-101/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABiUlEQVQY002Qy0uiURjGP5pK/YxoMEgz7Z6Wt3BETdPS+Saj6LqqTAjaVVib2TltZlX/SK2KWhQVVDQw0KZlm4FZddk0A0IG2eLX8YwxHXg4nPO+5/m9z1EMXf2UpJbk6MfoiEmp5TvDO+k7IqiuJPXhKUzezxjcGnrnAPrO6L+62BXZLAwsviSNnkFMjggmZxRbYBizT6PONfj/gTA0ejTsiVlc2gxqcBqdZwhV1PVlqPJGt3gT2H0JdFYvVRY3antYqtYZKzdHpbH5UwqLf4gGf4qW0Ci24Ai1AqorQxVJF1Ed0TG88QlcsXF64pP4U3NEJhZo6NVkcyl+dXuEj54kTcLIKozsfWOYRRKdmPwthZywsjXM7tE5L8UiN7d33Nzd8/DnL8/PRb6kV6hoDqJY/SznNrn+9Zudw1O29o7Y3j/m4vKKkx+X1LkTEqio4v8+tIY4OPtJaeXzeQqPjzwVCvI8nMmi2AJUtoUJjS+wlNtgfnWduWyOdPYbi1+/k1lbp6Y7LpO8AkyM3jCYYC4zAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"DS-CIAM\"\n        title=\"DS-CIAM\"\n        src=\"/static/07ffa60c01ac470ddc137679ce2cc238/e5715/DS-CIAM101.png\"\n        srcset=\"/static/07ffa60c01ac470ddc137679ce2cc238/a6d36/DS-CIAM101.png 650w,\n/static/07ffa60c01ac470ddc137679ce2cc238/e5715/DS-CIAM101.png 768w,\n/static/07ffa60c01ac470ddc137679ce2cc238/63ff0/DS-CIAM101.png 2887w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<p>Let’s dig deeper into this. </p>\n<h2 id=\"poor-session-management-by-ott-platforms\" style=\"position:relative;\"><a href=\"#poor-session-management-by-ott-platforms\" aria-label=\"poor session management by ott platforms permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Poor Session Management by OTT Platforms</h2>\n<p>If a user interacts with a platform and makes several interactions, the web application issues a session ID. This session ID is issued whenever a user logs in and records all their interactions.</p>\n<p>It is through this ID that the application communicates with users and responds to all their requests.</p>\n<p>The <a href=\"https://www.loginradius.com/resource/owasp-top-10-web-application-vulnerabilities-list-for-every-developer/\">OWASP broken authentication</a> recommendations state that this session ID is equivalent to the user’s original login credentials. If hackers steal a user’s session ID, they can sign in by impersonating their identity. This is known as session hijacking.</p>\n<p>The following points list the scenarios that can cause broken authentication.</p>\n<ol>\n<li>Weak usernames and passwords.</li>\n<li>Session fixation attacks.</li>\n<li>URL rewriting.</li>\n<li>Consumer identity details aren't protected when stored.</li>\n<li>Consumer identity details are transferred over unencrypted connections.</li>\n</ol>\n<h2 id=\"impact-of-broken-authentication-and-session-management\" style=\"position:relative;\"><a href=\"#impact-of-broken-authentication-and-session-management\" aria-label=\"impact of broken authentication and session management permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Impact of Broken Authentication and Session Management</h2>\n<p>If a hacker successfully logs in by stealing a user’s credentials using any of the above-mentioned broken authentication techniques, they can misuse their privileges and impact the company's sustainability.</p>\n<p>Cybercriminals can have various intentions of <a href=\"https://www.loginradius.com/blog/identity/2021/01/7-web-app-sec-threats/\">hijacking a user’s web application</a>, such as:</p>\n<ul>\n<li>Stealing critical business data</li>\n<li>Identity theft</li>\n<li>Sending fraud calls or emails.</li>\n<li>Creating malicious software programs for disrupting networks.</li>\n<li>Cyber terrorism</li>\n<li>Cyberstalking</li>\n<li>Selling illegal items on the dark web</li>\n<li>Sharing fake news on social media</li>\n</ul>\n<p>In short, hackers can use broken authentication attacks and session hijacking to gain access to the system by forging session data, such as cookies, and stealing login credentials.</p>\n<p>Thus, it would be best to never compromise with your web applications' security.</p>\n<h2 id=\"how-loginradius-protects-against-broken-authentication\" style=\"position:relative;\"><a href=\"#how-loginradius-protects-against-broken-authentication\" aria-label=\"how loginradius protects against broken authentication permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How LoginRadius Protects Against Broken Authentication</h2>\n<p>LoginRadius has been at the forefront of offering a multilevel security web app environment. Here is how LoginRadius applications protect against broken authentication:</p>\n<ul>\n<li><a href=\"https://www.loginradius.com/blog/engineering/lets-encrypt-with-ssl-certificates/\">End-to-end SSL encryption</a> for data in transit and ensures protection against unauthorized access.</li>\n<li>Multi-factor authentication eliminates the risk of being exposed to attacks.</li>\n<li>One-way hashing of passwords considerably improves consumer security.</li>\n<li>A single sign-on (SSO) solution allows users to use the same profile to log in everywhere.</li>\n</ul>\n<h2 id=\"final-thoughts\" style=\"position:relative;\"><a href=\"#final-thoughts\" aria-label=\"final thoughts permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Final Thoughts</h2>\n<p>With increasing OTT subscriptions and user expectations, OTT platforms need to gear up to deliver a flawless user experience in a way that doesn’t hamper their overall security mechanism quickly.</p>\n<p>Adding stringent layers of security through a robust CIAM solution becomes the immediate need of the hour for OTT platforms facing concurrent login issues that affect their brand reputation and overall business revenues.  </p>\n<p><a href=\"https://www.loginradius.com/book-a-demo/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsTAAALEwEAmpwYAAABbElEQVQY0zVQO0/CUBQmaihthUbRhPhCAlhKEXlE3s+CCEaBwQF10riQODkwaFyMMcTFwR9gjBvRSeKko4NxcfD/fJ57C8PJbc53+r0soj8Lm5qHbS0HW6AIwZ+DXSvAESxBpJ3MMLph3+xWDlUwm2jCGa5A0isQtRIkhrH/CbdwwkDBHAJlGodexsy6wUkduknMBCfdmxCCBhZKHailfUxGm5jQKphaTUDwmaIWdigyF1oZsm7AFavBRspKuMpdTJMQO5yLbCHVPkG0cYRY4xAR9tbp3T5AsnUMT7YFqzdtOuQOSFmiyMupXUihKuzk0hWvc0xgUYlYod18tAZPrg13eg8rNIuJHSihMtVUHEUe51cLPJ5zo8oJJRJQRnHlQB6WpTjOru7w/fuH59d3PL0M8Th4w+fXDwbDD16R1ZsxCcelsyUbidQEEuC9ECap1J8nCaPTRe/2Ad3LvjkXfZxf3+O0d8P7FnwZ/AMzEsMp2f6LdQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"book-a-free-demo-loginradius\"\n        title=\"book-a-free-demo-loginradius\"\n        src=\"/static/779ad148d33fb1ecfd80cc41f1a94ef3/e5715/Book-a-free-demo-request-1024x310.png\"\n        srcset=\"/static/779ad148d33fb1ecfd80cc41f1a94ef3/a6d36/Book-a-free-demo-request-1024x310.png 650w,\n/static/779ad148d33fb1ecfd80cc41f1a94ef3/e5715/Book-a-free-demo-request-1024x310.png 768w,\n/static/779ad148d33fb1ecfd80cc41f1a94ef3/2bef9/Book-a-free-demo-request-1024x310.png 1024w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"August 31, 2021","updated_date":null,"description":"With the increase in subscriptions and the number of audiences online, several underlying threats have severely impacted the OTT businesses. One such issue is poor login concurrency. Learn how login concurrency is affecting OTT platforms and how they can overcome this dilemma.","title":"How Poor Login Concurrency can Impact OTT Platforms' Business","tags":["data security","ciam solution","broken authentication"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.8867924528301887,"src":"/static/67d644bfd92d905d271f935ae6eca665/14b42/poor-login-concurrency-impact-ott-platforms-cover.jpg","srcSet":"/static/67d644bfd92d905d271f935ae6eca665/f836f/poor-login-concurrency-impact-ott-platforms-cover.jpg 200w,\n/static/67d644bfd92d905d271f935ae6eca665/2244e/poor-login-concurrency-impact-ott-platforms-cover.jpg 400w,\n/static/67d644bfd92d905d271f935ae6eca665/14b42/poor-login-concurrency-impact-ott-platforms-cover.jpg 800w,\n/static/67d644bfd92d905d271f935ae6eca665/16310/poor-login-concurrency-impact-ott-platforms-cover.jpg 1024w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.jpg"}}}}]},"markdownRemark":{"excerpt":"Identity is evolving, and developers are at the forefront of this transformation. Every day brings a new learning—adapting to new standards…","fields":{"slug":"/identity/developer-first-identity-provider-loginradius/"},"html":"<p>Identity is evolving, and developers are at the forefront of this transformation. Every day brings a new learning—adapting to new standards and refining approaches to building secure, seamless experiences.</p>\n<p>We’re here to support developers on that journey. We know how important simplicity, efficiency, and well-structured documentation are when working with identity and access management solutions. That’s why we’ve redesigned the <a href=\"https://www.loginradius.com/\">LoginRadius website</a>—to be faster, more intuitive, and developer-first in every way.</p>\n<p>The goal? Having them spend less time searching and more time building.</p>\n<h2 id=\"whats-new-and-improved-on-the-loginradius-website\" style=\"position:relative;\"><a href=\"#whats-new-and-improved-on-the-loginradius-website\" aria-label=\"whats new and improved on the loginradius website permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What’s New and Improved on the LoginRadius Website?</h2>\n<p>LoginRadius’ vision is to give developers a product that simplifies identity management so they can focus on building, deploying, and scaling their applications. To enhance this experience, we’ve spent the last few months redesigning our interface— making navigation more intuitive and reassuring that essential resources are easily accessible.</p>\n<p>Here’s a closer look at what’s new and why it’s important:</p>\n<h3 id=\"a-developer-friendly-dark-theme\" style=\"position:relative;\"><a href=\"#a-developer-friendly-dark-theme\" aria-label=\"a developer friendly dark theme permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>A Developer-Friendly Dark Theme</h3>\n<p><img src=\"/f46881583c7518a93bb24e94c32320de/a-developer-friendly-dark-theme.webp\" alt=\"This image shows how LoginRadius offers several authentication methods like traditional login, social login, passwordless login, passkeys and more in a dark mode.\">    </p>\n<p>Developers spend long hours working in dark-themed IDEs and terminals, so we’ve designed the LoginRadius experience to be developer-friendly and align with that preference.</p>\n<p>The new dark mode reduces eye strain, enhances readability, and provides a seamless transition between a coding environment and our platform. Our new design features a clean, modern aesthetic with a consistent color scheme and Barlow typography, ensuring better readability. High-quality graphics and icons are thoughtfully placed to enhance the content without adding visual clutter.</p>\n<p>So, whether you’re navigating our API docs or configuring authentication into your system, our improved interface will make those extended development hours more comfortable and efficient.</p>\n<h3 id=\"clear-categorization-for-loginradius-capabilities\" style=\"position:relative;\"><a href=\"#clear-categorization-for-loginradius-capabilities\" aria-label=\"clear categorization for loginradius capabilities permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Clear Categorization for LoginRadius Capabilities</h3>\n<p><img src=\"/e5358b82be414940f3fb146013845933/capabilities.webp\" alt=\"This image shows a breakdown of all the LoginRadius CIAM capabilities, including authentication, security, UX, scalability and multi-brand management.\"></p>\n<p>We’ve restructured our website to provide a straightforward breakdown of our customer identity and access management platform capabilities, helping you quickly find what you need:</p>\n<ul>\n<li>Authentication: Easily understand <a href=\"https://www.loginradius.com/blog/identity/authentication-option-for-your-product/\">how to choose the right login method</a>, from traditional passwords and OTPs to social login, federated SSO, and passkeys with few lines of code.</li>\n<li>Security: Implement no-code security features like bot detection, IP throttling, breached password alerts, DDoS protection, and adaptive MFA to safeguard user accounts.</li>\n<li>User Experience: Leverage AI builder, hosted pages, and drag-and-drop workflows to create smooth, branded sign-up and login experiences.</li>\n<li>High Performance &#x26; Scalability: Confidently scale with sub-100ms API response times, 100% uptime, 240K+ RPS, and 28+ global data center regions.</li>\n<li>Multi-Brand Management: Efficiently manage multiple identity apps, choosing isolated or shared data stores based on your brand’s unique needs.</li>\n</ul>\n<p>This structured layout ensures you can quickly understand each capability and how it integrates into your identity ecosystem.</p>\n<h3 id=\"developer-first-navigation\" style=\"position:relative;\"><a href=\"#developer-first-navigation\" aria-label=\"developer first navigation permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Developer-First Navigation</h3>\n<p><img src=\"/a8c155c2b6faf3d5f4b4de4e2b14d763/developers-menu.webp\" alt=\"This image shows the LoginRadius menu bar, highlighting the developer dropdown.\">   </p>\n<p>We’ve been analyzing developer workflows to identify how you access key resources. That’s why we redesigned our navigation with one goal in mind: to reduce clicks and make essential resources readily available.</p>\n<p>The new LoginRadius structure puts APIs, SDKs, and integration guides right at the menu bar under the Developers dropdown so you can get started faster. Our Products, Solutions, and Customer Services are also clearly categorized, helping development teams quickly find the right tools and make informed decisions.</p>\n<h3 id=\"quick-understanding-of-integration-benefits\" style=\"position:relative;\"><a href=\"#quick-understanding-of-integration-benefits\" aria-label=\"quick understanding of integration benefits permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Quick Understanding of Integration Benefits</h3>\n<p><img src=\"/b2f9a964a2da0ea83e2f8596b833bba7/we-support-your-tech-stack.webp\" alt=\"This image shows a list of popular programming languages and frameworks offered by LoginRadius.\"></p>\n<p>Developers now have a clear view of the tech stack available with LoginRadius, designed to support diverse business needs.</p>\n<p>Our platform offers pre-built SDKs for Node.js, Python, Java, and more, making CIAM integration seamless across popular programming languages and frameworks.</p>\n<h2 id=\"over-to-you-now\" style=\"position:relative;\"><a href=\"#over-to-you-now\" aria-label=\"over to you now permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Over to You Now!</h2>\n<p>Check out our <a href=\"https://www.loginradius.com/\">revamped LoginRadius website</a> and see how the improved experience makes it easier to build, scale, and secure your applications.</p>\n<p>Do not forget to explore the improved navigation and API documentation, and get started with our free trial today. We’re excited to see what you’ll build with LoginRadius!</p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"February 21, 2025","updated_date":null,"description":"LoginRadius’ vision is to give developers a product that simplifies identity management so they can focus on building, deploying, and scaling their applications. To enhance this experience, we’ve redesigned our website interface, making navigation more intuitive and reassuring that essential resources are easily accessible.","title":"Revamped & Ready: Introducing the New Developer-First LoginRadius Website","tags":["Developer tools","API","Identity Management","User Authentication"],"pinned":true,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.7857142857142858,"src":"/static/80b4e4fbe176a10a327d273504607f32/58556/hero-section.webp","srcSet":"/static/80b4e4fbe176a10a327d273504607f32/61e93/hero-section.webp 200w,\n/static/80b4e4fbe176a10a327d273504607f32/1f5c5/hero-section.webp 400w,\n/static/80b4e4fbe176a10a327d273504607f32/58556/hero-section.webp 800w,\n/static/80b4e4fbe176a10a327d273504607f32/99238/hero-section.webp 1200w,\n/static/80b4e4fbe176a10a327d273504607f32/7c22d/hero-section.webp 1600w,\n/static/80b4e4fbe176a10a327d273504607f32/1258b/hero-section.webp 2732w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.jpg"}}}},"pageContext":{"limit":6,"skip":396,"currentPage":67,"type":"///","numPages":161,"pinned":"ee8a4479-3471-53b1-bf62-d0d8dc3faaeb"}},"staticQueryHashes":["1171199041","1384082988","2100481360","23180105","528864852"]}