{"componentChunkName":"component---src-templates-blog-list-template-js","path":"/71","result":{"data":{"allMarkdownRemark":{"edges":[{"node":{"excerpt":"Prerequisite You should be familiar with Python and Django, a Python framework. Overview First, we briefly introduce LoginRadius, what it is…","fields":{"slug":"/engineering/guest-post/implementing-registration-and-authentication-in-django-using-loginradius/"},"html":"<h2 id=\"prerequisite\" style=\"position:relative;\"><a href=\"#prerequisite\" aria-label=\"prerequisite 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>Prerequisite</h2>\n<p>You should be familiar with Python and Django, a Python framework.</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, we briefly introduce LoginRadius, what it is, and some benefits of using it; then, will move over to see how to implement user registration and authentication in Django using LoginRadius.</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<p><strong>What is LoginRadius?</strong></p>\n<p>LoginRadius is a SaaS-based CIAM platform. It offers simplified, robust features to manage customer identity, privacy, and access -- allowing developers and businesses to provide a seamless and secure digital experience for their customers.</p>\n<p>The developer-friendly CIAM provides a comprehensive set of APIs for registration, authentication, identity verification, single sign-on (SSO), and more.</p>\n<p><strong>Why should we use LoginRadius?</strong></p>\n<ul>\n<li>Dynamically scales to accommodate user growth.</li>\n<li>Offers built-in security features to enhance user account security and manage user data securely.</li>\n<li>Built-in features that help achieve compliance with privacy regulations.</li>\n<li>Advanced login options like Social SSO and Passwordless Login to enhance user experience.</li>\n</ul>\n<p>LoginRadius offers many more benefits than above. You can <a href=\"https://www.loginradius.com/resources/#data-sheet\">learn more here</a>.</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<p>To get started with LoginRadius, you have to first <a href=\"https://accounts.loginradius.com/auth.aspx?return_url=https://dashboard.loginradius.com/login&#x26;action=register\">create a free developer account</a>.</p>\n<p>If you already have an account, log into your <a href=\"https://accounts.loginradius.com/auth.aspx?return_url=https://dashboard.loginradius.com/login\">LoginRadius dashboard</a>\nYou will see a page like this:</p>\n<p><img src=\"https://paper-attachments.dropbox.com/s_06CCF8584138C77AD580AFE76E986CC1E8C4C360158F4A6548D0F9EAC304864E_1626849810764_Screenshot+34.png\" alt=\"Dashboard\"></p>\n<p>When you create an account, LoginRadius sets up a free app for you. This is the app you are going to integrate with Django. Here my app name is \"tammibriggs\".</p>\n<p>Click on your app, and you will see a page like this:</p>\n<p><img src=\"https://paper-attachments.dropbox.com/s_06CCF8584138C77AD580AFE76E986CC1E8C4C360158F4A6548D0F9EAC304864E_1626849852750_Screenshot+36.png\" alt=\"LoginRadius app\"></p>\n<p>There is one more thing LoginRadius automatically creates for you: an <a href=\"https://www.loginradius.com/developers/\">Auth Page (IDX)</a>.</p>\n<p>At this point, you know what LoginRadius is, its benefits, and how to get started with LoginRadius. Let’s see how to integrate LoginRadius with a Django application.</p>\n<h2 id=\"integrating-loginradius-with-a-django-application\" style=\"position:relative;\"><a href=\"#integrating-loginradius-with-a-django-application\" aria-label=\"integrating loginradius with a django 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>Integrating LoginRadius with a Django Application</h2>\n<p>This section covers:</p>\n<ul>\n<li>Installing dependencies.</li>\n<li>Setting up a demo application, in which you will integrate LoginRadius.</li>\n<li>Also, integrating LoginRadius with a Django demo application.</li>\n</ul>\n<blockquote>\n<p>You must have python installed, and the minimum supported version is 2.7.</p>\n</blockquote>\n<p><strong>Getting API Credentials</strong></p>\n<p>Before using any of the APIs that LoginRadius provides, you need to get your <strong>App Name</strong>, <strong>API Key</strong>, and <strong>API Secret</strong>.\nOn your LoginRadius app, navigate to <a href=\"https://dashboard.loginradius.com/configuration\">Configuration > API Credentials</a></p>\n<p><img src=\"https://paper-attachments.dropbox.com/s_06CCF8584138C77AD580AFE76E986CC1E8C4C360158F4A6548D0F9EAC304864E_1626849573473_Screenshot+38.png\" alt=\"API credentials\"></p>\n<p>You will find your API key under the <strong>API Key and Secret</strong> subsection.</p>\n<p><img src=\"https://paper-attachments.dropbox.com/s_06CCF8584138C77AD580AFE76E986CC1E8C4C360158F4A6548D0F9EAC304864E_1626849474291_Screenshot+44_LI.jpg\" alt=\"API key and secret\"></p>\n<p><strong>Whitelist your Domain</strong></p>\n<p>For security reasons, LoginRadius processes the API calls that are received from the whitelisted domains.\nLocal domains (<code>http://localhost</code> and <code>http://127.0.0.1</code>) are whitelisted by default. This means you don't have to worry about whitelisting your domain if you are running your application on Django's development server. But in a production environment, you definitely have to whitelist our domain.\nTo whitelist your domain, in your LoginRadius Dashboard, navigate to <a href=\"https://dashboard.loginradius.com/configuration\">Configuration > Whitelist Your Domain</a> and add your domain name.</p>\n<p><img src=\"https://paper-attachments.dropbox.com/s_06CCF8584138C77AD580AFE76E986CC1E8C4C360158F4A6548D0F9EAC304864E_1626849403941_Screenshot+41.png\" alt=\"Whitelist your domain\"></p>\n<p><strong>Installation of Dependencies</strong></p>\n<p>You need to install the LoginRadius Python SDK. It provides functionalities that allow Python programs to communicate with LoginRadius APIs.\nOpen VS Code, PyCharm, or any other editor you use in general.\nIn the terminal, type:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"plaintext\" data-index=\"0\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">$ pip install LoginRadius-v2 requests cryptography pbkdf2</span></code></pre>\n<p>These are the dependencies you need to integrate LoginRadius into your Django application.</p>\n<p><strong>Setting up Django</strong></p>\n<ol>\n<li>Install Django.</li>\n<li>Create a new project.</li>\n<li>Create an app inside the project.</li>\n<li>Migrate your project.</li>\n<li>Create a <code>urls.py</code> file in your app.</li>\n</ol>\n<p>You can accomplish all this with the following commands in your terminal:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"plaintext\" data-index=\"1\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">$ python -m pip install django</span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\">$ django-admin startproject radiusAuth</span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\">$ cd radiusAuth</span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\">$ python manage.py startapp radiusApp</span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\">$ python manage.py migrate</span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\">$ cd radiusApp</span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\">$ type nul &gt; urls.py</span></code></pre>\n<p>Here, the project name is <strong>radiusAuth</strong> and the app <strong>radiusApp</strong> but you can use any name you want.\nYou now have a <strong>radiusAuth</strong> project and <strong>radiusApp</strong> app setup.</p>\n<p><strong>Configure Project</strong></p>\n<p>You need to tell Django about the app you created and the location of the app's <code>urls.py</code> file.\nFirst, let Django know the location of your app.\nIn your <strong>radiusAuth</strong> project navigate to <em>radiusAuth/settings.py</em>, modify the <code>INSTALLED_APPS</code>:</p>\n<p><code>radiusAuth/settings.py</code></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"python\" data-index=\"2\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">INSTALLED_APPS = [</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk8\">&quot;django.contrib.admin&quot;</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk8\">&quot;django.contrib.auth&quot;</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk8\">&quot;django.contrib.contenttypes&quot;</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk8\">&quot;django.contrib.sessions&quot;</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk8\">&quot;django.contrib.messages&quot;</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk8\">&quot;django.contrib.staticfiles&quot;</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk8\">&quot;radiusApp&quot;</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">]</span></span></code></pre>\n<p>Once you have added it, go over to the <code>urls.py</code> file in the same directory, modify the <code>urlpatterns</code> and include the apps url location.</p>\n<p><code>radiusAuth/urls.py</code></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"python\" data-index=\"3\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk15\">from</span><span class=\"mtk1\"> django.contrib </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> admin</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">from</span><span class=\"mtk1\"> django.urls </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> path, include</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">urlpatterns = [</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    path(</span><span class=\"mtk8\">&#39;admin/&#39;</span><span class=\"mtk1\">, admin.site.urls),</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    path(</span><span class=\"mtk8\">&#39;&#39;</span><span class=\"mtk1\">, include(</span><span class=\"mtk8\">&#39;radiusApp.urls&#39;</span><span class=\"mtk1\">))</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">]</span></span></code></pre>\n<h2 id=\"user-registration-and-authentication\" style=\"position:relative;\"><a href=\"#user-registration-and-authentication\" aria-label=\"user registration and 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 Registration and Authentication</h2>\n<p>Remember, we said that there is a webpage LoginRadius automatically created for you: an <a href=\"https://www.loginradius.com/developers/\">Auth Page (IDX)</a>, which already has registration and authentication implemented. You will utilize this web page to meet your registration and authentication needs.\nHow would you do that?</p>\n<p>You can access your registration and login page with the following URLs.</p>\n<p>Registration Page URL:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"plaintext\" data-index=\"4\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">https://{APP_NAME}.hub.loginradius.com/auth.aspx?action=register&return_url={RETURN_URL}</span></code></pre>\n<p>Login Page URL:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"plaintext\" data-index=\"5\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">https://{APP_NAME}.hub.loginradius.com/auth.aspx?action=login&return_url={RETURN_URL}</span></code></pre>\n<ul>\n<li>The APP_NAME parameter is your LoginRadius app name, which we mentioned in the <a href=\"#\">Get API Credentials</a> section.</li>\n<li>The RETURN_URL parameter refers to the URL where the user should be redirected to upon successful authentication.</li>\n</ul>\n<p>So, what you will do now is to create links or buttons that users can click to access these URLs.\nFirst, create a view that will be responsible for displaying your registration and login page.\nEdit the <code>views.py</code> file of the <strong>radiusApp</strong> application and add the following code:</p>\n<p><code>radiusApp/views.py</code></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"python\" data-index=\"6\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk15\">from</span><span class=\"mtk1\"> django.shortcuts </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> render</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">def</span><span class=\"mtk1\"> </span><span class=\"mtk11\">register_n_login</span><span class=\"mtk1\">(</span><span class=\"mtk12\">request</span><span class=\"mtk1\">):</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk15\">return</span><span class=\"mtk1\"> render(request, </span><span class=\"mtk8\">&#39;index.html&#39;</span><span class=\"mtk1\">)</span></span></code></pre>\n<p>All this view does is render an HTML page as a response. Now, you need to add the URL pattern for this view.</p>\n<p>In the <code>urls.py</code> file of your <strong>radiusApp</strong> application, add the following code:</p>\n<p><code>radiusApp/urls.py</code></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"python\" data-index=\"7\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk15\">from</span><span class=\"mtk1\"> django.urls </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> path</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">from</span><span class=\"mtk1\"> . </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> views</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">urlpatterns = [</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    path(</span><span class=\"mtk8\">&#39;&#39;</span><span class=\"mtk1\">, views.register_n_login, </span><span class=\"mtk12\">name</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;access&quot;</span><span class=\"mtk1\">),</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">]</span></span></code></pre>\n<p>The <code>register_n_login</code> view can now be accessed by a URL. It's time to create a template for your view. But before you do that, let me introduce some basic styling you will use in your application.</p>\n<p>Create a <strong>static</strong> directory and a <code>style.css</code> file in your app directory.\nOpen your terminal and type the following command:</p>\n<p><code>radiusAuth/radiusApp</code></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"plaintext\" data-index=\"8\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">$ mkdir static</span>\n<span class=\"grvsc-line\">$ cd static</span>\n<span class=\"grvsc-line\">$ type nul &gt; style.css</span></code></pre>\n<p>Open the <code>style.css</code> file and the following CSS styles:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"css\" data-index=\"9\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk4\">*</span><span class=\"mtk1\">{</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">margin</span><span class=\"mtk1\">: </span><span class=\"mtk7\">0</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">border</span><span class=\"mtk1\">: </span><span class=\"mtk7\">0</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=\"mtk6\">body</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=\"mtk11\">hsl</span><span class=\"mtk1\">(</span><span class=\"mtk7\">210</span><span class=\"mtk1\">, </span><span class=\"mtk7\">15%</span><span class=\"mtk1\">, </span><span class=\"mtk7\">95%</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=\"mtk6\">.wrapper</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\">90%</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\">100vh</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">margin</span><span class=\"mtk1\">: </span><span class=\"mtk7\">0</span><span class=\"mtk1\"> </span><span class=\"mtk8\">auto</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\">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\">flex-direction</span><span class=\"mtk1\">: </span><span class=\"mtk8\">column</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>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk6\">.choice</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 class=\"mtk12\">line-height</span><span class=\"mtk1\">: </span><span class=\"mtk7\">30px</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=\"mtk6\">.choice</span><span class=\"mtk1\"> </span><span class=\"mtk6\">span</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=\"mtk11\">hsl</span><span class=\"mtk1\">(</span><span class=\"mtk7\">207</span><span class=\"mtk1\">, </span><span class=\"mtk7\">37%</span><span class=\"mtk1\">, </span><span class=\"mtk7\">76%</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=\"mtk6\">.choice</span><span class=\"mtk1\"> </span><span class=\"mtk6\">span:nth-child</span><span class=\"mtk1\">(</span><span class=\"mtk7\">1</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\">1.3rem</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=\"mtk11\">hsl</span><span class=\"mtk1\">(</span><span class=\"mtk7\">210</span><span class=\"mtk1\">, </span><span class=\"mtk7\">7%</span><span class=\"mtk1\">, </span><span class=\"mtk7\">55%</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>\n<span class=\"grvsc-line\"><span class=\"mtk6\">.access</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\">max-width</span><span class=\"mtk1\">: </span><span class=\"mtk7\">400px</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\">150px</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\">space-evenly</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">flex-direction</span><span class=\"mtk1\">: </span><span class=\"mtk8\">column</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\">background-color</span><span class=\"mtk1\">: </span><span class=\"mtk8\">white</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">margin-bottom</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\">font-size</span><span class=\"mtk1\">: </span><span class=\"mtk7\">1.2rem</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=\"mtk6\">.access</span><span class=\"mtk1\"> </span><span class=\"mtk6\">button</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\">90%</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\">0.7rem</span><span class=\"mtk1\"> </span><span class=\"mtk7\">0.4rem</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=\"mtk11\">hsl</span><span class=\"mtk1\">(</span><span class=\"mtk7\">207</span><span class=\"mtk1\">, </span><span class=\"mtk7\">73%</span><span class=\"mtk1\">, </span><span class=\"mtk7\">30%</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\">white</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=\"mtk6\">.profile</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\">max-width</span><span class=\"mtk1\">: </span><span class=\"mtk7\">400px</span><span class=\"mtk1\">; </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">min-height</span><span class=\"mtk1\">: </span><span class=\"mtk7\">300px</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\">white</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\">flex-direction</span><span class=\"mtk1\">: </span><span class=\"mtk8\">column</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\">space-between</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=\"mtk6\">.profile__head</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=\"mtk8\">inherit</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">flex</span><span class=\"mtk1\">: </span><span class=\"mtk7\">0.3</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=\"mtk11\">hsl</span><span class=\"mtk1\">(</span><span class=\"mtk7\">207</span><span class=\"mtk1\">, </span><span class=\"mtk7\">73%</span><span class=\"mtk1\">, </span><span class=\"mtk7\">30%</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\">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\">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>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk6\">.profile__head</span><span class=\"mtk1\"> </span><span class=\"mtk6\">h4</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\">36px</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">font-weight</span><span class=\"mtk1\">: </span><span class=\"mtk7\">400px</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\">white</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=\"mtk6\">.profile__details</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\">90%</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">margin</span><span class=\"mtk1\">: </span><span class=\"mtk7\">0</span><span class=\"mtk1\"> </span><span class=\"mtk8\">auto</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">line-height</span><span class=\"mtk1\">: </span><span class=\"mtk7\">35px</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">flex</span><span class=\"mtk1\">: </span><span class=\"mtk7\">0.5</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=\"mtk6\">.profile__details</span><span class=\"mtk1\"> </span><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\">1.2rem</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=\"mtk6\">.label</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=\"mtk11\">hsl</span><span class=\"mtk1\">(</span><span class=\"mtk7\">210</span><span class=\"mtk1\">, </span><span class=\"mtk7\">7%</span><span class=\"mtk1\">, </span><span class=\"mtk7\">55%</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">}</span></span></code></pre>\n<p>Now, create the template for your <code>register_n_login</code> view.</p>\n<p>Create a <strong>templates</strong> directory and a <code>index.html</code> file in your app directory.</p>\n<p>Open your terminal and type the following command:</p>\n<p><code>radiusAuth/radiusApp</code></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"plaintext\" data-index=\"10\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">$ mkdir templates</span>\n<span class=\"grvsc-line\">$ cd templates</span>\n<span class=\"grvsc-line\">$ type nul &gt; index.html</span></code></pre>\n<p>Open the <code>index.html</code> file and add the following HTML</p>\n<p><code>templates/index.html</code></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"html\" data-index=\"11\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">{% </span><span class=\"mtk12\">load</span><span class=\"mtk1\"> </span><span class=\"mtk12\">static</span><span class=\"mtk1\"> %}</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\"> </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\"> &lt;!</span><span class=\"mtk12\">DOCTYPE</span><span class=\"mtk1\"> </span><span class=\"mtk12\">html</span><span class=\"mtk1\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\"> </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">html</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">     </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">head</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">         </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">meta</span><span class=\"mtk1\"> </span><span class=\"mtk12\">charset</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;utf-8&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\">meta</span><span class=\"mtk1\"> </span><span class=\"mtk12\">name</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;viewport&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">content</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;width=device-width, initial-scale=1.0&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\">title</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Registration and Login page</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">title</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">         </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">link</span><span class=\"mtk1\"> </span><span class=\"mtk12\">rel</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;stylesheet&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">href</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;{% static &#39;style.css&#39; %}&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\">head</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=\"mtk17\">&lt;</span><span class=\"mtk4\">body</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\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;wrapper&quot;</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=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;access&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\">span</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Open an account with us</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 class=\"mtk17\">&lt;</span><span class=\"mtk4\">button</span><span class=\"mtk1\"> </span><span class=\"mtk12\">onclick</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;window.location.href=&#39;https://{APP_NAME}.hub.loginradius.com/auth.aspx?action=register</span><span class=\"mtk14\">&</span><span class=\"mtk8\">return_url=http://127.0.0.1:8000/&#39;;&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                     Register</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 class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;choice&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\">span</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">OR</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">span</span><span class=\"mtk17\">&gt;&lt;</span><span class=\"mtk4\">br</span><span class=\"mtk17\">&gt;</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\">If you already have account</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 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\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;access&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\">span</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Log into your account</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 class=\"mtk17\">&lt;</span><span class=\"mtk4\">button</span><span class=\"mtk1\"> </span><span class=\"mtk12\">onclick</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;window.location.href=&#39;https://{APP_NAME}.hub.loginradius.com/auth.aspx?action=login</span><span class=\"mtk14\">&</span><span class=\"mtk8\">return_url=http://127.0.0.1:8000/profile/&#39;;&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                     Login</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=\"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\">body</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\"> </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">html</span><span class=\"mtk17\">&gt;</span></span></code></pre>\n<p>We used an <code>onclick</code> event on both the register and login buttons, which when clicked changes the window's location to the <a href=\"https://www.loginradius.com/developers/\">Auth Page (IDX)</a> register and login page respectively.</p>\n<p><strong>NOTE:</strong> Don’t forget to replace the {APP_NAME} placeholder with your LoginRadius app name.</p>\n<p>Also, in the register and login link, we replaced the {RETURN_URL} parameter with <code>http://127.0.0.1:8000/profile/</code>, which is the user profile page you are going to create shortly.</p>\n<p>Run the development server and open <code>http://127.0.0.1:8000/</code>, you will see a page like this:</p>\n<p><img src=\"https://paper-attachments.dropbox.com/s_06CCF8584138C77AD580AFE76E986CC1E8C4C360158F4A6548D0F9EAC304864E_1626849064162_Screenshot+48.png\" alt=\"Register and Login page\"></p>\n<p>Now, when you click the register or login button, you will see a page like this:</p>\n<p><img src=\"https://paper-attachments.dropbox.com/s_06CCF8584138C77AD580AFE76E986CC1E8C4C360158F4A6548D0F9EAC304864E_1626849029873_Screenshot+46.png\" alt=\"Auth page (IDX)\"></p>\n<blockquote>\n<p>When LoginRadius successfully authenticates a user, it attaches an access token in the query string as a token parameter to the REDIRECT_URL.</p>\n</blockquote>\n<h2 id=\"retrieve-user-data-using-access-token\" style=\"position:relative;\"><a href=\"#retrieve-user-data-using-access-token\" aria-label=\"retrieve user data using access token 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>Retrieve User Data using Access Token</h2>\n<p>In this section, you are going to retrieve the authenticated user data using access token. But first you need to initialize LoingRadius SDK with your API<em>KEY and API</em>SECRET.</p>\n<p><strong>Intializing LoginRadius SDK</strong></p>\n<p>Create a new <code>config.py</code> file in your <strong>radiusApp</strong> directory.</p>\n<p>Open your terminal and type this command:</p>\n<p><code>radiusAuth/radiusApp</code></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"plaintext\" data-index=\"12\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">$ type nul &gt; config.py</span></code></pre>\n<p>Open the <code>config.py</code> file and add the following lines of code:</p>\n<p><code>radiusApp/config.py</code></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"python\" data-index=\"13\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk15\">from</span><span class=\"mtk1\"> LoginRadius </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> LoginRadius </span><span class=\"mtk15\">as</span><span class=\"mtk1\"> LR</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">LR.API_KEY = </span><span class=\"mtk8\">&quot;API_KEY&quot;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">LR.API_SECRET = </span><span class=\"mtk8\">&quot;API_SECRET&quot;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">loginradius = LR()</span></span></code></pre>\n<p>Replace API<em>KEY and API</em>SECRET with your respective LoginRadius API credentials.</p>\n<p>Now, create the view that will be responsible for retrieving user data.</p>\n<p>Open the <code>views.py</code> file in your <strong>radiusApp</strong> directory and add the following lines of code:</p>\n<p><code>radiusApp/views.py</code></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"python\" data-index=\"14\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk15\">from</span><span class=\"mtk1\"> django.shortcuts </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> render, redirect</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">from</span><span class=\"mtk1\"> django.http.response </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> HttpResponse</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">from</span><span class=\"mtk1\"> .config </span><span class=\"mtk15\">import</span><span class=\"mtk1\"> loginradius</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">def</span><span class=\"mtk1\"> </span><span class=\"mtk11\">register_n_login</span><span class=\"mtk1\">(</span><span class=\"mtk12\">request</span><span class=\"mtk1\">):</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\">#...</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">def</span><span class=\"mtk1\"> </span><span class=\"mtk11\">profile</span><span class=\"mtk1\">(</span><span class=\"mtk12\">request</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\"> request.GET.get(</span><span class=\"mtk8\">&#39;token&#39;</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\">            user_data = loginradius.authentication.get_profile_by_access_token(request.GET.get(</span><span class=\"mtk8\">&#39;token&#39;</span><span class=\"mtk1\">))</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk15\">except</span><span class=\"mtk1\"> </span><span class=\"mtk10\">Exception</span><span class=\"mtk1\"> </span><span class=\"mtk15\">as</span><span class=\"mtk1\"> inst:</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            </span><span class=\"mtk15\">return</span><span class=\"mtk1\"> HttpResponse(inst)</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\">return</span><span class=\"mtk1\"> redirect(</span><span class=\"mtk8\">&#39;access&#39;</span><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\"> render(request, </span><span class=\"mtk8\">&#39;profile.html&#39;</span><span class=\"mtk1\">, {</span><span class=\"mtk8\">&#39;user_data&#39;</span><span class=\"mtk1\">:user_data})</span></span></code></pre>\n<p>In this code snippet, we imported the initialized LoginRadius class from the <code>config.py</code> file and also imported <code>redirect</code> and <code>HttpResponse</code> from there respective modules.</p>\n<p>We also introduced a new function called <code>profile</code>. In this function we did the following:</p>\n<ul>\n<li>We first checked if there is a token parameter attached to the request. If true,</li>\n<li>We created a <code>try</code> and <code>except</code> block. In the <code>try</code> block we used the <code>authentication.get_profile_by_access_token</code> method to retrieve the user data from the access token and assigned it to a variable called <code>user_data</code> while in the <code>except</code> block we returned a HttpResponse of the error that occurred if the <code>try</code> block fails.</li>\n<li>If the <code>try</code> block successfully retrieved the user's data, we rendered a <code>profile.html</code> page, and also attached the <code>user_data</code> variable to the response.</li>\n<li>Else, if there is no token parameter attached to the request, we redirect the user back to the registration and login page.</li>\n</ul>\n<p>Now, add the URL pattern and also create a template for your views.</p>\n<p>Modify the <code>urls.py</code> file in the <strong>radiusApp</strong> directory.</p>\n<p><code>radiusApp/urls.py</code></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"python\" data-index=\"15\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">urlpatterns = [</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk3\">#...</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">     path(</span><span class=\"mtk8\">&#39;profile/&#39;</span><span class=\"mtk1\">, views.profile, </span><span class=\"mtk12\">name</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;profile&quot;</span><span class=\"mtk1\">)</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\"> ]</span></span></code></pre>\n<p>Head over to the <strong>templates</strong> directory in the <strong>radiusApp</strong> directory and create a <code>profile.html</code> file.</p>\n<p>In the termainal type:</p>\n<p><code>radiusApp/templates</code></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"plaintext\" data-index=\"16\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">$ type nul &gt; profile.html</span></code></pre>\n<p>Open your <code>profile.html</code> file and add the following HTML code:</p>\n<p><code>templates/profile.html</code></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"html\" data-index=\"17\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">{% </span><span class=\"mtk12\">load</span><span class=\"mtk1\"> </span><span class=\"mtk12\">static</span><span class=\"mtk1\"> %}</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\"> </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\"> &lt;!</span><span class=\"mtk12\">DOCTYPE</span><span class=\"mtk1\"> </span><span class=\"mtk12\">html</span><span class=\"mtk1\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\"> </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">html</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">     </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">head</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">         </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">meta</span><span class=\"mtk1\"> </span><span class=\"mtk12\">charset</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;utf-8&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\">meta</span><span class=\"mtk1\"> </span><span class=\"mtk12\">name</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;viewport&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">content</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;width=device-width, initial-scale=1.0&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\">link</span><span class=\"mtk1\"> </span><span class=\"mtk12\">rel</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;stylesheet&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">href</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;{% static &#39;style.css&#39;%}&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\">title</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Profile</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">title</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">     </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">head</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=\"mtk17\">&lt;</span><span class=\"mtk4\">body</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=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;wrapper&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=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;profile&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=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;profile__head&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\">h4</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">profile details</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">h4</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=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;profile__details&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\">span</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                     </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">span</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;label&quot;</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Provider: </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">span</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> </span><span class=\"mtk4\">{</span><span class=\"mtk1\">{user_data.</span><span class=\"mtk12\">Provider</span><span class=\"mtk1\">}</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=\"mtk1\">% </span><span class=\"mtk12\">for</span><span class=\"mtk1\"> </span><span class=\"mtk12\">i</span><span class=\"mtk1\"> </span><span class=\"mtk4\">in</span><span class=\"mtk1\"> </span><span class=\"mtk12\">user_data</span><span class=\"mtk1\">.</span><span class=\"mtk12\">Email</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=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;label&quot;</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Email: </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">span</span><span class=\"mtk17\">&gt;</span><span class=\"mtk4\">{</span><span class=\"mtk1\">{i.</span><span class=\"mtk12\">Value</span><span class=\"mtk1\">}</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=\"mtk1\">% </span><span class=\"mtk12\">endfor</span><span class=\"mtk1\"> %</span><span class=\"mtk4\">}</span></span>\n<span class=\"grvsc-line\"><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=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;label&quot;</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Number of login:</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">span</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> </span><span class=\"mtk4\">{</span><span class=\"mtk1\">{user_data.</span><span class=\"mtk12\">NoOfLogins</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>\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\">div</span><span class=\"mtk17\">&gt;</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>\n<span class=\"grvsc-line\"><span class=\"mtk1\">     </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">body</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\"> </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">html</span><span class=\"mtk17\">&gt;</span></span></code></pre>\n<p>Here we displayed the Provider, Email and NoOfLogins from the <code>user_data</code>. These are just some of the data present in the <code>user_data</code>.</p>\n<p>Now, if you run your development server, and then register and login a user, you should see a page like this:</p>\n<p><img src=\"https://paper-attachments.dropbox.com/s_06CCF8584138C77AD580AFE76E986CC1E8C4C360158F4A6548D0F9EAC304864E_1626848979749_Screenshot+51.png\" alt=\"Profile page\"></p>\n<p>To see the entire data present in the <code>user_data</code>, you can do something like this in your <code>profile.html</code>, file:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"html\" data-index=\"18\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">{% </span><span class=\"mtk12\">load</span><span class=\"mtk1\"> </span><span class=\"mtk12\">static</span><span class=\"mtk1\"> %}</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">&lt;!</span><span class=\"mtk12\">DOCTYPE</span><span class=\"mtk1\"> </span><span class=\"mtk12\">html</span><span class=\"mtk1\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">html</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">head</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">meta</span><span class=\"mtk1\"> </span><span class=\"mtk12\">charset</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;utf-8&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\">meta</span><span class=\"mtk1\"> </span><span class=\"mtk12\">name</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;viewport&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">content</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;width=device-width, initial-scale=1.0&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\">link</span><span class=\"mtk1\"> </span><span class=\"mtk12\">rel</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;stylesheet&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">href</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;{% static &#39;style.css&#39;%}&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\">title</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Profile</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">title</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">head</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">body</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk4\">{</span><span class=\"mtk1\">{</span><span class=\"mtk12\">user_data</span><span class=\"mtk1\">}</span><span class=\"mtk4\">}</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">body</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">html</span><span class=\"mtk17\">&gt;</span></span></code></pre>\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>In this tutorial, we discussed how to use LoginRadius for registration and authentication in Django. We started by introducing LoginRadius, what it is, its benefits, and how to get started with it. Then, we illustrated building a demo application with Django and implemented registration and authentication using LoginRadius.</p>\n<p><strong>GitHub repo:</strong> <a href=\"https://github.com/Tammibriggs/radiusAuth\">radiusAuth</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 .mtk8 { color: #CE9178; }\n  .dark-default-dark .mtk15 { color: #C586C0; }\n  .dark-default-dark .mtk4 { color: #569CD6; }\n  .dark-default-dark .mtk11 { color: #DCDCAA; }\n  .dark-default-dark .mtk12 { color: #9CDCFE; }\n  .dark-default-dark .mtk7 { color: #B5CEA8; }\n  .dark-default-dark .mtk6 { color: #D7BA7D; }\n  .dark-default-dark .mtk17 { color: #808080; }\n  .dark-default-dark .mtk14 { color: #F44747; }\n  .dark-default-dark .mtk3 { color: #6A9955; }\n  .dark-default-dark .mtk10 { color: #4EC9B0; }\n</style>","frontmatter":{"date":"July 30, 2021","updated_date":null,"description":"In this tutorial, you will learn how to implement user registration and authentication in Django using LoginRadius.","title":"How to Implement Registration and Authentication in Django?","tags":["Django","Authentication","User Registration"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.3333333333333333,"src":"/static/a36d9f6c867cda8a6951773c8c77de0d/ee604/coverImage.png","srcSet":"/static/a36d9f6c867cda8a6951773c8c77de0d/69585/coverImage.png 200w,\n/static/a36d9f6c867cda8a6951773c8c77de0d/497c6/coverImage.png 400w,\n/static/a36d9f6c867cda8a6951773c8c77de0d/ee604/coverImage.png 800w,\n/static/a36d9f6c867cda8a6951773c8c77de0d/f3583/coverImage.png 1200w,\n/static/a36d9f6c867cda8a6951773c8c77de0d/5707d/coverImage.png 1600w,\n/static/a36d9f6c867cda8a6951773c8c77de0d/6aef5/coverImage.png 4032w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Taminoturoko Briggs","github":"tammibriggs","avatar":null}}}},{"node":{"excerpt":"You may have come across the term “Token” multiple times. However, only a few people know its use and benefits.  A token plays a crucial…","fields":{"slug":"/identity/pros-cons-token-authentication/"},"html":"<p>You may have come across the term “Token” multiple times. However, only a few people know its use and benefits. </p>\n<p>A token plays a crucial role in enhancing the overall security mechanism of an organization that helps to deliver flawless and secure authentication and authorization on their website or application. </p>\n<p>This post will help you better understand what a token is, what are its pros and cons and will help you decide whether you need to invoke the potential of tokens for your business or not. </p>\n<h2 id=\"what-is-a-token\" style=\"position:relative;\"><a href=\"#what-is-a-token\" aria-label=\"what is a token 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 Token?</h2>\n<p>A token can be defined as a digitally encoded signature used to authenticate and authorize a user to access specific resources on a network.</p>\n<p>A token is always generated in the form of an OTP (One-Time Password), which depicts that it could only be used once and is generated randomly for every transaction. </p>\n<p><strong><em>The token-based authentication allows users to verify their unique identity, and in return, they receive a unique token that provides access to certain resources for a particular time frame.</em></strong> </p>\n<p>Apart from this, users can easily access the website or network for which the token is issued, and need not enter the credentials again and again until the token expires. </p>\n<p>Tokens are widely used for regular online transactions for enhancing overall security and accuracy.</p>\n<h2 id=\"how-a-token-works\" style=\"position:relative;\"><a href=\"#how-a-token-works\" aria-label=\"how a token works 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 a Token Works?</h2>\n<p>Whenever you perform a transaction online, you need to enter the credentials. Once you provide the credentials, the system then sends an OTP to your mobile device through a text message or an email. </p>\n<p>A token generator generates these random OTPs, and the user is authenticated once the same is presented to the website or application. </p>\n<p>A random string to the user is sent, which is stored in persistent storage like web storage, and with every request by the user, the string is sent to authenticate the user multiple times during the token lifespan automatically. </p>\n<p>The lifespan of a token is small. Also, a DB table containing all the session tokens is mapped to a user-id is involved and contains other details, including expiry, device-type, etc. </p>\n<h2 id=\"what-is-jwt-json-web-token\" style=\"position:relative;\"><a href=\"#what-is-jwt-json-web-token\" aria-label=\"what is jwt json web token 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 JWT (JSON Web Token)?</h2>\n<p>JWT (JSON Web Token) is used to provide a standard way for two parties to communicate securely. JWT is commonly used for managing authorization.</p>\n<p>There exists an open industry standard called RFC-7519, which defines how JWT should be structured and how to use it for exchanging information (called “claims”) in the form of JSON objects. This information can be verified and trusted as its digitally signed.</p>\n<p><a href=\"https://www.loginradius.com/blog/engineering/jwt/\">JWT (JSON Web Token)</a> is a popular method of SSO, which is widely used by B2C applications, and through this system, you can allow your consumers to log in to an application that supports JWT.</p>\n<p>LoginRadius acts as an Identity Provider; it means LoginRadius can authorize a third-party application that will act as a Service Provider. </p>\n<h2 id=\"pros-of-using-tokens\" style=\"position:relative;\"><a href=\"#pros-of-using-tokens\" aria-label=\"pros of using tokens 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>Pros of Using Tokens</h2>\n<h3 id=\"1-token-based-authentication-is-more-scalable-and-efficient\" style=\"position:relative;\"><a href=\"#1-token-based-authentication-is-more-scalable-and-efficient\" aria-label=\"1 token based authentication is more scalable and efficient 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>1. <strong>Token-based Authentication is more Scalable and Efficient</strong></h3>\n<p>As we know that tokens are required to be stored on the user’s end, they offer a scalable solution. </p>\n<p>Moreover, the server just needs to create and verify the tokens along with the information, which means that maintaining more users on a website or application at once is possible without any hassle. </p>\n<h3 id=\"2-flexibility-and-performance\" style=\"position:relative;\"><a href=\"#2-flexibility-and-performance\" aria-label=\"2 flexibility and performance 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><strong>2. Flexibility and Performance</strong></h3>\n<p>Flexibility and enhanced overall performance are other important aspects when it comes to token-based authentication as they can be used across multiple servers and they can offer authentication for diverse websites and applications at once. </p>\n<p>This helps in encouraging more collaboration opportunities between enterprises and platforms for a flawless experience. </p>\n<h3 id=\"3-tokens-offer-robust-security\" style=\"position:relative;\"><a href=\"#3-tokens-offer-robust-security\" aria-label=\"3 tokens offer robust security 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><strong>3. Tokens Offer Robust Security</strong></h3>\n<p>Since tokens like JWT are stateless, only a secret key can validate it when received at a server-side application, which was used to create it. </p>\n<p>Hence they’re considered the best and the most secure way of offering authentication. </p>\n<h3 id=\"span-stylecolor-ff4500tokens-act-as-a-storage-for-the-users-credentials-and-when-the-token-travels-between-the-server-or-the-web-browser-the-stored-credentials-are-never-compromised-span\" style=\"position:relative;\"><a href=\"#span-stylecolor-ff4500tokens-act-as-a-storage-for-the-users-credentials-and-when-the-token-travels-between-the-server-or-the-web-browser-the-stored-credentials-are-never-compromised-span\" aria-label=\"span stylecolor ff4500tokens act as a storage for the users credentials and when the token travels between the server or the web browser the stored credentials are never compromised span 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><span style=\"color: #FF4500\">Tokens act as a storage for the user’s credentials and when the token travels between the server, or the web browser, the stored credentials are never compromised. </span></h3>\n<h2 id=\"cons-of-using-tokens\" style=\"position:relative;\"><a href=\"#cons-of-using-tokens\" aria-label=\"cons of using tokens 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>Cons of Using Tokens</h2>\n<h3 id=\"1-compromised-secret-key\" style=\"position:relative;\"><a href=\"#1-compromised-secret-key\" aria-label=\"1 compromised secret key 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>1. <strong>Compromised Secret Key</strong></h3>\n<p>One of the major cons of relying on tokens is that it relies on just one key. Yes, JWT uses only one key, which if handled poorly by a developer/administrator, would lead to severe consequences that can compromise sensitive information. </p>\n<p>It’s essential for businesses to seek professional help coupled with robust security mechanisms while planning to add JWT to their authentication mechanism to ensure the highest level of security. </p>\n<h3 id=\"2-data-overhead\" style=\"position:relative;\"><a href=\"#2-data-overhead\" aria-label=\"2 data overhead 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>2. <strong>Data Overhead</strong></h3>\n<p>The overall size of a JWT is quite more than that of a normal session token, which makes it longer whenever more data is added to it. </p>\n<p>So, if you’re adding more information in the token, it will impact the overall loading speed and thus hamper <a href=\"https://www.loginradius.com/customer-experience-solutions/\">user experience</a>. </p>\n<p>This situation can be fixed if right development practices are followed and minimum but essential data is added to the JWT. </p>\n<h3 id=\"3-shorter-lifespan\" style=\"position:relative;\"><a href=\"#3-shorter-lifespan\" aria-label=\"3 shorter lifespan 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>3. <strong>Shorter Lifespan</strong></h3>\n<p>Short-lived JWT are harder for users to work with. These tokens require frequent reauthorization, which can be annoying at times, especially for the clients. </p>\n<p>Adding refresh tokens and storing them appropriately is the only way to fix this scenario where long-lived refresh tokens can help users stay authorized for a more extended period of time. </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>Enterprises can leverage tokens depending on the nature of the requirement and their individual business needs. </p>\n<p>Although JWT can be the right option in most scenarios if implemented correctly and securely by following the right security measures. </p>\n<p>However, one should consider the above-mentioned aspects before relying on a token for <a href=\"https://www.loginradius.com/blog/identity/authentication-vs-authorization-infographic/\">authentication and authorization</a>. </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-loginradius\"\n        title=\"book-a-demo-loginradius\"\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":"July 29, 2021","updated_date":null,"description":"Tokens are widely used to provide authorization and authentication to users when they access a website or a mobile application. This post covers detailed information about the use of tokens along with its advantages and disadvantages.","title":"What is a Token? What are its Pros and Cons?","tags":["token authentication","authorization","cx"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/3ed58100481553e51d649e6b7603d2e2/14b42/pros-cons-token-authentication-cover.jpg","srcSet":"/static/3ed58100481553e51d649e6b7603d2e2/f836f/pros-cons-token-authentication-cover.jpg 200w,\n/static/3ed58100481553e51d649e6b7603d2e2/2244e/pros-cons-token-authentication-cover.jpg 400w,\n/static/3ed58100481553e51d649e6b7603d2e2/14b42/pros-cons-token-authentication-cover.jpg 800w,\n/static/3ed58100481553e51d649e6b7603d2e2/16310/pros-cons-token-authentication-cover.jpg 1024w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.jpg"}}}},{"node":{"excerpt":"With technology evolving leaps and bounds, businesses are leveraging innovative solutions to set a benchmark for delivering the most…","fields":{"slug":"/identity/scale-business-with-identity-management/"},"html":"<p>With technology evolving leaps and bounds, businesses are leveraging innovative solutions to set a benchmark for delivering the most pleasing user experience backed with robust security. </p>\n<p>As far as the security of consumer information is concerned, identity management is becoming a more and more familiar concept as the number of data breaches increases significantly. </p>\n<p>However, identity management is much more than just a security mechanism for securing consumer data and sensitive business information. </p>\n<p>The global market leaders and key decision-makers leverage a consumer identity and access management (CIAM) solution to scale business growth by creating a perfect harmony of privacy, security, convenience, scalability, and user experience. </p>\n<p>In this post, we’ll dig deeper into how an enterprise can leverage a CIAM solution for identity management that scales business growth even in the most unpredictable times. </p>\n<h2 id=\"save-time-and-resources-with-authentication-and-access-management\" style=\"position:relative;\"><a href=\"#save-time-and-resources-with-authentication-and-access-management\" aria-label=\"save time and resources with authentication and access 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>Save Time and Resources with Authentication and Access Management</h2>\n<p>Needless to say, time and resources are the most crucial investments for any business, and wise use can help improve overall performance and revenues. </p>\n<p>An enterprise will -utilize time and resources if it’s trying to manage specific security risks across multiple devices and platforms without relying on a centralized strategy. </p>\n<p>Now, the problem is, organizations don’t realize that managing access and complex passwords eventually consumes a lot of time and resources of their IT team.</p>\n<p>Whether we’re considering Employee IAM or Consumer IAM, managing, restoring, and storage of passwords is a complex task, which shouldn’t be the cause of staying behind the competition when market players are already leveraging passwordless capabilities. </p>\n<p>Choosing a single solution that helps you enforce stringent security, access management and provides passwordless capabilities is undeniably the need of the hour. </p>\n<p>LoginRadius understands the importance of a centralized system that minimizes expenses and enhances productivity that boosts overall growth. </p>\n<p>Using LoginRadius’ CIAM that offers passwordless login, <a href=\"https://www.loginradius.com/multi-factor-authentication/\">MFA (Multi-factor Authentication)</a>, and access management can speed up processes for diverse businesses without compromising overall security. </p>\n<h2 id=\"modern-businesses-demand-agility\" style=\"position:relative;\"><a href=\"#modern-businesses-demand-agility\" aria-label=\"modern businesses demand agility 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>Modern Businesses Demand Agility</h2>\n<p>In today’s constantly changing era, agility is an absolute must for digital transformation. Any small or large organization can no longer avoid – or even delay - digital transformation as they try to remain competitive in an evolving business climate.</p>\n<p>Digital agility is the ease with which any organization can adapt to changing business needs – by enabling or changing their business processes.</p>\n<p>Simply put, for a successful digital transformation, organizations need to invest in resilient business operations, consumer experience initiatives, and technology. For instance, creating an identity-driven digital transformation strategy enables various users – including internal &#x26; external – to have the right access to the right technology for the right purpose.</p>\n<p><strong><em>As a leading provider of CIAM solutions that works for any business model, LoginRadius ensures digital agility along with a seamless consumer experience. With the LoginRadius identity management platform, you can achieve digital transformation by connecting your consumer data to a host of API-driven tools in analytics, business intelligence (BI), and consumer relationship management (CRM).</em></strong></p>\n<p>Using the LoginRadius<a href=\"https://www.loginradius.com/identity-api/\"> Consumer Identity APIs</a>, you can easily validate and automate your consumer identification process and prevent the creation of any spam or fraud accounts.</p>\n<p>With its preconfigured integration with third-party tools and applications, you can pull your latest consumer data – thus eliminating data silos and generating valuable insights.</p>\n<p><a href=\"https://www.loginradius.com/resource/guide-to-modern-customer-identity/\"><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,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABoElEQVQY0zWPyUtbURjFH9aa4QmWakBrGmmrGXyJxEaeUWNsBqOpAzhAMArWlm4cKkhdiGlF3KjgQgQFqYVStSmCqCClcWF1IXXVVTcu/Fd+3ncli8O9373nO4NidYV4+KKZhbk5rk6zHH3bYnd7gz+5E3Z3vuIMdlEo/q2uVszV4tRilAX7KK2LYfHGMbvbMNe0CISwOEMoqiAWPAuSGnrPxc8dzvY3Od1b5+D7F7JrC3ib2nkgBcWCWFSFiCMyhBZPYdX7MfkSWJ0tUswQVvIXrXmAd4PDLM/OsL40z+ToGIsfZ6iL9klDI2FFQxK7/pongQ7KA53YGwT0JJV6FyXaK0x5QZOo4gokSfa+oX9gjHhnGndtmPqXMcp9EUk0eAZs9Qnsjd08DXbjaOqRJqo7LEPJypIo3Kt8UWr97Xj8CZ5rEWwOndLKAI89baieMEqFn4nMKv9vbjn8dc6P499kT3JcXv8jd/mXR94oRSKYkneW1cWDpeYeqpiLhbNR1UBBlU6jaDA+v8Lw9CfSUxnSHzK8nV1iZPozxcLUaHIH2VzYTeppS8MAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"EB-GD-to-mod-cust-id\"\n        title=\"EB-GD-to-mod-cust-id\"\n        src=\"/static/e8ca49370e6ab28514cbd05ef77951af/e5715/EB-GD-to-mod-cust-id.png\"\n        srcset=\"/static/e8ca49370e6ab28514cbd05ef77951af/a6d36/EB-GD-to-mod-cust-id.png 650w,\n/static/e8ca49370e6ab28514cbd05ef77951af/e5715/EB-GD-to-mod-cust-id.png 768w,\n/static/e8ca49370e6ab28514cbd05ef77951af/81501/EB-GD-to-mod-cust-id.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<h2 id=\"scalability--the-backbone-for-any-enterprise-for-digital-transformation\" style=\"position:relative;\"><a href=\"#scalability--the-backbone-for-any-enterprise-for-digital-transformation\" aria-label=\"scalability  the backbone for any enterprise for digital transformation 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>Scalability- The Backbone for Any Enterprise for Digital Transformation</h2>\n<p>Without a highly scalable infrastructure to handle the increasing account creations and logins, peak loads can dramatically impede performance and hamper consumer experience.</p>\n<p>This may force your potential customers to switch quickly as everyone is looking for the finest user experience right from the beginning. </p>\n<p>A robust identity management solution could be the game-changer, especially in scenarios where the actual size of the system requirement is unpredictable. </p>\n<p>Here’s LoginRadius for you. A leading CIAM solution provider empowers businesses to deliver a secure and delightful user experience to their clients through its comprehensive and scalable consumer identity and secure access management platform.</p>\n<p>With 100% uptime and 35 data centers across the globe,<a href=\"https://www.loginradius.com/blog/engineering/effective-cloud-management-platform/\"> LoginRadius’ cloud-based platform</a> can scale to 100s of millions of users in a couple of seconds.</p>\n<p>This is perhaps why global leaders, including Fortune 500 companies and startups with hundreds of millions of users rely on us.</p>\n<p><strong>Let’s Learn How LoginRadius Manages Scalability</strong></p>\n<ul>\n<li><strong>Robust Cloud Infrastructure:</strong> The best part about the LoginRadius cloud CIAM solution is that it relies on a robust cloud infrastructure that not only offers protection against security threats but eventually delivers the finest level of user experience. </li>\n<li><strong>Auto-scalable Infrastructure:</strong> No business can give precise predictions regarding the upsurge in their number of daily signups or subscriptions in today’s era when the internet has become the second home for most of us. LoginRadius’ CIAM solution can efficiently handle a sudden rush in the number of logins or sign-ups without hampering the user experience.</li>\n<li><strong>Platform Security:</strong> LoginRadius offers endless solutions that enhance the overall security of your platform. Whether it’s account verification workflow or validating the provided identity, everything is backed by a highly secure infrastructure.</li>\n<li><strong>Scalable Applications:</strong> LoginRadius’ identity platform scales automatically to handle multiple applications. Hundreds of applications can be handled whether they’re web, smart TV, mobile, gaming console, and so on.</li>\n<li><strong>Scalable Peak Load:</strong> Since large client bases necessitate frequent and substantial peak loads of login and account creation activity, LoginRadius’ infrastructure swiftly scales to meet the ever-increasing demands.</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><strong>Final Thoughts</strong></h2>\n<p>Since identity management is an indispensable part of any online platform, an innovative CIAM solution that creates perfect harmony between user experience and security becomes an absolute necessity. </p>\n<p>Businesses embarking on their digital transformation journey must consider relying on an intelligent <a href=\"https://www.loginradius.com/\">CIAM solution</a> like LoginRadius that helps to accelerate business growth and streamline processes. </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":"July 29, 2021","updated_date":null,"description":"Identity management is much more than just a security mechanism for securing consumer data and sensitive business information; it helps businesses accelerate growth. Learn how a CIAM solution can help businesses securely manage consumer identities and build trust that fosters growth.","title":"How to Scale Your Business Quickly with Identity Management","tags":["identity management","ciam solution","customer identity","cx"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5873015873015872,"src":"/static/63bebd96c44ee342588f06cf7e5c2e34/14b42/scale-business-with-identity-management-cover.jpg","srcSet":"/static/63bebd96c44ee342588f06cf7e5c2e34/f836f/scale-business-with-identity-management-cover.jpg 200w,\n/static/63bebd96c44ee342588f06cf7e5c2e34/2244e/scale-business-with-identity-management-cover.jpg 400w,\n/static/63bebd96c44ee342588f06cf7e5c2e34/14b42/scale-business-with-identity-management-cover.jpg 800w,\n/static/63bebd96c44ee342588f06cf7e5c2e34/16310/scale-business-with-identity-management-cover.jpg 1024w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.jpg"}}}},{"node":{"excerpt":"You’re somehow lucky if you just learned that your business experienced a data breach, as most of the time, it goes unnoticed for months or…","fields":{"slug":"/identity/5-ways-to-handle-a-data-breach/"},"html":"<p>You’re somehow lucky if you just learned that your business experienced a data breach, as most of the time, it goes unnoticed for months or even years.</p>\n<p>Whether a cybercriminal sneaked into your network and exploited consumer information or exposed your business’s sensitive information, you would certainly be thinking about what to do next. </p>\n<p>What initial steps should you take to minimize the loss and whom should you contact if the crucial business information is leaked are some of the apparent questions that start spinning in your mind. </p>\n<p>However, the answers to these questions may vary from business to business and the type of breach, but certain immediate actions are recommended in every scenario that we’ll discuss in this post. </p>\n<p>Let’s have a quick look at some efficient ways to handle a breach and ensure minimum loss in terms of financial losses and brand reputation. </p>\n<h2 id=\"what-is-a-data-breach\" style=\"position:relative;\"><a href=\"#what-is-a-data-breach\" aria-label=\"what is a data breach 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><strong>What is a Data Breach?</strong></h2>\n<p>Before we understand how to handle a data breach, let’s first quickly realize what actually is a data breach. </p>\n<p>A data breach is an incident where a business or individual compromises private and sensitive information to cybercriminals. These incidents expose personal information or corporate secrets, including consumer information, that are further exploited for diverse reasons. </p>\n<h2 id=\"why-do-data-breaches-happen\" style=\"position:relative;\"><a href=\"#why-do-data-breaches-happen\" aria-label=\"why do data breaches happen 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><strong>Why Do Data Breaches Happen?</strong></h2>\n<p>Most organizations that aren’t following stringent security measures may face a data breach at some point with more possibilities that they’ll be pretty costly for the enterprise. </p>\n<p>It’s essential for organizations to get adequate security mechanisms in place to ensure their business’s sensitive data and consumer information remains secure. </p>\n<p><strong>A good read:</strong> <strong><a href=\"https://www.loginradius.com/blog/identity/cybersecurity-best-practices-for-enterprises/\">Cybersecurity Best Practices for Businesses in 2021</a></strong></p>\n<p>Moreover, the lack of cyber-awareness among employees is another big contributing factor for the increasing number of cyberattacks. These numbers can be quickly decreased by minimizing human error through regular employee training sessions. </p>\n<p>Since we’ve learned enough about a data breach, now let’s dig deeper into the aspects that we must consider after a data breach: </p>\n<h3 id=\"1-secure-your-systems\" style=\"position:relative;\"><a href=\"#1-secure-your-systems\" aria-label=\"1 secure your systems 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><strong>1. Secure Your Systems</strong></h3>\n<p>Once a breach is detected, the initial step is to contain the breach and secure your systems ASAP. </p>\n<p>Since the only thing worse than a data breach is multiple data breaches, you must secure your entire network to minimize the risk. </p>\n<p>Depending on the nature of the attack, you must begin with system isolation that can prevent the breach further to affect other systems or individuals on that particular network. </p>\n<p>Moreover, it’s critical that you disconnect breached accounts and, if possible, shut down the targeted departments until you can analyze the situation and take stringent measures to avoid further damage. </p>\n<p>Also, having a robust security infrastructure with <a href=\"https://www.loginradius.com/developers/\">multiple layers of security</a> can quickly help you locate the attack, which can be isolated efficiently. </p>\n<p>Once you’re done with isolation, reformatting the affected areas and performing a restore is recommended once you blacklist the IP address that the attacker used to perform the breach. </p>\n<h3 id=\"2-assess-the-overall-damage\" style=\"position:relative;\"><a href=\"#2-assess-the-overall-damage\" aria-label=\"2 assess the overall damage 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><strong>2. Assess the Overall Damage</strong></h3>\n<p>Once you’ve taken the immediate steps to minimize the loss, you must put your best foot forward to investigate the same and assess the damage caused by the breach. </p>\n<p>It’s essential to understand the root cause of the attack, which would undoubtedly help minimize the chances of another similar attack in the future. </p>\n<p>Moreover, it’s equally vital for you to investigate the network and the affected systems to mitigate the risk from any malware that still resides in the system. </p>\n<p>Depending on the type of breach and your company’s size, it would be good to hire a forensic investigator that helps in finding the source of the breach. </p>\n<h3 id=\"3-notify-the-victims\" style=\"position:relative;\"><a href=\"#3-notify-the-victims\" aria-label=\"3 notify the victims 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><strong>3. Notify the Victims</strong></h3>\n<p>Another crucial thing that you should do is notify the employees or even clients regarding the recent breach and ensure everyone else is notified. </p>\n<p>While investigating the data breach, organizations are able to discover all those who were affected and those that could be.</p>\n<p>Moreover, if there are third-party organizations that you think would be affected, make sure that you inform them as well, along with detailed information about the breach through an email or a phone call. </p>\n<p>You must cite the exact time and date of the breach and ensure that you mention what was compromised and what next steps you’re about to take. </p>\n<p>But many of you would wonder why we need to mention a breach if it isn’t causing severe damage or hardly affecting any of our employees/clients. </p>\n<p>Organizations must take adequate measures to maintain integrity and reputation since a data breach isn’t something that one can hide for an extended period. </p>\n<p><a href=\"https://www.loginradius.com/resource/pii-data-breach-report/\"><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,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABaElEQVQY00WQOU8CURSFiYXADBECBBzRAUEWZRFFhnHYR1ZBE7VRpDCWJC6NlWhjxS/RykQbozEx0YrG0sbCn3K882C0OHnv5t733XOewRzKQRMXzoGPFGAh8WNx4Tz0vibTggIuqsIp78CR2IA5VoEpUoQpmIVpPGMYwfJwxkuwhRVYAjIpQ7UK92oN1miJPWDAIPXjVYjlA0Sr++CkXRjjNXAhvZ8dAbWLX25BaXeRUPfgSaoMyvslWJfGDkiO5Qo86SbcK1VMp+rwZjYhZloQ1prgyRQD6tuFZAV+qQFfug5XrMhg/HyaAfXIxoUsbDEVswSZk9sQ17cI3PhLwCJrhfZftgg59aZgFEl0avepoAx7rMz6BiGJXn+Ar+8f3D+94fbhGXePL3gffuL1Y0iLypgMKP9AR7TAABy5shPcRfUMRRcompFmJnwSpO0j9C4HODy7Quekj85pH8cXN+ieX8OyWGBzvw4LwSbThPvuAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"RP-Data-Breaches\"\n        title=\"RP-Data-Breaches\"\n        src=\"/static/8ae28768fa7a47b91a86b0e9441f9c50/e5715/RP-Data-Breaches.png\"\n        srcset=\"/static/8ae28768fa7a47b91a86b0e9441f9c50/a6d36/RP-Data-Breaches.png 650w,\n/static/8ae28768fa7a47b91a86b0e9441f9c50/e5715/RP-Data-Breaches.png 768w,\n/static/8ae28768fa7a47b91a86b0e9441f9c50/63ff0/RP-Data-Breaches.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<h3 id=\"4-investigate--how-did-it-happen\" style=\"position:relative;\"><a href=\"#4-investigate--how-did-it-happen\" aria-label=\"4 investigate  how did it happen 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><strong>4. Investigate- How did it Happen?</strong></h3>\n<p>Once you’re done with the steps mentioned above, it’s important to investigate the actual cause of the breach. </p>\n<p>Start with auditing your system and device accesses and if you suspect the breach was a result of a human error, take adequate measures to minimize the same by organizing regular training sessions for employees. </p>\n<p>Also, make sure that you evaluate the current technologies that your organization is leveraging to ensure you invest more in cutting-edge technology software systems for maximum protection. </p>\n<p>Also, adding strong <a href=\"https://www.loginradius.com/blog/identity/authentication-vs-authorization-infographic/\">authentication and authorization</a> layers to your overall security mechanism could be quite helpful in minimizing the chances of a breach.</p>\n<h3 id=\"5-be-prepared-for-any-other-similar-instance\" style=\"position:relative;\"><a href=\"#5-be-prepared-for-any-other-similar-instance\" aria-label=\"5 be prepared for any other similar instance 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><strong>5. Be Prepared for any other Similar Instance</strong></h3>\n<p>After taking all the necessary steps after a breach, you must prepare your organization well for future security threats. </p>\n<p>Since the possibility of another attack is relatively high once you’re already attacked, not preparing your business could surely leave your organization in dire straits. </p>\n<p>Moreover, it’s strongly recommended to <a href=\"https://www.loginradius.com/blog/identity/best-practices-business-resilience/\">prepare a recovery plan</a> and get new privacy policies to avoid any breaches in the future. </p>\n<p>Investing in employee training is yet another great way to prepare for future attacks that can result from human error. </p>\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><strong>Final Thoughts</strong></h2>\n<p>The increasing number of data breaches depicts the need for a robust authentication and security mechanism for organizations handling crucial information of consumers. </p>\n<p>The aspects mentioned above can be quite helpful in managing the overall situation when a business witnesses a data breach. </p>\n<p>It’s recommended that enterprises should consider stringent security measures to avoid any chance of sneaking into the company’s network. </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-free-demo-loginradius\"\n        title=\"book-a-free-demo-loginradius\"\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":"July 27, 2021","updated_date":null,"description":"Data breaches are becoming the new normal and enterprises aren’t aware of the necessary steps that should be taken immediately after a breach. This post offers valuable insights that help organizations to quickly and effectively manage a situation after a data breach is detected.","title":"How to Manage Situation After a Data Breach","tags":["data security","cybersecurity","cx"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/fe0dab8842b3ce871e9a74d7164f9216/14b42/5-ways-to-handle-a-data-breach-cover.jpg","srcSet":"/static/fe0dab8842b3ce871e9a74d7164f9216/f836f/5-ways-to-handle-a-data-breach-cover.jpg 200w,\n/static/fe0dab8842b3ce871e9a74d7164f9216/2244e/5-ways-to-handle-a-data-breach-cover.jpg 400w,\n/static/fe0dab8842b3ce871e9a74d7164f9216/14b42/5-ways-to-handle-a-data-breach-cover.jpg 800w,\n/static/fe0dab8842b3ce871e9a74d7164f9216/16310/5-ways-to-handle-a-data-breach-cover.jpg 1024w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.jpg"}}}},{"node":{"excerpt":"11 Tips for Managing Remote Software Engineering Teams The software developer role is among the top 5 remote-oriented jobs in the world…","fields":{"slug":"/engineering/guest-post/tips-for-managing-remote-software-engineering-teams/"},"html":"<h1 id=\"11-tips-for-managing-remote-software-engineering-teams\" style=\"position:relative;\"><a href=\"#11-tips-for-managing-remote-software-engineering-teams\" aria-label=\"11 tips for managing remote software engineering teams 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>11 Tips for Managing Remote Software Engineering Teams</h1>\n<p>The software developer role is among the top 5 remote-oriented jobs in the world. After the pandemic, <a href=\"https://www.apollotechnical.com/statistics-on-remote-workers/\">92% of people</a> expect to work at least 1 day per week from home, and 80% expect to work at least 3 days from home. Accordingly, fostering an environment and working conditions for software engineers to work remotely is inevitable. In fact, <a href=\"https://terminal.io/state-of-remote-engineering-2021\">75% of engineers</a> want to work remotely, primary reasons being the lack of an annoying commute and a better work-life balance .</p>\n<p>If companies fail to create an effective remote working environment, their developers will eventually find another employer who can meet their needs to work remotely effectively.</p>\n<p>This article will give you 11 tips for managing remote software engineering teams, so you can adjust and improve your hiring, communication, and your team's collective output.</p>\n<h2 id=\"why-hire-remote-developers\" style=\"position:relative;\"><a href=\"#why-hire-remote-developers\" aria-label=\"why hire remote developers 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 Hire Remote Developers?</h2>\n<p>The first and most obvious reason to hire remote developers is that your addressable talent pool is global . Utilizing a <a href=\"https://recruitcrm.io/blogs/hiring-platform/\">recruitment platform</a> allows you to tap into a vast array of talent options. It's actually a good thing you don't have to deal with visas and relocation packages.</p>\n<p>Another reason is that many good developers are already in remote jobs. They have become used to a certain remote lifestyle and likely won't change that. As an employer, you must adapt to the growing market of digital nomads.</p>\n<h2 id=\"what-are-the-challenges-in-managing-remote-teams\" style=\"position:relative;\"><a href=\"#what-are-the-challenges-in-managing-remote-teams\" aria-label=\"what are the challenges in managing remote teams 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 are the Challenges in Managing Remote Teams?</h2>\n<p>Probably the biggest challenge with managing remote teams is asynchronous communication or a complete lack of communication. This can cause delays, duplicate work, or even wrong requirements being implemented in the product.</p>\n<p>In an attempt to counter that, developers sometimes change their working schedules to have a bigger time overlap with their team members. However, this can easily lead to irregular working schedules and overworking.</p>\n<h2 id=\"tips-on-how-to-manage-a-remote-software-developer-team\" style=\"position:relative;\"><a href=\"#tips-on-how-to-manage-a-remote-software-developer-team\" aria-label=\"tips on how to manage a remote software developer team 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>Tips on How to Manage a Remote Software Developer Team</h2>\n<p>Luckily, you can surmount all these challenges by establishing some rules for the team. Stand-up meetings are a widely practiced SCRUM ceremony and have proven to be a very effective communication method.</p>\n<p>It's also a good idea to hire developers who actually have worked in remote roles since they likely have more experience of self-management and are more goal-oriented than work-hours oriented.</p>\n<p>Trust in the team, frequent communication, and feedback make a huge difference. Next, we're looking at 11 specific tips that you can implement to foster a more effective remote working culture within your software development team.</p>\n<h2 id=\"1-stand-up-meetings-and-scheduled-communication\" style=\"position:relative;\"><a href=\"#1-stand-up-meetings-and-scheduled-communication\" aria-label=\"1 stand up meetings and scheduled communication 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>1. Stand-up Meetings and Scheduled Communication</h2>\n<p>Establish a stand-up meeting time and make sure to include all team members . Since the team is fully remote, you have to utilize video conferencing or text chat software like Slack to hold a stand-up meeting. This will allow for quick feedback loops on your progress throughout the day while also providing valuable face-to-face interaction with remote employees. A well-run stand-up meeting should take no more than 15 minutes so that participants can still get their work done afterward.</p>\n<p>Schedule regular communication times during which people can discuss ideas, decisions, and general feelings about what is happening inside of your organization; this could be as small as one hour per week or as frequent as daily depending on what kind of information needs to flow between team members.</p>\n<p>However, be cautious of video fatigue. The <a href=\"https://solitaired.com/Improving-remote-work\">team at Solitaired</a> improved their development team output and speed by moving their stand-up meetings to a written format. In the video meetings they had, they started writing email summaries and clearly outlining responsibilities.</p>\n<h2 id=\"2-over-communication-is-crucial-for-remote-teams\" style=\"position:relative;\"><a href=\"#2-over-communication-is-crucial-for-remote-teams\" aria-label=\"2 over communication is crucial for remote teams 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>2. Over-communication is Crucial for Remote Teams</h2>\n<p>One tip for managing remote software development teams is to \"over-communicate.\" What does this mean? Don't just communicate as little as you can, which can create a feeling of insecurity among team members. Communication is critical when <a href=\"https://www.loginradius.com/blog/fuel/tips-managing-remote-team/\">managing a remote team</a> because you don't have the same level of informal rapport as in face-to-face interactions.</p>\n<p>Another thing you can do is send follow-up emails after <a href=\"https://callhippo.com/blog/business/increase-your-employees-productivity-with-remote-working-and-voip\">VoIP phone</a> calls. This helps to ensure that all points are covered and that nobody has any unanswered questions.</p>\n<h2 id=\"3-time-zones-and-common-time-for-synchronous-conversations\" style=\"position:relative;\"><a href=\"#3-time-zones-and-common-time-for-synchronous-conversations\" aria-label=\"3 time zones and common time for synchronous conversations 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>3. Time Zones and \"Common Time\" for Synchronous Conversations</h2>\n<p>One of the biggest challenges is timezones. You need to decide whether you want a consistent \"common time\" or if it's acceptable for team members to work off-hours . The advantage of common time is that all team members are on at once and can have conversations in real-time , which means more collaboration and less miscommunication.</p>\n<h2 id=\"4-look-for-proof-of-self-management-when-hiring\" style=\"position:relative;\"><a href=\"#4-look-for-proof-of-self-management-when-hiring\" aria-label=\"4 look for proof of self management when hiring 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>4. Look for Proof of Self-Management When Hiring</h2>\n<p>One of the essential qualities to look for in a software engineer is self-management. You want somebody who can think critically and find solutions instead of being told what to do. Self-managers also can see through other people's advice and execute accordingly; they are not chained by following others' instructions blindly without understanding why they're doing it this way or that.</p>\n<h2 id=\"5-clear-onboarding-and-product-vision\" style=\"position:relative;\"><a href=\"#5-clear-onboarding-and-product-vision\" aria-label=\"5 clear onboarding and product vision 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>5. Clear Onboarding and Product Vision</h2>\n<p>Straightforward onboarding and product vision is a necessity for remote teams. Clear communication about what the team will be working on, how they will work together, and their managers can help reduce confusion among teammates.</p>\n<p>By providing clear expectations of roles and responsibilities and establishing an understanding of company goals early on in the process (even as early as <a href=\"https://360learning.com/blog/online-employee-training/\">employee training</a>), you allow your new employees to hit the ground running with less stress.</p>\n<h2 id=\"6-goals-above-working-hours-goals-that-inspire-results\" style=\"position:relative;\"><a href=\"#6-goals-above-working-hours-goals-that-inspire-results\" aria-label=\"6 goals above working hours goals that inspire results 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>6. Goals Above Working Hours; Goals That Inspire Results</h2>\n<p>Goals are more important than the number of hours your team works. You will never get a team to work harder by working them more hours. You don't want your employees to feel like they're on a hamster wheel. Instead, you want your team to pursue goals that inspire results. This is important because research has shown that employees will work harder and report to be <a href=\"https://terminal.io/state-of-remote-engineering-2021\"> 46% more productive </a> when staff goals are aligned with organizational priorities.</p>\n<p>Make sure your team knows what they're working on: Communicate with your remote teams (or any team) so that everyone is clear about the objectives of their projects. Make a habit out of updating them regularly on progress made or obstacles encountered. This way, you'll avoid getting blindsided when someone emails asking for an update; instead, you can proactively provide updates as they happen.</p>\n<h2 id=\"7-tools-that-support-or-hinder-engineers\" style=\"position:relative;\"><a href=\"#7-tools-that-support-or-hinder-engineers\" aria-label=\"7 tools that support or hinder engineers 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>7. Tools That Support or Hinder Engineers</h2>\n<p>Good tools are a must for remote software engineering teams. These tools should allow for instant messaging, time tracking, file sharing, and scheduling.</p>\n<p>A few in the list of great remote software engineering team tools are:</p>\n<ul>\n<li><strong>Slack</strong> – works well with external members as it has a chat room option</li>\n<li><strong>Google Drive</strong> – syncs files between devices, so you have access anywhere</li>\n<li><strong>Zoom</strong> – video conferencing, which is easy to use and scales with your team's needs; also offers screen sharing functionality when needed; probably the <a href=\"https://www.webinarsoftware.org/best-webinar-software/\">best webinar platform</a></li>\n</ul>\n<h2 id=\"8-invest-in-a-team-lead-and-celebrate-small-accomplishments\" style=\"position:relative;\"><a href=\"#8-invest-in-a-team-lead-and-celebrate-small-accomplishments\" aria-label=\"8 invest in a team lead and celebrate small accomplishments 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>8. Invest in a Team Lead and Celebrate Small Accomplishments</h2>\n<p>When managing a remote software engineering team, it is crucial to have an onsite person who can connect with the whole team. This person should be able to take over tasks when necessary and provide updates proactively. It will also be helpful for this lead engineer to help celebrate small accomplishments to keep morale high among team members who are far away from one another. One way could be giving rewards to team members who have gone the extra mile or finished a critical job in time. It's good for team morale to give praise publicly, in front of the entire team.</p>\n<h2 id=\"9-team-feedback-goes-a-long-way\" style=\"position:relative;\"><a href=\"#9-team-feedback-goes-a-long-way\" aria-label=\"9 team feedback goes a long way 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>9. Team Feedback Goes a Long Way</h2>\n<p>When managing a remote software engineering team, it is crucial to actively solicit feedback from the group. This will help build trust and understanding among team members. It can also prevent misunderstandings when regular staff members get back onsite or new hires arrive to understand their role within the company and expectations.</p>\n<h2 id=\"10-building-trust-with-remote-team-members\" style=\"position:relative;\"><a href=\"#10-building-trust-with-remote-team-members\" aria-label=\"10 building trust with remote team members 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>10. Building Trust With Remote Team Members</h2>\n<p>Since team members on a remote software engineering team lack in person interactions, it is vital to put emphasis on building trust with each other. This can be done through regular conference calls and short meetings for everyone to get acquainted with how they work together.</p>\n<p>Another way of building rapport is by providing online tools that allow team members to share thoughts or inputs and provide feedback and encourage self-management among employees who are not always on-site.</p>\n<h2 id=\"11-annual-get-togethers-even-if-everyone-cant-make-it\" style=\"position:relative;\"><a href=\"#11-annual-get-togethers-even-if-everyone-cant-make-it\" aria-label=\"11 annual get togethers even if everyone cant make it 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>11. Annual Get-Togethers, Even If Everyone Can't Make It</h2>\n<p>To be successful, remote software engineering teams need natural ways of building trust. This includes annual get-togethers for the team to mingle and socialize with one another in a casual setting to chat about their projects on an individual level. This is a great opportunity for team-building activities and events.</p>\n<h1 id=\"bonus-tip\" style=\"position:relative;\"><a href=\"#bonus-tip\" aria-label=\"bonus tip 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>Bonus Tip</h1>\n<h2 id=\"team-one-on-one-communication\" style=\"position:relative;\"><a href=\"#team-one-on-one-communication\" aria-label=\"team one on one communication 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>Team One-on-One Communication</h2>\n<p>Team one-on-one communication is just essential as team cohesion. This allows your team members to talk about any difficulties, they're scared to bring up in group sessions. It's also a good moment to check in with team members about their role and whether it aligns with their overall career ambitions.</p>\n<h2 id=\"key-takeaways-for-managing-remote-software-engineering-teams\" style=\"position:relative;\"><a href=\"#key-takeaways-for-managing-remote-software-engineering-teams\" aria-label=\"key takeaways for managing remote software engineering teams 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>Key Takeaways for Managing Remote Software Engineering Teams</h2>\n<p>Managing remote software engineering teams is a critical part of the equation for creating a positive impact in your company. The challenge with handling remote teams can be people, time, or budget constraints. By following these best practices for managing remote software development teams and by investing wisely in your team members' success, you can work through any obstacles you face on the journey to becoming more successful as a business owner or a team lead.</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":"July 26, 2021","updated_date":null,"description":"This article will give you 11 tips for managing remote software engineering teams, so you can adjust and improve your hiring, communication, and your team's collective output.","title":"11 Tips for Managing Remote Software Engineering Teams","tags":["Remote Work","Developer","Software Engineering"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.3333333333333333,"src":"/static/b56c12fcaad35ed98c69dce42a2cf52e/14b42/cover.jpg","srcSet":"/static/b56c12fcaad35ed98c69dce42a2cf52e/f836f/cover.jpg 200w,\n/static/b56c12fcaad35ed98c69dce42a2cf52e/2244e/cover.jpg 400w,\n/static/b56c12fcaad35ed98c69dce42a2cf52e/14b42/cover.jpg 800w,\n/static/b56c12fcaad35ed98c69dce42a2cf52e/47498/cover.jpg 1200w,\n/static/b56c12fcaad35ed98c69dce42a2cf52e/0e329/cover.jpg 1600w,\n/static/b56c12fcaad35ed98c69dce42a2cf52e/21d0b/cover.jpg 5184w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Erkki Muuga","github":null,"avatar":null}}}},{"node":{"excerpt":"The world is leveraging technology to build a sustainable future that relies on the robust pillars of digitally transformed public sectors…","fields":{"slug":"/growth/loginradius-digital-identity-to-build-the-public-sector-of-the-future/"},"html":"<p>The world is leveraging technology to build a sustainable future that relies on the robust pillars of digitally transformed public sectors.</p>\n<p>Whether we talk about cloud migrations of government services and record management or the seamless <a href=\"https://www.loginradius.com/resource/smart-iot-authentication-datasheet\">integration of the Internet of Things (IoT)</a> for smart lives, we’re embarking on a journey to a completely digitalized world.</p>\n<p>Identity authentication and management play a key role in navigating the digital world that not only reinforces the public sector and government bodies and helps deliver a flawless user experience in diverse verticals.</p>\n<p>Moreover, with the sudden increase in global data breaches, securely managing consumer data, <a href=\"https://www.loginradius.com/user-management/\">user management</a> including digital identities, becomes the need of the hour.</p>\n<p>So what can be done at the base level to ensure massive data and consumer information remains secure without compromising a great user experience?</p>\n<p>Well, here’s where a cloud-based CIAM (consumer identity and access management) solution comes into play.</p>\n<p>The LoginRadius’ CIAM solution is built to enhance security and deliver a rich user experience that safeguards sensitive data and eventually adds stringent authentication layers.</p>\n<p>Let’s learn how LoginRadius’ digital identity authentication paves the way for digitally transforming the public sector.</p>\n<h2 id=\"who-are-you-whats-your-identity\" style=\"position:relative;\"><a href=\"#who-are-you-whats-your-identity\" aria-label=\"who are you whats your identity 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>Who Are You? What’s Your Identity?</h2>\n<p>Whether we’re using banking services or trying to book a flight, we’re constantly asked to prove our identity for diverse yet obvious reasons.</p>\n<p>In a nutshell, we can’t imagine a world where we’re not using our identities to get a job done online or even offline.</p>\n<p>Also, proving identity is crucial because cybercriminals are always on the lookout for individuals whose identities can be exploited for multiple reasons, including financial gains and tarnishing a brand repute.</p>\n<p>Once users prove their identity through various authentication procedures, they’re allowed to access specific resources and sensitive information required to complete a task.</p>\n<p>Here, the good news is that most people are well aware that proving who they are is crucial, but what’s annoying is when the process becomes pretty complex.</p>\n<p>On the other hand, organizations are also taking adequate measures to protect their crucial data, as the arrival of stringent <a href=\"https://www.loginradius.com/blog/identity/ccpa-vs-gdpr-the-compliance-war/\">GDPR and CCPA</a> regulations. This can undoubtedly add more levels to the overall authentication and authorization process, which hampers user experience.</p>\n<p>Unfortunately, this isn’t in the case of the private sector. Although people understand that private entities are different, they would undoubtedly require this information to process our records. This leads to a very unpleasant and inconsistent customer experience.</p>\n<p>Here’s where the need for a CIAM (consumer identity and access management) solution like LoginRadius arises.</p>\n<p>Let’s understand how LoginRadius digital identity paves the path for a secure public sector of the future.</p>\n<p><a href=\"https://www.loginradius.com/resource/loginradius-single-sign-on/\"><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,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABkUlEQVQY002Qv0tbURiGL6LmemOLoCipMdVofmiutSTRm2gSbRKMQS0oqCRpQboZuTilHWpdJIP+IzqVthSKUhDSpU5OLg5dsmRTSCIO1cdzb0Lp8Jxz4Dvf+77fJ3W4IxhYPRE6vVFBrHF7DCIozbqBPDKN4kvQE1qheyJBh5pE9s4iu2aQm38k41BE85AawOVxMzg8gtPtxeefQg1o9KpRLK6mqGi0jidxxDOMJTdQtFXkFylhOtMwFHVT0CIeajBMej5BLBYl4H/J+voamWyGntFp2l2NpM8m0zhCS/QHF7AJ7AKHtsiAtsRT31xT0IgrGsKvUuSyG+TzW3x4X6BYLKLrOn3j/yUU9PrnsQuR5+Fl7ELcFkzzZKwx9r+R25whvpyccXdbp1wuU6lUTG7rdZLZbVoGp5D6/WzvHnJ59YfPP844+nrC8bdTSucXnJZ+06XGaRc7lhRTMMz3n7+AB65vbqhWq9RqNe7v/5J6qyMNBGkVptrrTfIfD8jtfCKr75q8K+zzZmePztGYubpHveXjbvKsd6kAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"DS-SSO\"\n        title=\"DS-SSO\"\n        src=\"/static/93476b7d6cd257f74ac39f36e32ef1b5/e5715/DS-SSO.png\"\n        srcset=\"/static/93476b7d6cd257f74ac39f36e32ef1b5/a6d36/DS-SSO.png 650w,\n/static/93476b7d6cd257f74ac39f36e32ef1b5/e5715/DS-SSO.png 768w,\n/static/93476b7d6cd257f74ac39f36e32ef1b5/81501/DS-SSO.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<h2 id=\"simplified-registration-with-loginradius-social-login\" style=\"position:relative;\"><a href=\"#simplified-registration-with-loginradius-social-login\" aria-label=\"simplified registration with loginradius social 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>Simplified Registration with LoginRadius Social Login</h2>\n<p>Social login helps users to authenticate themselves with the existing social media accounts seamlessly. This shuns the need to create and remember new credentials for a particular platform.</p>\n<p>With LoginRadius <a href=\"https://www.loginradius.com/blog/identity/what-is-social-login/\">Social Login</a>, users can quickly log in and register themselves with a single click on a website or a mobile application with their social media accounts from various providers, including- Facebook, Gmail, Twitter, etc.</p>\n<p>This allows a very convenient and simplified sign-up and sign-in experience that is backed by robust security.</p>\n<p>Moreover, Loginradius’ Social Login is an attractive feature for developers and enterprises that can help streamline consumer verification while also providing more reliable data access for personalization.</p>\n<h2 id=\"rba-risk-based-authentication-and-mfa-multi-factor-authentication--for-another-stringent-layer-of-security\" style=\"position:relative;\"><a href=\"#rba-risk-based-authentication-and-mfa-multi-factor-authentication--for-another-stringent-layer-of-security\" aria-label=\"rba risk based authentication and mfa multi factor authentication  for another stringent layer of security 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>RBA (Risk-Based Authentication) and MFA (Multi-factor Authentication)- For Another Stringent Layer of Security</h2>\n<p>Authentication in the public sector is a crucial aspect, which eventually requires a robust mechanism to ensure user identities remain secured.</p>\n<p>LoginRadius offers <a href=\"https://www.loginradius.com/blog/identity/what-is-multi-factor-authentication/\">Multi-Factor Authentication</a> through SMS, automated phone calls, email, security questions, and authenticator apps, allowing you to customize the user experience. Depending on the diverse public sector needs, you can also opt to turn on Multi-Factor Authentication across all customer accounts.</p>\n<p>On the other hand, LoginRadius’ <a href=\"https://www.loginradius.com/blog/identity/risk-based-authentication/\">Risk-based authentication</a> is a non-static authentication system that considers the profile(IP address, Browser, physical Location, and so on) of a consumer requesting access to the system to determine the risk profile associated with that action.</p>\n<p>The risk-based implementation allows diverse web applications to challenge the user for additional credentials only when the risk level is appropriate.</p>\n<h2 id=\"single-sign-on-sso\" style=\"position:relative;\"><a href=\"#single-sign-on-sso\" aria-label=\"single sign on sso 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>Single Sign-On (SSO)</h2>\n<p>Since many of the public sector websites and applications are interconnected, most of the users may experience inconvenience while they switch from one application to another, which eventually requires re-authentication.</p>\n<p>Also, many senior citizens may find it challenging to create new identities or remember different credentials each time they need to switch applications for different purposes.</p>\n<p>Here’s where <a href=\"https://www.loginradius.com/single-sign-on/\">LoginRadius SSO</a> comes into play.</p>\n<p>Web SSO authentication from LoginRadius brings everything together. Each user has one account. One set of credentials that they can use anywhere they interact with a department or a public sector service provider.</p>\n<p>This ensures a seamless experience throughout the user journey without any compromise with the overall security.</p>\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>The public sector is an integral part of any country’s overall development as it performs a lot of good work.</p>\n<p>Until now, most countries have been managing the standard verification approach in the public sector, but it immediately requires adequate alterations in identity verification.</p>\n<p>Whether it’s authentication or delivering a consistent omnichannel experience, LoginRadius can help decision-makers build a flawless user experience coupled with enhanced security that ensures the overall <a href=\"https://www.loginradius.com/blog/identity/what-is-digital-transformation/\">digital transformation</a> of the public sector.</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":"July 23, 2021","updated_date":null,"description":"Identity authentication and management play a key role in navigating the digital world that not only reinforces the public sector and government bodies and helps deliver a flawless user experience in diverse verticals. Let’s learn the importance of identity management and how LoginRadius identity management can help public sectors deliver a flawless and secure user experience.","title":"Using LR Digital Identity to Build the Public Sector of the Future","tags":["user management","single sign on","compliance","identity management"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.7699115044247788,"src":"/static/f3756232ea8dd9348fc9c81e22c01333/55d8b/ciam-role-in-public-sector.jpg","srcSet":"/static/f3756232ea8dd9348fc9c81e22c01333/f836f/ciam-role-in-public-sector.jpg 200w,\n/static/f3756232ea8dd9348fc9c81e22c01333/2244e/ciam-role-in-public-sector.jpg 400w,\n/static/f3756232ea8dd9348fc9c81e22c01333/55d8b/ciam-role-in-public-sector.jpg 722w","sizes":"(max-width: 722px) 100vw, 722px"}}},"author":{"id":"Deependra Singh","github":null,"avatar":null}}}}]},"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":420,"currentPage":71,"type":"///","numPages":161,"pinned":"ee8a4479-3471-53b1-bf62-d0d8dc3faaeb"}},"staticQueryHashes":["1171199041","1384082988","2100481360","23180105","528864852"]}