{"componentChunkName":"component---src-templates-blog-list-template-js","path":"/106","result":{"data":{"allMarkdownRemark":{"edges":[{"node":{"excerpt":"Enum is a typed constant that is specified for the new data form of Enumeration. An effective way to describe a set of named integral…","fields":{"slug":"/engineering/enum-csharp/"},"html":"<p>Enum is a typed constant that is specified for the new data form of Enumeration. An effective way to describe a set of named integral constants assigned to a variable is to include a Typesafe enumeration. Enums make the code more readable and less vulnerable to mistakes. If you have a set of functionally important and unchanged values, Enums are useful for developers.</p>\n<p>Enums' key benefit is to make it possible in the future to adjust values. Enums are a robust alternative to the short String or Int constants used to describe sets of similar objects in far older APIs.</p>\n<p>Sometimes we must use the constant variable in our application to not be changed throughout the application. One of the methods to declare the continuous variables are <code>Enum.</code> Let's discuss it.</p>\n<h2 id=\"using-enum-in-c-sharp\" style=\"position:relative;\"><a href=\"#using-enum-in-c-sharp\" aria-label=\"using enum in c sharp permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Using Enum in C Sharp</h2>\n<p>Enum is the short form of Enumeration. Enum consumes less memory and space because they are value types, which means they store memory value. Also, Enums are strongly typed named constants. </p>\n<p>Enums written by developers are used in the <a href=\"https://en.wikipedia.org/wiki/.NET_Framework\">.NET system</a> to develop numeric constants. A numeric value must be allocated to all the members of an enum. Here are the main points about Enums:</p>\n<ul>\n<li>In C#, Keyword Enums build enumerated types of data</li>\n<li>Enums are made for developers</li>\n<li>Enums are strongly typed constants, as described above.</li>\n<li>An enum of one form cannot be allocated automatically to another type of enum.</li>\n<li>Enum values are fixed</li>\n</ul>\n<p><strong>Enums are of two types in C#</strong></p>\n<p><strong>Simple Enum</strong> - The members of this enum contain a single value.</p>\n<p><strong>Flags Enum</strong> - The members of this enum contain multiple values or multiple values combined using a bitwise OR operator. These enums are often used for bitwise operators.</p>\n<p>Here we will talk about the Simple Enum only.</p>\n<h2 id=\"how-to-declare-an-enum\" style=\"position:relative;\"><a href=\"#how-to-declare-an-enum\" aria-label=\"how to declare an enum 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 to declare an Enum</h2>\n<p>Enum is declared by the <strong>enum</strong> keyword followed by the enum name and then its enum members. Like an example below</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"c#\" data-index=\"0\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk4\">public</span><span class=\"mtk1\"> </span><span class=\"mtk4\">enum</span><span class=\"mtk1\"> </span><span class=\"mtk10\">Vehicle</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">{</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">Car</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">Bike</span><span class=\"mtk1\">=</span><span class=\"mtk7\">3</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">Truck</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">Taxi</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">}</span></span></code></pre>\n<p>In the above code, an enum for the Vehicle is created. The enum values are started from <code>0</code> by default if we do not assign them the values and incremented by 1 for the next enum member. </p>\n<p>That means the <code>Car</code> enum has the value <code>0</code> and the <code>Bike</code> enum assigned the value <code>3</code> that means the <code>Bike</code> enum now has the value <code>3</code> and the next enums are incremented by 1 means <code>Truck</code> and <code>Taxi</code> enum have the value <code>4</code> and <code>5</code> respectively.</p>\n<p>By default, the type for enum elements is <strong>int</strong>. We can set different type by adding a colon like an example below. </p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"c#\" data-index=\"1\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk4\">public</span><span class=\"mtk1\"> </span><span class=\"mtk4\">enum</span><span class=\"mtk1\"> </span><span class=\"mtk10\">Vehicle</span><span class=\"mtk1\">: </span><span class=\"mtk4\">byte</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">{</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">Car</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">Bike</span><span class=\"mtk1\">=</span><span class=\"mtk7\">3</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">Truck</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">Taxi</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">}</span></span></code></pre>\n<p>The different types which can be set are sbyte, byte, short, ushort, uint, ulong, and long.</p>\n<h2 id=\"get-the-value-of-an-enum\" style=\"position:relative;\"><a href=\"#get-the-value-of-an-enum\" aria-label=\"get the value of an enum 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>Get the value of an Enum</h2>\n<p>To get the value of enum we can simply typecast it to its type. In the first example, the default type is int so we have to typecast it to int. Also, we can get the string value of that enum by using the <code>ToString()</code> method as below.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"c#\" data-index=\"2\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk12\">Console</span><span class=\"mtk1\">.</span><span class=\"mtk11\">WriteLine</span><span class=\"mtk1\">((</span><span class=\"mtk4\">int</span><span class=\"mtk1\">)</span><span class=\"mtk12\">VehicleEnum</span><span class=\"mtk1\">.</span><span class=\"mtk12\">Car</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">string</span><span class=\"mtk1\"> </span><span class=\"mtk12\">vehicle</span><span class=\"mtk1\"> = </span><span class=\"mtk12\">Vehicle</span><span class=\"mtk1\">.</span><span class=\"mtk12\">Bike</span><span class=\"mtk1\">.</span><span class=\"mtk11\">ToString</span><span class=\"mtk1\">();</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">Console</span><span class=\"mtk1\">.</span><span class=\"mtk11\">WriteLine</span><span class=\"mtk1\">(</span><span class=\"mtk12\">vehicle</span><span class=\"mtk1\">);</span></span></code></pre>\n<p>Output: </p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"3\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">0</span>\n<span class=\"grvsc-line\">Bike</span></code></pre>\n<h2 id=\"parse-the-string-value-into-an-enum\" style=\"position:relative;\"><a href=\"#parse-the-string-value-into-an-enum\" aria-label=\"parse the string value into an enum 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>Parse the string value into an Enum</h2>\n<p>For parsing the string value into enum we have 2 methods</p>\n<ol>\n<li><em>Enum.Parse(Type enumType,string value)</em> - This method directly parses the string representation of the name or numeric value of enum member into enumType object. If the string representation of the name is not found, then it will give the exception.</li>\n</ol>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"c#\" data-index=\"4\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk12\">Console</span><span class=\"mtk1\">.</span><span class=\"mtk11\">WriteLine</span><span class=\"mtk1\">(</span><span class=\"mtk12\">Enum</span><span class=\"mtk1\">.</span><span class=\"mtk11\">Parse</span><span class=\"mtk1\">(</span><span class=\"mtk4\">typeof</span><span class=\"mtk1\">(</span><span class=\"mtk10\">Vehicle</span><span class=\"mtk1\">),</span><span class=\"mtk8\">&quot;Car&quot;</span><span class=\"mtk1\">));</span></span></code></pre>\n<p>Output:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"5\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">Car</span></code></pre>\n<ol start=\"2\">\n<li><em>Enum.TryParse(string? value,out enumType result)</em> - This method gives the result in bool value. if the string representation of the name or numeric value of enum member into enumType object is parsed, then the result will be true, and the parsed value will be in the <code>out</code> variable. If the string value is not parsed, then the result will be false.</li>\n</ol>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"c#\" data-index=\"6\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk12\">Enum</span><span class=\"mtk1\">.</span><span class=\"mtk11\">TryParse</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&quot;0&quot;</span><span class=\"mtk1\">,</span><span class=\"mtk4\">out</span><span class=\"mtk1\"> </span><span class=\"mtk10\">Vehicle</span><span class=\"mtk1\"> </span><span class=\"mtk12\">value</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">Console</span><span class=\"mtk1\">.</span><span class=\"mtk11\">WriteLine</span><span class=\"mtk1\">(</span><span class=\"mtk12\">value</span><span class=\"mtk1\">);</span></span></code></pre>\n<p>Output:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"7\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">Car</span></code></pre>\n<p><strong>Note</strong> - Both the methods also have overload methods.</p>\n<h2 id=\"check-if-a-string-value-is-defined-in-the-enum\" style=\"position:relative;\"><a href=\"#check-if-a-string-value-is-defined-in-the-enum\" aria-label=\"check if a string value is defined in the enum 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>Check if a string value is defined in the Enum</h2>\n<p>We can check if a given integral value, or its name as a string, exists in a specified enum.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"c#\" data-index=\"8\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk12\">Console</span><span class=\"mtk1\">.</span><span class=\"mtk11\">WriteLine</span><span class=\"mtk1\">(</span><span class=\"mtk12\">Enum</span><span class=\"mtk1\">.</span><span class=\"mtk11\">IsDefined</span><span class=\"mtk1\">(</span><span class=\"mtk4\">typeof</span><span class=\"mtk1\">(</span><span class=\"mtk10\">Vehicle</span><span class=\"mtk1\">), </span><span class=\"mtk7\">0</span><span class=\"mtk1\">));</span></span></code></pre>\n<p>OR</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"c#\" data-index=\"9\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk12\">Console</span><span class=\"mtk1\">.</span><span class=\"mtk11\">WriteLine</span><span class=\"mtk1\">(</span><span class=\"mtk12\">Enum</span><span class=\"mtk1\">.</span><span class=\"mtk11\">IsDefined</span><span class=\"mtk1\">(</span><span class=\"mtk4\">typeof</span><span class=\"mtk1\">(</span><span class=\"mtk10\">Vehicle</span><span class=\"mtk1\">), </span><span class=\"mtk8\">&quot;car&quot;</span><span class=\"mtk1\">));</span></span></code></pre>\n<p>Output:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"10\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">True</span></code></pre>\n<h2 id=\"loop-through-all-the-enum\" style=\"position:relative;\"><a href=\"#loop-through-all-the-enum\" aria-label=\"loop through all the enum 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>Loop through all the Enum</h2>\n<p>For looping through the enums you can write the below code -</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"c#\" data-index=\"11\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk15\">foreach</span><span class=\"mtk1\"> (</span><span class=\"mtk4\">var</span><span class=\"mtk1\"> </span><span class=\"mtk12\">data</span><span class=\"mtk1\"> </span><span class=\"mtk15\">in</span><span class=\"mtk1\"> </span><span class=\"mtk12\">Enum</span><span class=\"mtk1\">.</span><span class=\"mtk11\">GetNames</span><span class=\"mtk1\">(</span><span class=\"mtk4\">typeof</span><span class=\"mtk1\">(</span><span class=\"mtk10\">Vehicle</span><span class=\"mtk1\">)))</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">{</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">Console</span><span class=\"mtk1\">.</span><span class=\"mtk11\">WriteLine</span><span class=\"mtk1\">(</span><span class=\"mtk12\">data</span><span class=\"mtk1\">+</span><span class=\"mtk8\">&quot; - &quot;</span><span class=\"mtk1\">+ (</span><span class=\"mtk4\">int</span><span class=\"mtk1\">)</span><span class=\"mtk12\">Enum</span><span class=\"mtk1\">.</span><span class=\"mtk11\">Parse</span><span class=\"mtk1\">(</span><span class=\"mtk4\">typeof</span><span class=\"mtk1\">(</span><span class=\"mtk10\">Vehicle</span><span class=\"mtk1\">), </span><span class=\"mtk12\">data</span><span class=\"mtk1\">));</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">}</span></span></code></pre>\n<p>Here <em>Enum.GetNames(Type enumType)</em> method is used, which retrieves an array of the names from the specified enum.</p>\n<p>Output:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"12\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">Car - 0</span>\n<span class=\"grvsc-line\">Bike - 3</span>\n<span class=\"grvsc-line\">Truck - 4</span>\n<span class=\"grvsc-line\">Taxi - 5</span></code></pre>\n<h2 id=\"call-an-enum-by-the-integral-value\" style=\"position:relative;\"><a href=\"#call-an-enum-by-the-integral-value\" aria-label=\"call an enum by the integral value 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>Call an enum by the integral value</h2>\n<p>We can call the enum member by its integral value. If there is no corresponding value related to that integral value, then it will print that integral value.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"c#\" data-index=\"13\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\"> </span><span class=\"mtk12\">Console</span><span class=\"mtk1\">.</span><span class=\"mtk11\">WriteLine</span><span class=\"mtk1\">((</span><span class=\"mtk10\">Vehicle</span><span class=\"mtk1\">)</span><span class=\"mtk7\">3</span><span class=\"mtk1\">);</span></span></code></pre>\n<p>Output</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"14\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">Bike</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>The advantages of using enums are that they are very easy to use and represented as strings but processed as integers. Enums are easy to maintain and improve code readability because they provide symbolic named constants, which means you need to remember the names, not the integer values.</p>\n<p>If you want to learn more about C programming, here is another article written on C# <a href=\"https://www.loginradius.com/blog/engineering/exception-handling-in-csharp/\">Exceptions and Exception Handling in C#</a> I hope you learn something new today and will going to try it out, if you have any questions feel free to drop a comment below.</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 .mtk4 { color: #569CD6; }\n  .dark-default-dark .mtk1 { color: #D4D4D4; }\n  .dark-default-dark .mtk10 { color: #4EC9B0; }\n  .dark-default-dark .mtk12 { color: #9CDCFE; }\n  .dark-default-dark .mtk7 { color: #B5CEA8; }\n  .dark-default-dark .mtk11 { color: #DCDCAA; }\n  .dark-default-dark .mtk8 { color: #CE9178; }\n  .dark-default-dark .mtk15 { color: #C586C0; }\n</style>","frontmatter":{"date":"December 18, 2020","updated_date":null,"description":"Would you like to become more proficient in your C# programming in the use of enums? To learn the basics and use cases for Enum in C#, read this post.","title":"How to Use Enum in C#","tags":["C#","Enum"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/438545712e629112915b48eb3d068821/14b42/coverimage.jpg","srcSet":"/static/438545712e629112915b48eb3d068821/f836f/coverimage.jpg 200w,\n/static/438545712e629112915b48eb3d068821/2244e/coverimage.jpg 400w,\n/static/438545712e629112915b48eb3d068821/14b42/coverimage.jpg 800w,\n/static/438545712e629112915b48eb3d068821/9842e/coverimage.jpg 900w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Hemant Manwani","github":"hemant404","avatar":null}}}},{"node":{"excerpt":"You book a hotel for your stay in Paris; you go to the counter, show your passport and other ID verification documents, and take the keys to…","fields":{"slug":"/identity/identity-proofing/"},"html":"<p>You book a hotel for your stay in Paris; you go to the counter, show your passport and other ID verification documents, and take the keys to your room to finally enjoy your stay. </p>\n<p>This is identity proofing—the process of verifying that the claimed identity_ _of a person matches their actual identity. You’ve probably undergone this process a bunch of times yourself at hotels, financial institutions, and for retailers.</p>\n<p>The entire process feels taxing, intrusive, and needlessly comprehensive. Yet, it might be surprising to hear that, despite the measures taken by many institutes, according to Consumer Sentinel Network, <a href=\"https://www.ftc.gov/system/files/documents/reports/consumer-sentinel-network-data-book-2019/consumer_sentinel_network_data_book_2019.pdf\">3.4 million identity thefts</a> and frauds took place in 2019 alone.</p>\n<h2 id=\"importance-of-improved-identity-proofing\" style=\"position:relative;\"><a href=\"#importance-of-improved-identity-proofing\" aria-label=\"importance of improved identity proofing 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>Importance of Improved Identity Proofing</h2>\n<p>According to the <a href=\"https://www.accenture.com/sa-en/insights/security/invest-cyber-resilience\">2020 State of Cybersecurity Report</a> by Accenture, an average company was subject to 22 data breaches in the studied year. Such data breaches are often the consequence of and result in more identity thefts and frauds. </p>\n<p>As a matter of fact, it takes over six months for <a href=\"https://www.zdnet.com/article/businesses-take-over-six-months-to-detect-data-breaches/\">an average data breach</a> to be detected. That gives the perpetrator six months to exploit your information as vastly as possible. The risk is significantly greater with the onset of higher cloud computing reliance in the day-to-day functioning of an organization.</p>\n<p>Typical knowledge-based identity proofing also involves asking a customer a set of common security questions, e.g., “What was your hometown?”, “What was your mother’s maiden name?” etc. These questions are used across a range of organizations. </p>\n<p>So, what happens when an organization as big as <a href=\"https://edition.cnn.com/2019/07/30/tech/biggest-hacks-in-history/index.html\">Facebook or Marriott Intl.</a> suffer a breach compromising hundreds of millions of accounts?</p>\n<p>Your Personally Identifiable Information (PII), including your bank account details and security questions, fall in the hands of fraudsters that can exploit your information through, for instance, fraudulent transactions.</p>\n<p>Therefore, effective identity solutions should be one of the top priorities for any organization at this phase. To exemplify, identity proofing is particularly useful when a user is trying to claim an account, access content above a certain age, or register for an ecommerce site.</p>\n<h2 id=\"how-to-implement-effective-identity-proofing\" style=\"position:relative;\"><a href=\"#how-to-implement-effective-identity-proofing\" aria-label=\"how to implement effective identity proofing 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 to Implement Effective Identity Proofing</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 68.76923076923077%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsSAAALEgHS3X78AAACNUlEQVQ4y32Ue08aQRTFN5Wd2U2obY2PptGmTfABgoCiFpRFXvKMsdZXtdZgje33/wKn597dJUgff9ywy8z85txzZtbxVw/grR2OK37X3/UA5vAOM5+ukdg9x0zpHO7+JUxwD3NwC8tnKVO+hi0M4acqcOLFf4A56BWHcMtf8e74AUvtB6z0n/Cyegt37wKmSijHFMgN7e6ZrnMUJgCqicEK36jBKwxU0YfhL7wnbJmVDO4UaKnKVL9HwCsCv2hHjiy02WO4my14WdaqqCsTGMDb6nLxJeYb91juPiJRG8GtP8JSkRHQM2Ck0OY6SBZ6WNwbwhLgCXjjiLAOn5twdz5jNviGWbb6IhjBNJ9gKjchKAZOeijKlgjLtq5Chfl+CMw04GfqcDMtzDVH+Mi2X7d+wGVIlopElQSm6giVNWKVYwlMFgeY2z8NVdEC2Ul9zLVh2UZy5wQrg594UyOAaYfqGEolTNrLtjm/EoWyVoXNNGGk1fTRxLHhhPWqBmO5SWKzDZfGWyYrrRr6abdPQmX0XNeJQk9TrUQVHZ0oeVXMtr10HT79VH9zHbVD/lOLCLQyxnna8hgialh+DJSdqU6PU2SBbpqKNpeTIPB8D6+yjSjE1iQw0Bq3HJU3deDHB59WuekGFood5Ls3eFvqwVC14/9lwRg0MeZPPcscl97Pb3eRCs6wWOozi8bzqxdPjD30p+84Q1Nb4tsk/vLsWgl2K/TW+efHYQL43w+I3CgNp6bvvwFsbKBKKMekGgAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"importance-identity-proofing\"\n        title=\"importance-identity-proofing\"\n        src=\"/static/a146c8695e81bf237cbcec728113bcaa/e5715/importance-identity-proofing.png\"\n        srcset=\"/static/a146c8695e81bf237cbcec728113bcaa/a6d36/importance-identity-proofing.png 650w,\n/static/a146c8695e81bf237cbcec728113bcaa/e5715/importance-identity-proofing.png 768w,\n/static/a146c8695e81bf237cbcec728113bcaa/2bef9/importance-identity-proofing.png 1024w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>As stated above, identity proofing can be done manually through documentation and interactive checks. This process, as already pointed out, is taxing and poorly affects the user experience. Manual identity solutions are also unscalable for large organizations dealing with hundreds of thousands of consumers every day.</p>\n<p>To pick up virtual methods of identity proofing is the right way to go in the current tech-dominated global environment. For instance, the British government has come up with a document on verifying someone’s identity on the <a href=\"https://www.gov.uk/government/publications/identity-proofing-and-verification-of-an-individual#how-to-check-someones-identity\">basis of set guidelines</a>:</p>\n<ul>\n<li>Strength: Getting evidence of identity from official ID documents.</li>\n<li>Validity: Confirming that the document is legitimate.</li>\n<li>Activity: Tracking the prevalence of the identity over time with other records.</li>\n<li>Identity fraud: Assessing the risk of fraud by comparing it with the national fraud database.</li>\n<li>Verification: Assuring the identity belongs to the person claiming it.</li>\n</ul>\n<p>An adequate identity proofing system should be able to perform most of these tasks on its own. It’s worth noting that such a comprehensive undertaking is not necessary for all activities. The organization’s sound discretion should be used to assess where it wants to employ identity proofing solutions.</p>\n<h2 id=\"protect-your-business-identity-with-loginradius-ciam-solutions\" style=\"position:relative;\"><a href=\"#protect-your-business-identity-with-loginradius-ciam-solutions\" aria-label=\"protect your business identity with loginradius ciam solutions 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>Protect Your Business Identity With LoginRadius CIAM Solutions</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 60.61538461538461%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsSAAALEgHS3X78AAABXElEQVQoz41T7W6DMAzk/Z9qDzB1k/aj27RVLR0h4ZvQBCiBm8MKJaWbFsmya8dX+y54oDMMA5Zn+v3jh1V+ioc7Pd4UdH0PHqdQunYuGPJVa1Cpa36udR2KUqJtz3NtBtwVLTZ+jKyQq8ZXXmDztieAs/Nn20RBVDVkVa0B9bnDxyFAIasV4J5F+PQD9LTFErDQLZK8dLbycGEpS1MIziGEcMC01ogoF4ZsjKdT1zVY8AXG2GjGGJdD643pV1NYb3PWbkXpL7YcwPtL5f/G91WmkYNQoGmaFYd21UqpVb6nHqU0zGKrGTAUMR6etojKayPsShQ/+ime3/fo6JmMQJeeo2zxwnKU8uSKYvlRJ4UdT1HSmxt643B4jDIcGKd4moSMeqRuwJKcNqjHpM2PgHmej0pFgoOTmkmSzNzYdeNIjEovVVZEgb2f0V37AiaqvFtynU/rTu23/FT7Bo3ZrIiQ3NZtAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"identity-proofing-loginradius\"\n        title=\"identity-proofing-loginradius\"\n        src=\"/static/2f1995fa060fc29d0ca86bc251df00a1/e5715/identity-proofing-loginradius.png\"\n        srcset=\"/static/2f1995fa060fc29d0ca86bc251df00a1/a6d36/identity-proofing-loginradius.png 650w,\n/static/2f1995fa060fc29d0ca86bc251df00a1/e5715/identity-proofing-loginradius.png 768w,\n/static/2f1995fa060fc29d0ca86bc251df00a1/2bef9/identity-proofing-loginradius.png 1024w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<h3 id=\"two-factor-and-multi-factor-authentication\" style=\"position:relative;\"><a href=\"#two-factor-and-multi-factor-authentication\" aria-label=\"two factor and multi factor 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>Two-Factor and Multi-Factor Authentication</h3>\n<p>When dealing with sensitive information, regardless of the network being public or private, it is a good idea to add extra layers of security to an account. </p>\n<p><a href=\"https://www.loginradius.com/blog/identity/2019/06/what-is-multi-factor-authentication/\">Multi-factor authentication</a> overcomes the flaws of typical password-based authentication and mandates it for a user to verify the claim to an account through two or more methods.</p>\n<ul>\n<li>LoginRadius makes it incredibly convenient to implement MFA for consumers as well as employees without disrupting any other services of the company.</li>\n<li>You can choose the factors via which you would want anyone to verify their claim to the account: SMS, authenticator apps, dynamic security questions, automated phone calls, etc.</li>\n<li>LoginRadius makes sure that the user experience (UX) is not compromised through its intuitive and easy-to-pick user interface.</li>\n</ul>\n<h3 id=\"password-management-solution\" style=\"position:relative;\"><a href=\"#password-management-solution\" aria-label=\"password management solution 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>Password Management Solution</h3>\n<p>Some accounts don’t need the comprehensive identity proofing processes that were explained above because they don’t interact with sensitive information. Nevertheless, it is a <a href=\"https://www.loginradius.com/blog/identity/2020/12/data-security-best-practices/\">good business practice to safeguard data</a>, no matter how insignificant it may seem. </p>\n<p>LoginRadius identity and access management solutions offer password management that helps make traditional password-based identity-proofing safer in itself.</p>\n<ul>\n<li><strong>Regulated password resets</strong>: This feature allows you to configure your system to mandate it for users to update their password at regular intervals. The default setting is set at 90 days.</li>\n<li><strong>One-way hashing</strong>: This feature encrypts the passwords of users of a system with <a href=\"https://www.loginradius.com/docs/security/platform-security/cryptographic-hashing-algorithms/\">customizable hashing</a> salts. The one-way here means that the password can only be encrypted, not decrypted. To increase security, each consumer is allowed to set a random hashing salt for each password. Thereby also disallowing anyone with access to the database to find out the passwords of other users.</li>\n<li>\n<p><strong>Password policy</strong>: The password policy recommended is:</p>\n<ul>\n<li>Password length + complexity: A minimum of ten characters with at least one number and one symbol.</li>\n<li>Password history: Users cannot use the last five passwords again.</li>\n<li>Maximum password age: 90 days.</li>\n<li>Multi-factor authentication: Optional to enable Google Authenticator or Phone SMS as the second authentication factor.</li>\n</ul>\n</li>\n</ul>\n<p><a href=\"https://www.loginradius.com/resource/the-enterprise-buyers-guide-to-consumer-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,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABaklEQVQY00WRPU/CUBSGGwdoaUNBQEEIiFW+Rb5bQGjk0yZoNCQqBhLDqIm6OIkuTvwS42JiXDSaODDp5OZi4k95vYUWhjfn3nPOfd57z6WYwCZUmYIlcKEyuLAmslZzel0VvVqAKVqBXdqHLV4FE6uBDsmg14qTOomUDnNEZVgEEawvDdabgiMiw51swBKZHWBI5OJ1eCsdRGtHYKU26HgTJpKnNVNKJwuigqLSgdQ8hNg4gC9RAe/PToGqWHLrhWQdrlQDzvQ23OkmPFkF1vXq1HQMNJCnRMt7qLf7KLe6kHd6sAfyMC9nJkDN3Uj61N7FVBNeqQVnRiHjkWEQ8jOg7mwNFMAsbYBxJ8B4kuD8OfAakCUzpVwJnA2G+Pn9w+PLB+6fXvHw/IbR1zfeR5+wxLYIuKADS7CFSzCviDCTZ84Hi+AFCTzZq0DVec6Xg7h7gtPrIboXNzg+H4zVv7pD7/J2/JFGwvoHASvB1iSVXD0AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"enterprise-buyer-guide-to-consumer-identity\"\n        title=\"enterprise-buyer-guide-to-consumer-identity\"\n        src=\"/static/6cd4771c097ebff7bd4aca4351efd934/e5715/enterprise-buyer-guide-to-consumer-identity.png\"\n        srcset=\"/static/6cd4771c097ebff7bd4aca4351efd934/a6d36/enterprise-buyer-guide-to-consumer-identity.png 650w,\n/static/6cd4771c097ebff7bd4aca4351efd934/e5715/enterprise-buyer-guide-to-consumer-identity.png 768w,\n/static/6cd4771c097ebff7bd4aca4351efd934/63ff0/enterprise-buyer-guide-to-consumer-identity.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=\"built-in-layers-of-protection\" style=\"position:relative;\"><a href=\"#built-in-layers-of-protection\" aria-label=\"built in layers of protection 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>Built-in layers of protection</h3>\n<p>To further strengthen your system’s ecosystem, LoginRadius’ tools enforce restricted access and stave off <a href=\"https://www.loginradius.com/blog/identity/2019/09/prevent-credential-stuffing-attacks/\">automated attacks</a> on your system. Some of the mechanisms involved in implementing it involve:</p>\n<ul>\n<li><strong>Blacklisting</strong>: You can ban accounts with specific email address domains and thereby, disallow them from registering into your services. </li>\n<li><strong>Whitelisting</strong>: You can allow email addresses of only set domains to interact with and register to your services.</li>\n<li><strong>Brute force lockout</strong>: You can set a threshold for failed login attempts. After a certain number of attempts, you can determine the next course of action. For example, you can temporarily block the account or ask a security question. This effectively reduces the vulnerability to brute force attacks to negligible proportions.</li>\n<li><strong>CAPTCHA</strong>: You can use captcha to restrict bots from generating accounts and interacting with your system. It helps you ensure only humans are using the system.</li>\n</ul>\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>With the growing reliance on technology and cloud-based ecosystems, there is a higher susceptibility to <a href=\"https://www.loginradius.com/blog/identity/2019/10/cybersecurity-attacks-business/\">cyber-attacks</a>. SME organizations tend to undermine the benefits of identity proofing and cyber security. </p>\n<p>By improving privacy, the identity proofing process helps build a trustable image in the consumers’ minds towards your brand.</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":"December 18, 2020","updated_date":null,"description":"Identity proofing is the process of verifying that the claimed identity of a person matches their actual identity. You’ve probably undergone this process a bunch of times yourself at hotels, financial institutions, and for retailers.","title":"What is Identity Proofing and Why is it Important?","tags":["data security","identity proofing","ciam solution"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/275ab4ecedf2daa304ca8584a331adf6/33aa5/identity-proofing.jpg","srcSet":"/static/275ab4ecedf2daa304ca8584a331adf6/f836f/identity-proofing.jpg 200w,\n/static/275ab4ecedf2daa304ca8584a331adf6/2244e/identity-proofing.jpg 400w,\n/static/275ab4ecedf2daa304ca8584a331adf6/33aa5/identity-proofing.jpg 768w","sizes":"(max-width: 768px) 100vw, 768px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.jpg"}}}},{"node":{"excerpt":"Identity Governance and Administration (IGA) is defined as the branch of Identity and Access Management (IAM) responsible for making these…","fields":{"slug":"/identity/identity-governance/"},"html":"<p>Identity Governance and Administration (IGA) is defined as the branch of Identity and Access Management (IAM) responsible for making these access approvals while aiding in auditing and meeting compliance standards of some industries.</p>\n<h1 id=\"what-is-identity-governance\" style=\"position:relative;\"><a href=\"#what-is-identity-governance\" aria-label=\"what is identity governance 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 Identity Governance</h1>\n<p>In its essence, Identity Governance is about automating the process of giving relevant data access levels to varying stakeholders. Identity Governance is based on the Identity Governance Framework, a project that aimed to standardize the treatment and facilitation of identity information usage in enterprises. </p>\n<p>At present, IGA is used by several entities across different industries to improve data security of their systems and meet regulatory compliance such as the <a href=\"https://www.cdc.gov/phlp/php/resources/health-insurance-portability-and-accountability-act-of-1996-hipaa.html\">Health Insurance Portability and Accountability Act (HIPAA)</a>, the <a href=\"https://www.congress.gov/bill/107th-congress/house-bill/3763\">Sarbanes-Oxley Act (SOX)</a>, and the Gramm-Leach-Bliley Act (GLBA).</p>\n<h2 id=\"5-most-common-misconceptions-about-identity-governance\" style=\"position:relative;\"><a href=\"#5-most-common-misconceptions-about-identity-governance\" aria-label=\"5 most common misconceptions about identity governance 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 Most Common Misconceptions About Identity Governance</h2>\n<h3 id=\"1-only-the-businesses-that-fall-under-regulatory-compliance-need-identity-governance\" style=\"position:relative;\"><a href=\"#1-only-the-businesses-that-fall-under-regulatory-compliance-need-identity-governance\" aria-label=\"1 only the businesses that fall under regulatory compliance need identity governance 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. “Only the businesses that fall under regulatory compliance need identity governance.”</h3>\n<p>While it goes without saying that it should be any business’s priority to safeguard classified information on itself as well as the sensitive and personally identifiable information (PII) of its consumers, that isn’t what IGA is all about. </p>\n<p>Among other merits, IGA is also important for retaining efficiency through a seamless transition in access rights when an employee switches departments or gains privilege access when he or she gets promoted to an administrative position.</p>\n<h3 id=\"2-small-medium-enterprises-need-not-employ-identity_-_governance-and-authorisation\" style=\"position:relative;\"><a href=\"#2-small-medium-enterprises-need-not-employ-identity_-_governance-and-authorisation\" aria-label=\"2 small medium enterprises need not employ identity_ _governance and authorisation 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. <em>“</em>Small-medium enterprises need not employ Identity_ _Governance and Authorisation.”</h3>\n<p>User identities are an essential factor in the protection and monitoring of data. In a predominantly tech-intensive world, enterprises of all sizes need to do their best at safeguarding classified and personal information from <a href=\"https://www.loginradius.com/blog/identity/2019/10/cybersecurity-attacks-business/\">cyber-attacks</a>. </p>\n<p>No matter how big or small, a firm needs to protect its cyber existence and the trust that its consumers placed in it.</p>\n<h3 id=\"3-iga-solutions-are-not-relevant-or-implementable-to-cloud-ecosystems\" style=\"position:relative;\"><a href=\"#3-iga-solutions-are-not-relevant-or-implementable-to-cloud-ecosystems\" aria-label=\"3 iga solutions are not relevant or implementable to cloud ecosystems 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. “IGA solutions are not relevant or implementable to cloud ecosystems.”</h3>\n<p>Like most of the tech space, IGA has been moving towards cloud governance as well. Leaders in the field integrate their Identity Governance solutions with cross-domain capabilities, hence, allowing administration of cloud as well as on-premises applications.</p>\n<h3 id=\"4-our-internally-made-manual-ig-solutions-allow-satisfactory-control-over-it-systems\" style=\"position:relative;\"><a href=\"#4-our-internally-made-manual-ig-solutions-allow-satisfactory-control-over-it-systems\" aria-label=\"4 our internally made manual ig solutions allow satisfactory control over it 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>4. “Our internally made manual IG solutions allow satisfactory control over IT systems.”</h3>\n<p>Manual control of user access, i.e., manually altering the provisioning or deprovisioning of access to data, is inefficient and tedious. Not to mention, it is susceptible to human error. It also distracts the IT staff from other intensive tasks that demand effective human intervention. </p>\n<p>Using an automated and specialized access certification issuing system frees up human capital for core business activities.</p>\n<h3 id=\"5-iga-and-identity-management-are-the-same\" style=\"position:relative;\"><a href=\"#5-iga-and-identity-management-are-the-same\" aria-label=\"5 iga and identity management are the same 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. “IGA and identity management are the same.”</h3>\n<p>IGA adds more functionality to the mainstream Identity Management systems. IGA enables an entity to audit access reports for compliance requirements. IGA solutions automate the process of <a href=\"https://www.loginradius.com/provisioning/\">provisioning</a> and deprovisioning the access to certain data by a stakeholder throughout their Access Lifecycle.</p>\n<h2 id=\"5-benefits-of-identity-governance\" style=\"position:relative;\"><a href=\"#5-benefits-of-identity-governance\" aria-label=\"5 benefits of identity governance 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 Benefits of Identity Governance</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 60.61538461538461%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsSAAALEgHS3X78AAAB6UlEQVQoz2WTSVPbQBCFdYhnRoCAAqcqp1wgYLxgXMHYsizJxguJTVLsS9ihcoH/f35090gySg5do2lpvnn9uuWYjRB67wy6fQnV+QPtX2MpvMFy6xhudQiz1Yf7LYDZ6Mo6e+7AbIb0vier7Cnv6OYpVHAD1b3Fp+AOi/E9Pk9esTJ5w2pwDlUe5EApmC8yyYWmQmt5X/KOCu+hWF33DoW9c8z7FyiOXrBC4UW3UI1fcEvxB4WkhPcEW9iK5d18iRTWRpJ3GCTA6AGq/4JC/Axv+BeL+08otC6gKTIVrKgygKn/JFAErzbE8u4hvO0x5rh8+sZh3xjKB1X0CDV6RYFWgbGn5K+71s6Xy1D2rTbG1/4V3PoPcC8EKCBWST5qKlm3kmDV8RN0fQJ33Z+VvM7NiGC2CVIdQVHwaghuSLXDCqRkbgz7yXCO8MGWy36R4aJKmtCze4akNvBzqWebwi9ZkWpf2fA5riU3O2BBUq6oOSAb/NwopVPgpF3TO1Po70c2GodWGaupWAW6eUz5qfWSczJ7ySh9mAInP7ChRLangy6VoqpjLDV/40tzmg27HfiOPcOepsDsFk5KzKDiFanUBPZaJyjuThLvBvLtf8POJf/rQ84ThjMgKWuu3LcKK4PsVzO53zHAOwIsZH5yoRLRAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"benefits-identity-governance\"\n        title=\"benefits-identity-governance\"\n        src=\"/static/bc0d017a7d1ef1f0b6464b15df5c21bd/e5715/benefits-identity-governance.png\"\n        srcset=\"/static/bc0d017a7d1ef1f0b6464b15df5c21bd/a6d36/benefits-identity-governance.png 650w,\n/static/bc0d017a7d1ef1f0b6464b15df5c21bd/e5715/benefits-identity-governance.png 768w,\n/static/bc0d017a7d1ef1f0b6464b15df5c21bd/2bef9/benefits-identity-governance.png 1024w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<h3 id=\"1-consumers-can-get-timely-access-to-the-data-they-want\" style=\"position:relative;\"><a href=\"#1-consumers-can-get-timely-access-to-the-data-they-want\" aria-label=\"1 consumers can get timely access to the data they want 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. Consumers can get timely access to the data they want.</h3>\n<p>In the digital age of immediacy and the consequent instant availability of information, we’re no longer used to waiting for hours or even minutes to have access to the information needed. Identity Governance can be a key contributor to <a href=\"https://www.loginradius.com/blog/growth/improve-customer-experience-ecommerce/\">improving CX</a> (Consumer Experience).</p>\n<h3 id=\"2-you-can-handle-access-requests-and-track-danger-requests\" style=\"position:relative;\"><a href=\"#2-you-can-handle-access-requests-and-track-danger-requests\" aria-label=\"2 you can handle access requests and track danger requests 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. You can handle access requests and track danger requests.</h3>\n<p>The Identity Administration part of a typical IGA system would allow for a centralized or designated approval location to be set for different data sets. Hence your stakeholders can conveniently ask for approvals. </p>\n<p>This, at the same time, also allows you to track activity that may seem suspicious and hence kick out the perpetrator before any breaches.</p>\n<h3 id=\"3-flexible-access-and-hence-greater-productivity\" style=\"position:relative;\"><a href=\"#3-flexible-access-and-hence-greater-productivity\" aria-label=\"3 flexible access and hence greater productivity 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. Flexible access and hence greater productivity.</h3>\n<p>The ongoing pandemic has made the importance of flexibility clear. Always working on-premises and using safe and secured corporate devices and networks is unrealistic in the new context. </p>\n<p>This restates the importance of IGA, through which the firm can allow remote access, albeit limited for security, on employees’ personal devices for the operations to keep running.</p>\n<p><a href=\"https://www.loginradius.com/resource/the-enterprise-buyers-guide-to-consumer-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,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABaklEQVQY00WRPU/CUBSGGwdoaUNBQEEIiFW+Rb5bQGjk0yZoNCQqBhLDqIm6OIkuTvwS42JiXDSaODDp5OZi4k95vYUWhjfn3nPOfd57z6WYwCZUmYIlcKEyuLAmslZzel0VvVqAKVqBXdqHLV4FE6uBDsmg14qTOomUDnNEZVgEEawvDdabgiMiw51swBKZHWBI5OJ1eCsdRGtHYKU26HgTJpKnNVNKJwuigqLSgdQ8hNg4gC9RAe/PToGqWHLrhWQdrlQDzvQ23OkmPFkF1vXq1HQMNJCnRMt7qLf7KLe6kHd6sAfyMC9nJkDN3Uj61N7FVBNeqQVnRiHjkWEQ8jOg7mwNFMAsbYBxJ8B4kuD8OfAakCUzpVwJnA2G+Pn9w+PLB+6fXvHw/IbR1zfeR5+wxLYIuKADS7CFSzCviDCTZ84Hi+AFCTzZq0DVec6Xg7h7gtPrIboXNzg+H4zVv7pD7/J2/JFGwvoHASvB1iSVXD0AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"enterprise-buyer-guide-to-consumer-identity\"\n        title=\"enterprise-buyer-guide-to-consumer-identity\"\n        src=\"/static/6cd4771c097ebff7bd4aca4351efd934/e5715/enterprise-buyer-guide-to-consumer-identity.png\"\n        srcset=\"/static/6cd4771c097ebff7bd4aca4351efd934/a6d36/enterprise-buyer-guide-to-consumer-identity.png 650w,\n/static/6cd4771c097ebff7bd4aca4351efd934/e5715/enterprise-buyer-guide-to-consumer-identity.png 768w,\n/static/6cd4771c097ebff7bd4aca4351efd934/63ff0/enterprise-buyer-guide-to-consumer-identity.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-helpful-in-meeting-regulations\" style=\"position:relative;\"><a href=\"#4-helpful-in-meeting-regulations\" aria-label=\"4 helpful in meeting regulations 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. Helpful in meeting regulations.</h3>\n<p>Since IGA was essentially built to meet corporate regulations on data accessibility, it might seem obvious that it helps an entity meet these regulations. However, you will at first need to make sure that the necessary controls are in place to <a href=\"https://www.loginradius.com/blog/identity/2020/03/how-loginradius-helps-enterprises-stay-ccpa-compliant-in-2020/\">comply with the security and privacy standards</a> set out by data-laws.</p>\n<h3 id=\"5-support-to-auditing\" style=\"position:relative;\"><a href=\"#5-support-to-auditing\" aria-label=\"5 support to auditing 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. Support to auditing</h3>\n<p>Applications, devices, data, and stakeholders are all linked through the IGA solutions. Consequently, the system can determine who has access to which information, device, and/or application, hence, helping it in making access reports that are relevant to the questions that come up during regulatory auditing.</p>\n<h2 id=\"empower-your-business-using-loginradius-identity-governance-solution\" style=\"position:relative;\"><a href=\"#empower-your-business-using-loginradius-identity-governance-solution\" aria-label=\"empower your business using loginradius identity governance solution 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>Empower Your Business Using LoginRadius Identity Governance Solution</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 68.76923076923077%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsSAAALEgHS3X78AAABz0lEQVQ4y42TiXKbMBCGef93S5smmaa2x3ViwBzGgJBAB8ffXTAuNImnO7OzIK2+PaT18IUMw7CyLKbrIUwHYTtUpK4bPvh7uCOzU0821+0IcwRlkCVb0H9JuvT3/ifDC8FM2y93b1/KTeC7QN6YgVxa7aYD2hhobT5gOUt9DXgHONk5em1b7IMYhzBG02gYa9H3E6Tth1vp3rK0f5UlUQ5J7bCJS/zwMzwFF7y8x8hKiVJItN0EKkz7N8PlTS6FI/881/CFxS4ReDxN+v0Qwa8sJGXaaD368qWtMmyoB9wvRf1iEEtGmT1EEiEd3lKGD0GBb2GJx98RtlmNMJdw1sCRu5hLHvvjJpiwPaK6pVudnsP20uApUfiVNTgWNUHUqLtU4FBoRIKyoz7m5O/6xTvM6fBAG/u0xPMxRVRplBQgkRaBMGPZDA0qgxMrrfu0fqYKOLByq2cz3RBvbqhPr28n5IpukSIW2uGNMmHohoAvaT3CX0mf6XuX61tmq0mRFMGvHCLVIqDo56YdHTtShr2XGuHVcqn7vBnX+cF/Cpz7KK8zyjM7C49YTEGOBGPlUlNlRwD3LpRuNVXe8s19NS1sefR4YuwiGE8HJ7E88wfM8kPI8CvGfAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"loginradius-identity-governance-solution\"\n        title=\"loginradius-identity-governance-solution\"\n        src=\"/static/61a0eda89e45cff46e96a3657e063f79/e5715/loginradius-identity-governance-solution.png\"\n        srcset=\"/static/61a0eda89e45cff46e96a3657e063f79/a6d36/loginradius-identity-governance-solution.png 650w,\n/static/61a0eda89e45cff46e96a3657e063f79/e5715/loginradius-identity-governance-solution.png 768w,\n/static/61a0eda89e45cff46e96a3657e063f79/2bef9/loginradius-identity-governance-solution.png 1024w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>The fundamental factor underpinning IGA is <a href=\"https://www.loginradius.com/blog/identity/2020/07/data-governance-best-practices/\">data governance</a>. LoginRadius offers world-class data governance, which, consequently, bolsters your organization’s cybersecurity and the virtual security of your consumers.</p>\n<p>Here’s how LoginRadius’ data governance solutions are remarkably effective at aiding identity governance in your organization:</p>\n<ul>\n<li><strong>A network of data regions</strong>: LoginRadius allows you to serve consumers globally and, at the same time, meet the regional data privacy regulations like <a href=\"https://gdpr-info.eu/\">GDPR</a> through its worldwide network of data centers.</li>\n<li>\n<p><strong>Comprehensive Encryption</strong>: All data moving from one server to another does so over HTTPS tunnels that are encrypted using industry-standard ciphers.</p>\n<ul>\n<li>LoginRadius’ data solutions also let you encrypt data within the LoginRadius Cloud Directory. Depending on your needs, the encryption of user data can be one-way or two-way.</li>\n<li>Critical data, such as passwords, are hashed one-way by default. Thereby disallowing anyone, even database managers, from viewing this data.</li>\n</ul>\n</li>\n<li>\n<p><strong>Transparent data consent and preference management dashboard</strong>: </p>\n<ul>\n<li>The system actively asks for consent from new and existing consumers. You can customize the consent you request from them and thereby conveniently manage their data accordingly with the help of LoginRadius’ tracking system.</li>\n<li>The system also manages and remembers consumers’ preferences. Amongst other things, this includes their preferred mode of communication (e.g., emails, texts, notifications, etc.) and the privacy policies accepted and the ones not accepted.</li>\n</ul>\n</li>\n</ul>\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>The demand for IGA is growing year on year. The increased agility granted by introducing IGA in a company’s application ecosystem and elsewhere has logical merit. </p>\n<p>Needless to say, so does the issue of relevant access certification to designated stakeholders. With the automation of policy management and auditing, adding to its favor, identity governance seems immensely important in an increasingly agility-demanding and virtual work environment.</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":"December 16, 2020","updated_date":null,"description":"Needless to mention, the question of relevant certification of access to specified stakeholders also applies. In an increasingly agility-intensive and virtual work environment, identity governance seems immensely relevant with the automation of policy management and auditing, adding to its benefit.","title":"What is Identity Governance & Administration?","tags":["data security","identity governance","compliance"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.492537313432836,"src":"/static/fa5b59ab3823c6eaf17c6465ae99ce02/33aa5/identity-governanc.jpg","srcSet":"/static/fa5b59ab3823c6eaf17c6465ae99ce02/f836f/identity-governanc.jpg 200w,\n/static/fa5b59ab3823c6eaf17c6465ae99ce02/2244e/identity-governanc.jpg 400w,\n/static/fa5b59ab3823c6eaf17c6465ae99ce02/33aa5/identity-governanc.jpg 768w","sizes":"(max-width: 768px) 100vw, 768px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.jpg"}}}},{"node":{"excerpt":"Businesses are accountable to consumers that trust them with their personal data. So, they should not only be protecting it but also should…","fields":{"slug":"/identity/privacy-policy-management/"},"html":"<p>Businesses are accountable to consumers that trust them with their personal data. So, they should not only be protecting it but also should be explaining how they are managing and processing such data. </p>\n<p>Our recently launched Privacy Policy Management serves as the central place where businesses maintain versions of their privacy policy, notify consumers when it changes, or get their acceptance of the newer versions. </p>\n<p><img src=\"/c29788d47d12bf23b1516637bc3d2437/privacy-policy-loginradius.gif\" alt=\"privacy-policy-loginradius\"></p>\n<h2 id=\"intend-behind-the-launch\" style=\"position:relative;\"><a href=\"#intend-behind-the-launch\" aria-label=\"intend behind the launch 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>Intend Behind the Launch</h2>\n<p>With LoginRadius Privacy Policy Management, we achieve the following benefits for businesses. </p>\n<ul>\n<li><strong>Win consumer trust</strong>: With privacy policy briefing about consumer data collection and usage, businesses can give more clarity around what they're doing to <a href=\"https://www.loginradius.com/security/\">protect such data</a>, and in the process win consumers’ trust.</li>\n<li><strong>Easy implementation</strong>: Businesses can easily configure and deploy privacy policy versioning and related workflows from the LoginRadius Admin Console. It significantly saves time and development efforts.</li>\n<li><strong>Be compliance-ready</strong>: Businesses can be easily <a href=\"https://www.loginradius.com/compliances/\">compliant and audit-ready</a> by keeping a record of information like time of issuing a policy version, until when a policy version was effective, who agreed to which policy version, etc.</li>\n</ul>\n<h2 id=\"key-features-of-loginradius-privacy-policy-management\" style=\"position:relative;\"><a href=\"#key-features-of-loginradius-privacy-policy-management\" aria-label=\"key features of loginradius privacy policy 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>Key Features of LoginRadius Privacy Policy Management</h2>\n<p>As the global compliance and data protection landscape continue to evolve, LoginRadius offers the following capabilities:</p>\n<ul>\n<li>**Versions **- Businesses can name the privacy policy version after each update, making it easier to handle versioning.</li>\n<li>**Timestamps **- Businesses can set and manage the date and time from when a privacy policy version will be effective. They can set the schedule in advance, and the consumers are notified about the new version with a message of their choice to ensure personalization.</li>\n<li>**Flow Type **- Businesses can choose whether notifying the consumers about the privacy policy change is enough or <a href=\"https://www.loginradius.com/blog/identity/2020/06/consumer-data-privacy-security/\">consumers should provide acceptance</a> on the same. LoginRadius handles the notification or the acceptance process on their behalf. </li>\n</ul>\n<p><a href=\"https://www.loginradius.com/resource/privacy-policy-management-datasheet\"><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,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABh0lEQVQY0z2RS0tbQRiGD1L1GG9Bxba5qKQ1JsYoUXM3CcfEWI3iBQW1LYhLxdBNd9GNK39JiwuhRRB1IbpRN+7cCEKpLYFS0DTZ6ObpnDHHgZfh/ead5/uGUWqcQ+gydQ1R64oJxaXq9L0rhnGuS30bweRJ0hKaobk3SU1PCtWVQO2MopYzyhMsRqsvLUMN7gTm3hGafKO89Gcw9wzLCxLaGaHWm6JNW8STWsAUnKXam5Z12VDkFKO71T+OW5vDEZ3Cpc1jCWRQ3RqNHu1pAqHmvhTt4Qle96flAPbAGB3C24IZTAbQ6G4PTuCMz+JMCMVnsApvi05LiAGs707wauAd1sC4hLSFJ7H4x2gpZ56fXOkIs7N3ROFfkR8/f3H7O0/+z18KxRLJxVUqOgIo1n7WcttcXd+wu3/Ml28HfP1+yOnFJQcnZ5i9w1S9iaDon/HCERLFc/R1f3dHqVTk8fFB+tGP6yj2QZkJTi2zKqDvsxssredYyuZY+bzFh0+b1LnjVIsp/wMC/N9kbGhWMgAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"privacy-policy-management-datasheet\"\n        title=\"privacy-policy-management-datasheet\"\n        src=\"/static/4a6a4d40995fdda4041041c29221207a/e5715/privacy-policy-management-datasheet.png\"\n        srcset=\"/static/4a6a4d40995fdda4041041c29221207a/a6d36/privacy-policy-management-datasheet.png 650w,\n/static/4a6a4d40995fdda4041041c29221207a/e5715/privacy-policy-management-datasheet.png 768w,\n/static/4a6a4d40995fdda4041041c29221207a/81501/privacy-policy-management-datasheet.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=\"implementation-and-deployment\" style=\"position:relative;\"><a href=\"#implementation-and-deployment\" aria-label=\"implementation and deployment 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>Implementation and Deployment</h2>\n<p>LoginRadius supports the following implementation and deployment methods for Privacy Policy Management.</p>\n<ul>\n<li><strong>JavaScript:</strong> Implementation and deployment using LoginRadiusV2.js automatically populate the privacy policy message on the registration and login pages if the flow type is Strict in the configuration. </li>\n<li><strong>APIs</strong>: LoginRadius offers <a href=\"https://www.loginradius.com/identity-api/\">API support</a> to prompt consumers to view the privacy policy and allow them to accept it.</li>\n</ul>\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>Businesses cannot escape from maintaining privacy policy versions and workflows for their consumers. Looking forward, LoginRadius' Privacy Policy Management will effortlessly ensure a holistic insight into privacy policies where consumers are notified about new updates, everytime. </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":"December 16, 2020","updated_date":null,"description":"Our newly introduced Privacy Policy Management acts as the central place where companies retain versions of their privacy policy, inform customers when it changes, or get new versions adopted by them.","title":"Announcement: LoginRadius Embraces Privacy Policy Management Amid Heightened Regulatory Updates","tags":["compliance","data privacy","data security","cx"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.408450704225352,"src":"/static/02a23c9872be63fa3fa34ca9490470a2/6051d/privacy-policy-management.png","srcSet":"/static/02a23c9872be63fa3fa34ca9490470a2/69585/privacy-policy-management.png 200w,\n/static/02a23c9872be63fa3fa34ca9490470a2/497c6/privacy-policy-management.png 400w,\n/static/02a23c9872be63fa3fa34ca9490470a2/6051d/privacy-policy-management.png 769w","sizes":"(max-width: 769px) 100vw, 769px"}}},"author":{"id":"Kundan Singh","github":null,"avatar":null}}}},{"node":{"excerpt":"The goal of this post is to learn about the various ways of data migration in MongoDB that can help us to write scripts that change your…","fields":{"slug":"/engineering/live-data-migration-mongodb/"},"html":"<p>The goal of this post is to learn about the various ways of data migration in MongoDB that can help us to write scripts that change your database by adding new documents, modifying existing ones.</p>\n<p>If you're coming here for the first time, please take a look at the prequel <a href=\"https://www.loginradius.com/blog/engineering/self-hosted-mongo/\">Self-Hosted MongoDB</a>.</p>\n<p>Alright then, picking from where we left off, let's get started with the data migration in MongoDB.</p>\n<p>Now, the basic steps to migrate data from one MongoDB to another would be:</p>\n<ol>\n<li>Create a zipped backup of the existing data</li>\n<li>Dump the data in a new DB</li>\n</ol>\n<p>This is very straight forward when the source database is not online because we know that there won't be any new documents created/updated during the migration process.\nLet's look at simple migration first before diving into the live scenario.</p>\n<hr />\n<h1 id=\"migrating-from-an-offline-database-in-mongodb\" style=\"position:relative;\"><a href=\"#migrating-from-an-offline-database-in-mongodb\" aria-label=\"migrating from an offline database in mongodb 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>Migrating from an offline database in MongoDB</h1>\n<h2 id=\"creating-a-backup\" style=\"position:relative;\"><a href=\"#creating-a-backup\" aria-label=\"creating a backup permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Creating a backup</h2>\n<p>We're going to use an existing utility program <a href=\"https://docs.mongodb.com/database-tools/mongodump/\">mongodump</a> for creating the database backup.</p>\n<p>Run this command in the source database server</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"0\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">mongodump --host=&quot;hostname:port&quot; \\</span>\n<span class=\"grvsc-line\">  --username=&quot;username&quot; --password=&quot;password&quot; \\</span>\n<span class=\"grvsc-line\">  --authenticationDatabase &quot;admin&quot; \\</span>\n<span class=\"grvsc-line\">  --db=&quot;db name&quot; --collection=&quot;collection name&quot; --query=&#39;json&#39; \\</span>\n<span class=\"grvsc-line\">  --forceTableScan -v --gzip --out ./dump</span></code></pre>\n<p><strong><code>--host</code></strong>: The source MongoDB hostname along with the port. It defaults to <code>localhost:27017</code>. If it is a connection string you can use this option <code>—-uri=\"mongodb://username:password@host1[:port1]...\"</code></p>\n<p><strong><code>--username</code></strong>: Specifies a username to authenticate to a MongoDB database that uses authentication.</p>\n<p><strong><code>--password</code></strong>: Specifies a password to authenticate to a MongoDB database that uses authentication.</p>\n<p><strong><code>--authenticationDatabase</code></strong>: Specifies the authentication database where the specified <code>--username</code> has been created.</p>\n<blockquote>\n<p>If you do not specify an authentication database or a database to export, mongodump assumes the admin database holds the user's credentials.</p>\n</blockquote>\n<p><strong><code>--db</code></strong>: Specifies the database to take a backup from. If you do not specify a database, mongodump collects from all databases in this instance.</p>\n<blockquote>\n<p>Alternatively, you can also specify the database directly in the <a href=\"https://docs.mongodb.com/database-tools/mongodump/#cmdoption-mongodump-uri\">URI connection string</a> i.e. <code>mongodb://username:password@uri/dbname</code>. <br /> Providing a connection string while also using <code>--db</code> and specifying conflicting information <strong>will result in an error</strong>.</p>\n</blockquote>\n<p><strong><code>--collection</code></strong>: Specifies a collection to backup. If you do not specify a collection, this option copies all collections in the specified database or instance to the dump files.</p>\n<p><strong><code>--query</code></strong> : Provides a <a href=\"https://docs.mongodb.com/manual/reference/glossary/#term-json-document\">JSON document</a> as a query that optionally limits the documents included in the output of mongodump. <br />\nYou must enclose the query document in single quotes <code>('{ ... }')</code> to ensure that it does not interact with your  environment.<br />\nThe query must be in <a href=\"https://docs.mongodb.com/manual/reference/mongodb-extended-json\">Extended JSON v2 format (either relaxed or canonical/strict mode)</a>, including enclosing the field names and operators in quotes e.g. <code>'{ \"created_at\": { \"\\$gte\": ISODate(...) } }'</code>.</p>\n<blockquote>\n<p>To use the <code>--query</code> option, you must also specify the <a href=\"https://docs.mongodb.com/database-tools/mongodump/#cmdoption-mongodump-collection\"><code>--collection</code></a> option.</p>\n</blockquote>\n<p><strong><code>--forceTableScan</code></strong>: Forces mongodump to scan the data store directly. Typically, mongodump saves entries as they appear in the index of the <code>_id</code> field. <br /></p>\n<blockquote>\n<p>If you specify a query <code>--query</code>, mongodump will use the most appropriate index to support that query. <br /><strong>Hence , you cannot use <a href=\"https://docs.mongodb.com/database-tools/mongodump/#cmdoption-mongodump-forcetablescan\"><code>--forceTableScan</code></a> with the <a href=\"https://docs.mongodb.com/database-tools/mongodump/#cmdoption-mongodump-query\"><code>--query</code></a> option</strong>.</p>\n</blockquote>\n<p><strong><code>--gzip</code></strong>: Compresses the output. If mongodump outputs to the dump directory, the new feature compresses the individual files. The files have the suffix <code>.gz</code>.</p>\n<p><strong><code>--out</code></strong>: Specifies the directory where mongodump will write <a href=\"https://docs.mongodb.com/manual/reference/glossary/#term-bson\"><code>BSON</code></a> files for the dumped databases. By default, mongodump saves output files in a directory named dump in the current working directory.</p>\n<h2 id=\"restoring-the-backup\" style=\"position:relative;\"><a href=\"#restoring-the-backup\" aria-label=\"restoring the backup 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>Restoring the backup</h2>\n<p>We will use a utility program called <a href=\"https://docs.mongodb.com/database-tools/mongorestore/\"><code>mongorestore</code></a> for restoring the database backup.</p>\n<p>Copy the backup directory dump to the new Database instance and run the following command:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"1\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">mongorestore --uri=&quot;mongodb://user:password@host:port/?authSource=admin&quot; \\</span>\n<span class=\"grvsc-line\">  --drop --noIndexRestore --gzip -v ./dump</span></code></pre>\n<p>Replace the credentials with the new database credentials. Unline in the previous step, the <code>--authenticationDatabase</code> option is specified in the URI string.</p>\n<p>Also, use <code>--gzip</code> if used while creating the backup.</p>\n<p><strong><code>--drop</code></strong>: Before restoring the collections from the dumped backup, drops the collections from the target database. It does not drop collections that are not in the backup.\n<strong><code>--noIndexRestore</code></strong>: Prevents mongorestore from restoring and building indexes as specified in the corresponding mongodump output.</p>\n<blockquote>\n<p>If you want to change name of the database while restoring, you can do so using <br /><code>--nsFrom=\"old_name.*\" --nsTo=\"new_name.*\"</code> options.<br /><br />However, it won’t work if you were to migrate with <code>oplogs</code> which is a requirement in migration from an online instance.</p>\n</blockquote>\n<hr />\n<h1 id=\"migrating-from-an-online-database-in-mongodb\" style=\"position:relative;\"><a href=\"#migrating-from-an-online-database-in-mongodb\" aria-label=\"migrating from an online database in mongodb 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>Migrating from an online database in MongoDB</h1>\n<p>The only challenge with migrating from an online database is not able to pause the updates during migration. So here is the overview of the steps,</p>\n<ol>\n<li>Run an initial bulk migration with <code>oplogs</code> capture</li>\n<li>Run a sync job to mitigate the database connection switch latency</li>\n</ol>\n<blockquote>\n<p>Now, to capture <code>oplogs</code>, a replica set must be initialized in the source and destination databases. This is because the <code>oplogs</code> are captured from <strong><code>local.oplog.rs</code></strong> namespace, which is created after initializing a replica set. <br /><br />You can follow <a href=\"https://medium.com/swlh/self-hosted-mongodb-deployment-7f1b6fb4973f#1cdf\">this guide</a> to configure a replica set.</p>\n</blockquote>\n<h2 id=\"initial-migration-with-oplog-capture\" style=\"position:relative;\"><a href=\"#initial-migration-with-oplog-capture\" aria-label=\"initial migration with oplog capture 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>Initial Migration with Oplog Capture</h2>\n<p>Oplogs, in simple words, are the operation logs created per operation in the database. They represent a partial document state or, in other words, the database state. So we are going to capture any updates in our old database during the migration process using these <code>oplogs</code>.</p>\n<p>Run the mongodump program with the following options,</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"2\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">mongodump --uri=&quot;.../?authSource=admin&quot; \\</span>\n<span class=\"grvsc-line\">  --forceTableScan --oplog \\</span>\n<span class=\"grvsc-line\">  --gzip -v --out ./dump</span></code></pre>\n<p><strong><code>--oplog</code></strong>: Creates a file named <code>oplog.bson</code> as part of the <code>mongodump</code> output. The <code>oplog.bson</code> file, located in the top level of the output directory, contains <code>oplog</code> entries that occur during the mongodump operation. This file provides an effective point-in-time snapshot of the state of our database instance.</p>\n<h2 id=\"restore-the-data-with-oplog-replay\" style=\"position:relative;\"><a href=\"#restore-the-data-with-oplog-replay\" aria-label=\"restore the data with oplog replay 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>Restore the data with oplog replay</h2>\n<p>In order to replay the oplogs, a special role is required. Let's create and assign the role to the database user being used for migration.</p>\n<h3 id=\"create-the-role\" style=\"position:relative;\"><a href=\"#create-the-role\" aria-label=\"create the role 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>Create the role</h3>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"3\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">db.createRole({</span>\n<span class=\"grvsc-line\">  role: &quot;interalUseOnlyOplogRestore&quot;,</span>\n<span class=\"grvsc-line\">  privileges: [</span>\n<span class=\"grvsc-line\">    {</span>\n<span class=\"grvsc-line\">      resource: { anyResource: true },</span>\n<span class=\"grvsc-line\">      actions: [ &quot;anyAction&quot; ] </span>\n<span class=\"grvsc-line\">    }</span>\n<span class=\"grvsc-line\">  ],</span>\n<span class=\"grvsc-line\">  roles: []</span>\n<span class=\"grvsc-line\">})</span></code></pre>\n<h3 id=\"assign-the-role\" style=\"position:relative;\"><a href=\"#assign-the-role\" aria-label=\"assign the role 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>Assign the role</h3>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"4\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">db.grantRolesToUser(</span>\n<span class=\"grvsc-line\">  &quot;admin&quot;,</span>\n<span class=\"grvsc-line\">  [{ role:&quot;interalUseOnlyOplogRestore&quot;, db:&quot;admin&quot; }]</span>\n<span class=\"grvsc-line\">);</span></code></pre>\n<p>Now you can restore using the mongorestore program with the following options,</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"5\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">mongorestore --uri=&quot;mongodb://admin:.../?authSource=admin&quot; \\</span>\n<span class=\"grvsc-line\">  --oplogReplay </span>\n<span class=\"grvsc-line\">  --gzip -v ./dump</span></code></pre>\n<p>In the above command, using the same user <strong><code>admin</code></strong> with whom the role was associated.</p>\n<p><strong><code>--oplogReplay</code></strong>: After restoring the database dump, replays the oplog entries from a bson file and restores the database to the point-in-time backup captured with the mongodump <code>--oplog</code> command.</p>\n<h2 id=\"mitigating-database-connection-switch-latency\" style=\"position:relative;\"><a href=\"#mitigating-database-connection-switch-latency\" aria-label=\"mitigating database connection switch latency 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>Mitigating database connection switch latency</h2>\n<p>Alright, so far we are done with most of the heavy lifting. The only thing that remains is maintaining consistency between the databases during the connection switch in our application servers.</p>\n<blockquote>\n<p>If you're running MongoDB version 3.6+, it's better to go for the Change Stream approach, which is a event-based mechanism introduced to capture changes in your database in an optimized way. Here is an article that covers it : <a href=\"https://www.mongodb.com/blog/post/an-introduction-to-change-streams\">An Introduction to Change Streams</a></p>\n</blockquote>\n<p>Check out the <a href=\"https://gist.github.com/cnp96/7be1756f7eb76ea78c9b832966e84dbf#file-delta-sync-sh\">generic sync script</a>, which you can run as a CRON job every minute.</p>\n<p>Update the variables in this script and run as</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"6\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">$ ./delta-sync.sh from_epoch_in_milliseconds</span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"># from_epoch_in_milliseconds is automatically picked with every iteration if not supplied</span></code></pre>\n<p>Or you can set up a cron job to run this every minute.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"7\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">* * * * * ~/delta-sync.sh</span></code></pre>\n<p>The output can be monitored with the following command (I'm running RHEL 8, refer to your OS guide for cron output)</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"8\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">$ tail -f /var/log/cron | grep CRON</span></code></pre>\n<p>This is a sample sync log.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"9\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">CMD (~/cron/dsync.sh)</span>\n<span class=\"grvsc-line\">CMDOUT (INFO: Updated log registry to use new timestamp on next run.)</span>\n<span class=\"grvsc-line\">CMDOUT (INFO: Created sync directory: /home/ec2-user/cron/dump/2020-11-03T19:01:01Z)</span>\n<span class=\"grvsc-line\">CMDOUT (Fetching oplog in range [2020-11-03T19:00:01Z - 2020-11-03T19:01:01Z])</span>\n<span class=\"grvsc-line\">CMDOUT (2020-11-03T19:01:02.319+0000#011dumping up to 1 collections in parallel)</span>\n<span class=\"grvsc-line\">CMDOUT (2020-11-03T19:01:02.334+0000#011writing local.oplog.rs to /home/ec2-user/cron/dump/2020-11-03T19:01:01Z/local/oplog.rs.bson.gz)</span>\n<span class=\"grvsc-line\">CMDOUT (2020-11-03T19:01:04.943+0000#011local.oplog.rs  0)</span>\n<span class=\"grvsc-line\">CMDOUT (2020-11-03T19:01:04.964+0000#011local.oplog.rs  0)</span>\n<span class=\"grvsc-line\">CMDOUT (2020-11-03T19:01:04.964+0000#011done dumping local.oplog.rs (0 documents))</span>\n<span class=\"grvsc-line\">CMDOUT (INFO: Dump success!)</span>\n<span class=\"grvsc-line\">CMDOUT (INFO: Replaying oplogs...)</span>\n<span class=\"grvsc-line\">CMDOUT (2020-11-03T19:01:05.030+0000#011using write concern: &{majority false 0})</span>\n<span class=\"grvsc-line\">CMDOUT (2020-11-03T19:01:05.054+0000#011will listen for SIGTERM, SIGINT, and SIGKILL)</span>\n<span class=\"grvsc-line\">CMDOUT (2020-11-03T19:01:05.055+0000#011connected to node type: standalone)</span>\n<span class=\"grvsc-line\">CMDOUT (2020-11-03T19:01:05.055+0000#011mongorestore target is a directory, not a file)</span>\n<span class=\"grvsc-line\">CMDOUT (2020-11-03T19:01:05.055+0000#011preparing collections to restore from)</span>\n<span class=\"grvsc-line\">CMDOUT (2020-11-03T19:01:05.055+0000#011found collection local.oplog.rs bson to restore to local.oplog.rs)</span>\n<span class=\"grvsc-line\">CMDOUT (2020-11-03T19:01:05.055+0000#011found collection metadata from local.oplog.rs to restore to local.oplog.rs)</span>\n<span class=\"grvsc-line\">CMDOUT (2020-11-03T19:01:05.055+0000#011restoring up to 4 collections in parallel)</span>\n<span class=\"grvsc-line\">CMDOUT (2020-11-03T19:01:05.055+0000#011replaying oplog)</span>\n<span class=\"grvsc-line\">CMDOUT (2020-11-03T19:01:05.055+0000#011applied 0 oplog entries)</span>\n<span class=\"grvsc-line\">CMDOUT (2020-11-03T19:01:05.055+0000#0110 document(s) restored successfully. 0 document(s) failed to restore.)</span>\n<span class=\"grvsc-line\">CMDOUT (INFO: Restore success!)</span></code></pre>\n<p>You can stop this script after verifying that no more <code>oplogs</code> are being created, i.e., when source DB went offline.</p>\n<p>This concludes the complete self-hosted MongoDB data migration guide. If you want to learn more about MongoDB here is a useful resource on <a href=\"https://www.loginradius.com/blog/engineering/mongodb-as-datasource-in-golang/\">how to use MongoDB as datasource in goLang</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</style>","frontmatter":{"date":"December 14, 2020","updated_date":null,"description":"This article covers the guide to migrate data from offline or live MongoDB instance using oplog replay alongside mitigate connection switch latency with existing utilities.","title":"How to Migrate Data In MongoDB","tags":["MongoDB"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.4184397163120568,"src":"/static/90f92104129cbc152fa1d9a64c58d7be/ee604/index.png","srcSet":"/static/90f92104129cbc152fa1d9a64c58d7be/69585/index.png 200w,\n/static/90f92104129cbc152fa1d9a64c58d7be/497c6/index.png 400w,\n/static/90f92104129cbc152fa1d9a64c58d7be/ee604/index.png 800w,\n/static/90f92104129cbc152fa1d9a64c58d7be/31987/index.png 1000w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Chinmaya Pati","github":"cnp96","avatar":null}}}},{"node":{"excerpt":"For many businesses, login security is still an unexplored corner that does not get much attention.  In reality, there are so many mistakes…","fields":{"slug":"/identity/login-security/"},"html":"<p>For many businesses, login security is still an unexplored corner that does not get much attention. </p>\n<p>In reality, there are so many mistakes that can leave your account vulnerable to cyber threats. Hackers can read your email, transfer money out of your bank account, sell your data in the dark web, expose your session to a CSRF attack, hijacked sessions, etc. </p>\n<p>No wonder security executives and flag bearers emphasize the advantages of a secure and optimized login process—not just from the consumer's perspective but also from ensuring business credibility. </p>\n<h2 id=\"5-most-common-login-security-vulnerabilities\" style=\"position:relative;\"><a href=\"#5-most-common-login-security-vulnerabilities\" aria-label=\"5 most common login security vulnerabilities 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 Most Common Login Security Vulnerabilities</h2>\n<p>It's hard out there to secure login. If a hacker gets hold of your account, they can do anything with it (it can get as worse as leaving the account owner bankrupt). </p>\n<p>So when you ask how bad can it get, you are actually asking about the common login security vulnerabilities. And that means you need to be on the lookout for the following flaws:  </p>\n<h3 id=\"1-user-generated-credentials\" style=\"position:relative;\"><a href=\"#1-user-generated-credentials\" aria-label=\"1 user generated credentials 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. User-generated credentials:</h3>\n<p>When consumers create their own passwords, there is always a possibility that they will come up with credentials that are weak and easily vulnerable to cyber attacks. Because consumers are more inclined to have something that's easy to remember, they may subconsciously skip <a href=\"https://www.loginradius.com/blog/engineering/password-security-best-practices-compliance/\">password security best practices</a>. As a result, hackers can adjust their brute-force systems and crack open passwords in no time. </p>\n<h3 id=\"2-brute-force-attacks\" style=\"position:relative;\"><a href=\"#2-brute-force-attacks\" aria-label=\"2 brute force attacks 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. Brute-force attacks:</h3>\n<p>When hackers use a method of trial and error to guess correct passwords, that's a <a href=\"https://www.infosecurity-magazine.com/opinions/ogin-brute-force-attacks/\">brute-force attack</a>. Usually, these attacks are automated using a list of frequently used usernames and passwords. Hackers use dedicated tools to make vast numbers of login attempts at high speed. </p>\n<h3 id=\"3-lack-of-password-complexity\" style=\"position:relative;\"><a href=\"#3-lack-of-password-complexity\" aria-label=\"3 lack of password complexity 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. Lack of password complexity:</h3>\n<p>It's one thing to educate your consumers about password complexity; for example, they should use upper case letters, numbers, and special characters. But it is an entirely different story when you take the initiative to implement it. Ensure that for every account, a consumer's password is unique. That means no repeats!</p>\n<h3 id=\"4-unpatched-security-vulnerabilities\" style=\"position:relative;\"><a href=\"#4-unpatched-security-vulnerabilities\" aria-label=\"4 unpatched security vulnerabilities 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. Unpatched security vulnerabilities:</h3>\n<p>While thousands of threats are discovered daily, one of the greatest risks an organization may take is failing to repair or \"patch\" certain vulnerabilities once they are found. It is quite common for consumers to dismiss the \"update available\" alerts that show up in some programs because they do not want to waste a few minutes of their time. They aren't aware of the fact that updating patches can save them from ruthless cyberattacks. </p>\n<h3 id=\"5-social-engineering-attacks\" style=\"position:relative;\"><a href=\"#5-social-engineering-attacks\" aria-label=\"5 social engineering attacks 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. Social engineering attacks:</h3>\n<p>It happens when hackers psychologically manipulate consumers into giving up their login credentials. Some common warning signs of <a href=\"https://www.loginradius.com/blog/identity/2020/10/social-engineering-attacks/\">social engineering attacks</a> include asking for immediate assistance, luring with too good to be true offers, and threatening reprimands if their requests are ignored. </p>\n<h2 id=\"7-best-login-security-practices-that-enterprises-should-follow\" style=\"position:relative;\"><a href=\"#7-best-login-security-practices-that-enterprises-should-follow\" aria-label=\"7 best login security practices that enterprises should follow 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 Best Login Security Practices That Enterprises Should Follow</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 60.61538461538461%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsSAAALEgHS3X78AAAB40lEQVQoz2VT25LaMAzl/7+qfeqUPrCzMF1IYEu5LrmT2LHj2DmVvHgJ1DOK7CQ6PjqSJsMwgJe2DoW2EP0ASVbR3t2+8RpG+3AWxuFqBjTk6Y1/P+GHsQMKZdGZHtYY1FLhcFWICoW8Neis+wIxtGffUsy5bLD+s0PetETE3QGZTe/opqbBbJ9jus0QnQus8hZvqSRwjaazPoDBnXOQdDx+JPj26xXLVODaPQE6AtxeCkzPAi8Xid/7FDEBRmQMuKuUZxdWS7IkdUssBaKygzT2DsjoUhu8bA74ER3wMz5gtjliReyY5bHW2JYKleofdCy1Q036jSWZfKYxIGt7bHOBdXLFhi0TmCcSf4nZnhiyT6VB0FySZgmdxU2KULRJ2LT0wypXiKkQ7GcfAu8FsSMwBgwMWeucCii6HsZ9doMw9pFhAOWAVSa9bjPS8S1TWObMUHkdeyoGt0jTalxrgYrMWUupW1g3Yjg2bpP5RWBxKrG+lJifKiwo9YugdqL0UmKnlEZWS39RKjqfnQ5tE9jdG3zwRZguYnxfHhAnNXbEjjXj5s8pCw7W1LNH0SOjC8ZD8JXy2ErfRg4nYrWtDbWEe5gQHgKeklL3/oL/qvw8XsyEQTlFDnBPWbBXN8ZBu/DtH6VSocbSKH1FAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"login-security-vulnerabilities\"\n        title=\"login-security-vulnerabilities\"\n        src=\"/static/f369ef3fbc28d460e4341e2f8ddd50f5/e5715/login-security-vulnerabilities.png\"\n        srcset=\"/static/f369ef3fbc28d460e4341e2f8ddd50f5/a6d36/login-security-vulnerabilities.png 650w,\n/static/f369ef3fbc28d460e4341e2f8ddd50f5/e5715/login-security-vulnerabilities.png 768w,\n/static/f369ef3fbc28d460e4341e2f8ddd50f5/2bef9/login-security-vulnerabilities.png 1024w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>Each risk has individual implications. Therefore, to keep your consumer's login secure, you need to prevent as many vulnerabilities as possible. Here are a few best login security practices that every organization should follow. </p>\n<h3 id=\"1-password-hashing-is-a-must\" style=\"position:relative;\"><a href=\"#1-password-hashing-is-a-must\" aria-label=\"1 password hashing is a must 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. Password hashing is a must.</h3>\n<p>Handle consumers' login credentials with care. Never store them as plaintext passwords. Instead, go for <a href=\"https://www.loginradius.com/docs/infrastructure-and-security/cryptographic-hashing-algorithms/\">cryptographically strong password</a> hashes that can not be reversed. You can create those with PBKDF2, Argon2, Scrypt, or Bcrypt. </p>\n<p>It is important to salt the hash with a value special to that particular login credential. Do not use obsolete hashing technologies such as MD5, SHA1, and you should not use reversible encryption in any condition or attempt to develop your own hashing algorithm.</p>\n<h3 id=\"2-biometric-authentication-to-your-rescue\" style=\"position:relative;\"><a href=\"#2-biometric-authentication-to-your-rescue\" aria-label=\"2 biometric authentication to your rescue 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. Biometric authentication to your rescue.</h3>\n<p>Biometric authentication is a strong authentication and identity solution that relies on an individual's specific biological features like fingerprint, retina, face recognition, or voice to verify the individual's authenticity. </p>\n<p>The greatest advantage of biometrics is that in order to gather the information needed to circumvent the login, a hacker must be in the individual's physical vicinity. And that's not always possible!</p>\n<h3 id=\"3-multi-factor-authentication-never-fails-to-defend\" style=\"position:relative;\"><a href=\"#3-multi-factor-authentication-never-fails-to-defend\" aria-label=\"3 multi factor authentication never fails to defend 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. Multi-factor authentication never fails to defend.</h3>\n<p><a href=\"https://www.loginradius.com/blog/identity/2019/06/what-is-multi-factor-authentication/\">Multi-factor authentication</a> or MFA is adding multiple layers to the login process. If a hacker has compromised one of the factors, the chances of another factor still being compromised are low, so having multiple authentication factors offers a greater degree of certainty about the login security of consumers. </p>\n<p>However, note that each security layer should be guarded by a different tags: something your consumers know, something they have, or something they are. For example, if your consumer has associated their phone number as the second layer of authentication, a one-time passcode (OTP) will be sent to the phone. So, if hackers do not have the phone, they cannot get the code, meaning they cannot log in. </p>\n<p><a href=\"https://www.loginradius.com/resource/the-enterprise-buyers-guide-to-consumer-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,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABaklEQVQY00WRPU/CUBSGGwdoaUNBQEEIiFW+Rb5bQGjk0yZoNCQqBhLDqIm6OIkuTvwS42JiXDSaODDp5OZi4k95vYUWhjfn3nPOfd57z6WYwCZUmYIlcKEyuLAmslZzel0VvVqAKVqBXdqHLV4FE6uBDsmg14qTOomUDnNEZVgEEawvDdabgiMiw51swBKZHWBI5OJ1eCsdRGtHYKU26HgTJpKnNVNKJwuigqLSgdQ8hNg4gC9RAe/PToGqWHLrhWQdrlQDzvQ23OkmPFkF1vXq1HQMNJCnRMt7qLf7KLe6kHd6sAfyMC9nJkDN3Uj61N7FVBNeqQVnRiHjkWEQ8jOg7mwNFMAsbYBxJ8B4kuD8OfAakCUzpVwJnA2G+Pn9w+PLB+6fXvHw/IbR1zfeR5+wxLYIuKADS7CFSzCviDCTZ84Hi+AFCTzZq0DVec6Xg7h7gtPrIboXNzg+H4zVv7pD7/J2/JFGwvoHASvB1iSVXD0AAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"enterprise-buyer-guide-to-consumer-identity\"\n        title=\"enterprise-buyer-guide-to-consumer-identity\"\n        src=\"/static/6cd4771c097ebff7bd4aca4351efd934/e5715/enterprise-buyer-guide-to-consumer-identity.png\"\n        srcset=\"/static/6cd4771c097ebff7bd4aca4351efd934/a6d36/enterprise-buyer-guide-to-consumer-identity.png 650w,\n/static/6cd4771c097ebff7bd4aca4351efd934/e5715/enterprise-buyer-guide-to-consumer-identity.png 768w,\n/static/6cd4771c097ebff7bd4aca4351efd934/63ff0/enterprise-buyer-guide-to-consumer-identity.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-password-hygiene-is-a-necessity\" style=\"position:relative;\"><a href=\"#4-password-hygiene-is-a-necessity\" aria-label=\"4 password hygiene is a necessity 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. Password hygiene is a necessity.</h3>\n<p>Force your consumers to choose a strong password. Here are a few tips that will ensure that their login security is as strong as possible.</p>\n<ul>\n<li>Do not allow your consumers to use personal information like names of family members, pets, phone numbers, birthdays, or any data that is publicly available. </li>\n<li>Do not allow dictionary words, proper nouns, or letter and number combinations like abc123. Instead, use special characters such as \"&#x26;\" or \"$.\"</li>\n<li>Set the minimum limit to 10 characters.</li>\n<li>Encourage passphrase like a general statement and then pick the first letter from each word. For example, \"i love watching the big bang theory at 10 pm\" could become \"ilYtbbt@10p.\"</li>\n<li>Force consumers to change computer login passwords at least once every month or two. </li>\n<li>Do not allow them to use the same passwords for different accounts. </li>\n</ul>\n<h3 id=\"5-limit-login-and-password-reset-attempts\" style=\"position:relative;\"><a href=\"#5-limit-login-and-password-reset-attempts\" aria-label=\"5 limit login and password reset attempts 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. Limit login and password reset attempts.</h3>\n<p>Suppose you allow consumers to enter their login credentials or reset their passwords as many times they want. In that case, hackers may indulge in brute-force attempts by entering different combinations until the <a href=\"https://www.loginradius.com/blog/identity/prevent-credential-stuffing-attacks/\">account is cracked</a>. </p>\n<p>Therefore, it is a good practice to limit the number of failed login attempts per user or block the user based on the IP. You can also add a captcha, say, after the fifth attempt. But don't add the captcha after the first attempt, it does not sound right from the consumer experience. </p>\n<h3 id=\"6-limit-session-length\" style=\"position:relative;\"><a href=\"#6-limit-session-length\" aria-label=\"6 limit session length 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. Limit session length.</h3>\n<p>Session length is a frequently neglected component of security and authentication. You may have a good justification to keep a session open indefinitely. But from a login security point of view, you need to set thresholds for active sessions, after which you should ask for passwords, a <a href=\"https://www.loginradius.com/single-sign-on/\">second factor of authentication</a>, or other methods of verification to allow re-entry. </p>\n<p>Consider how long a user should be allowed to remain inactive before you prompt them to re-authenticate. That's up to you. Also, prompt the user to re-verify in all active sessions after changing the password. </p>\n<h3 id=\"7-building-a-secure-auth-with-ciam\" style=\"position:relative;\"><a href=\"#7-building-a-secure-auth-with-ciam\" aria-label=\"7 building a secure auth with ciam 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. Building a secure auth with CIAM</h3>\n<p>If you are using a consumer identity and access management service like LoginRadius, a lot of login security issues are addressed for you automatically. Some of the common activities include:</p>\n<ul>\n<li>Implementation of password reset options. </li>\n<li>Limitation of login attempts.</li>\n<li>Details of login activities.</li>\n<li>Locking out accounts after too many unsuccessful login attempts.</li>\n<li>Two-factor authentication or MFA for unrecognized devices, locations, or accounts.</li>\n</ul>\n<p>These are possible improvements, basic for any enterprise. Engineering them properly into your consumer accounts can prevent login security abuse to a great extent. </p>\n<h2 id=\"advanced-authentication-methods\" style=\"position:relative;\"><a href=\"#advanced-authentication-methods\" aria-label=\"advanced authentication methods 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>Advanced Authentication Methods</h2>\n<p>To combat these common vulnerabilities, organizations can implement advanced authentication methods. Here are some effective strategies:</p>\n<h3 id=\"password-hashing\" style=\"position:relative;\"><a href=\"#password-hashing\" aria-label=\"password hashing 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>Password Hashing</h3>\n<ul>\n<li>Password hashing is a must. Handle consumers' login credentials with care. Never store them as plaintext passwords. Instead, go for cryptographically strong password hashes that cannot be reversed. Use methods like PBKDF2, Argon2, Scrypt, or Bcrypt.</li>\n<li>Salting the hash: It's important to salt the hash with a value special to that particular login credential. Do not use obsolete hashing technologies such as MD5 or SHA1, and avoid reversible encryption at all costs.</li>\n</ul>\n<h3 id=\"biometric-authentication\" style=\"position:relative;\"><a href=\"#biometric-authentication\" aria-label=\"biometric 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>Biometric Authentication</h3>\n<ul>\n<li>Biometric authentication to your rescue. Biometric authentication relies on an individual's specific biological features like fingerprint, retina, face recognition, or voice to verify authenticity. This method adds a significant layer of security, as a hacker must physically possess the individual's biological data to bypass it.</li>\n</ul>\n<h3 id=\"multi-factor-authentication-mfa\" style=\"position:relative;\"><a href=\"#multi-factor-authentication-mfa\" aria-label=\"multi factor authentication mfa permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Multi-Factor Authentication (MFA)</h3>\n<ul>\n<li>Multi-factor authentication never fails to defend. Adding multiple layers to the login process significantly enhances security. Even if a hacker compromises one factor, the chances of compromising another factor are low. Use different authentication factors such as something your consumers know (like a password), something they have (like a phone), or something they are (biometrics).</li>\n</ul>\n<h3 id=\"password-hygiene\" style=\"position:relative;\"><a href=\"#password-hygiene\" aria-label=\"password hygiene 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>Password Hygiene</h3>\n<ul>\n<li>\n<p>Password hygiene is a necessity. Encourage consumers to choose strong passwords by enforcing rules such as:</p>\n<ul>\n<li>Not using personal information like names of family members, pets, or birthdays.</li>\n<li>Avoiding dictionary words, proper nouns, or simple letter and number combinations.</li>\n<li>Setting a minimum limit to password length (e.g., 10 characters).</li>\n<li>Encouraging passphrases instead of passwords (e.g., \"ilYtbbt@10p\").</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"limiting-login-attempts-and-session-length\" style=\"position:relative;\"><a href=\"#limiting-login-attempts-and-session-length\" aria-label=\"limiting login attempts and session length 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>Limiting Login Attempts and Session Length</h3>\n<ul>\n<li>Limit login and password reset attempts. Prevent brute-force attacks by limiting the number of failed login attempts per user or IP address. Consider adding a captcha after a certain number of attempts.</li>\n<li>Limit session length. Set thresholds for active sessions, prompting re-authentication after a certain period of inactivity. This reduces the risk of unauthorized access.</li>\n</ul>\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>Authenticating consumers is tricky and cumbersome. Taken together, a <a href=\"https://www.loginradius.com/\">CIAM solution</a> can help a great deal in offering login security. It incorporates the above techniques and all best practices to filter authorized access and prevent common attack scenarios. </p>\n<h2 id=\"faqs\" style=\"position:relative;\"><a href=\"#faqs\" aria-label=\"faqs 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>FAQs</h2>\n<p><strong>1. What do you mean by login security?</strong></p>\n<p>Login security refers to measures taken to protect your login credentials (such as usernames and passwords) from unauthorized access, ensuring the safety of your online accounts.</p>\n<p><strong>2. How do I make my login secure?</strong></p>\n<p>To make your login secure, use strong, unique passwords, enable multi-factor authentication (MFA), avoid sharing login information, and be cautious of phishing attempts.</p>\n<p><strong>3. How do I protect my login information?</strong></p>\n<p>Protect your login information by using secure passwords, avoiding public Wi-Fi for logging in, enabling two-factor authentication, and regularly updating your passwords.</p>\n<p><strong>4. What is the difference between login security and rights security?</strong></p>\n<p>Login security focuses on protecting the access to an account through authentication methods like passwords and biometrics. Rights security involves managing permissions and access levels within an account and determining what actions a user can perform once logged in.</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":"December 11, 2020","updated_date":null,"description":"In reality, there are so many mistakes that can make your account vulnerable to cyber attacks. Hackers can read your email, steal money out of your bank account, or sell your data in the dark web. Therefore you need to eliminate as many vulnerabilities as possible to keep your login safe.","title":"Login Security: 7 Best Practice to Keep Your Online Accounts Secure","tags":["data security","login security","mfa","ciam solution"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/4426e8e3d9b1b4609c6d6ccb52c1097c/33aa5/login-security.jpg","srcSet":"/static/4426e8e3d9b1b4609c6d6ccb52c1097c/f836f/login-security.jpg 200w,\n/static/4426e8e3d9b1b4609c6d6ccb52c1097c/2244e/login-security.jpg 400w,\n/static/4426e8e3d9b1b4609c6d6ccb52c1097c/33aa5/login-security.jpg 768w","sizes":"(max-width: 768px) 100vw, 768px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.jpg"}}}}]},"markdownRemark":{"excerpt":"Identity is evolving, and developers are at the forefront of this transformation. Every day brings a new learning—adapting to new standards…","fields":{"slug":"/identity/developer-first-identity-provider-loginradius/"},"html":"<p>Identity is evolving, and developers are at the forefront of this transformation. Every day brings a new learning—adapting to new standards and refining approaches to building secure, seamless experiences.</p>\n<p>We’re here to support developers on that journey. We know how important simplicity, efficiency, and well-structured documentation are when working with identity and access management solutions. That’s why we’ve redesigned the <a href=\"https://www.loginradius.com/\">LoginRadius website</a>—to be faster, more intuitive, and developer-first in every way.</p>\n<p>The goal? Having them spend less time searching and more time building.</p>\n<h2 id=\"whats-new-and-improved-on-the-loginradius-website\" style=\"position:relative;\"><a href=\"#whats-new-and-improved-on-the-loginradius-website\" aria-label=\"whats new and improved on the loginradius website permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What’s New and Improved on the LoginRadius Website?</h2>\n<p>LoginRadius’ vision is to give developers a product that simplifies identity management so they can focus on building, deploying, and scaling their applications. To enhance this experience, we’ve spent the last few months redesigning our interface— making navigation more intuitive and reassuring that essential resources are easily accessible.</p>\n<p>Here’s a closer look at what’s new and why it’s important:</p>\n<h3 id=\"a-developer-friendly-dark-theme\" style=\"position:relative;\"><a href=\"#a-developer-friendly-dark-theme\" aria-label=\"a developer friendly dark theme permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>A Developer-Friendly Dark Theme</h3>\n<p><img src=\"/f46881583c7518a93bb24e94c32320de/a-developer-friendly-dark-theme.webp\" alt=\"This image shows how LoginRadius offers several authentication methods like traditional login, social login, passwordless login, passkeys and more in a dark mode.\">    </p>\n<p>Developers spend long hours working in dark-themed IDEs and terminals, so we’ve designed the LoginRadius experience to be developer-friendly and align with that preference.</p>\n<p>The new dark mode reduces eye strain, enhances readability, and provides a seamless transition between a coding environment and our platform. Our new design features a clean, modern aesthetic with a consistent color scheme and Barlow typography, ensuring better readability. High-quality graphics and icons are thoughtfully placed to enhance the content without adding visual clutter.</p>\n<p>So, whether you’re navigating our API docs or configuring authentication into your system, our improved interface will make those extended development hours more comfortable and efficient.</p>\n<h3 id=\"clear-categorization-for-loginradius-capabilities\" style=\"position:relative;\"><a href=\"#clear-categorization-for-loginradius-capabilities\" aria-label=\"clear categorization for loginradius capabilities permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Clear Categorization for LoginRadius Capabilities</h3>\n<p><img src=\"/e5358b82be414940f3fb146013845933/capabilities.webp\" alt=\"This image shows a breakdown of all the LoginRadius CIAM capabilities, including authentication, security, UX, scalability and multi-brand management.\"></p>\n<p>We’ve restructured our website to provide a straightforward breakdown of our customer identity and access management platform capabilities, helping you quickly find what you need:</p>\n<ul>\n<li>Authentication: Easily understand <a href=\"https://www.loginradius.com/blog/identity/authentication-option-for-your-product/\">how to choose the right login method</a>, from traditional passwords and OTPs to social login, federated SSO, and passkeys with few lines of code.</li>\n<li>Security: Implement no-code security features like bot detection, IP throttling, breached password alerts, DDoS protection, and adaptive MFA to safeguard user accounts.</li>\n<li>User Experience: Leverage AI builder, hosted pages, and drag-and-drop workflows to create smooth, branded sign-up and login experiences.</li>\n<li>High Performance &#x26; Scalability: Confidently scale with sub-100ms API response times, 100% uptime, 240K+ RPS, and 28+ global data center regions.</li>\n<li>Multi-Brand Management: Efficiently manage multiple identity apps, choosing isolated or shared data stores based on your brand’s unique needs.</li>\n</ul>\n<p>This structured layout ensures you can quickly understand each capability and how it integrates into your identity ecosystem.</p>\n<h3 id=\"developer-first-navigation\" style=\"position:relative;\"><a href=\"#developer-first-navigation\" aria-label=\"developer first navigation permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Developer-First Navigation</h3>\n<p><img src=\"/a8c155c2b6faf3d5f4b4de4e2b14d763/developers-menu.webp\" alt=\"This image shows the LoginRadius menu bar, highlighting the developer dropdown.\">   </p>\n<p>We’ve been analyzing developer workflows to identify how you access key resources. That’s why we redesigned our navigation with one goal in mind: to reduce clicks and make essential resources readily available.</p>\n<p>The new LoginRadius structure puts APIs, SDKs, and integration guides right at the menu bar under the Developers dropdown so you can get started faster. Our Products, Solutions, and Customer Services are also clearly categorized, helping development teams quickly find the right tools and make informed decisions.</p>\n<h3 id=\"quick-understanding-of-integration-benefits\" style=\"position:relative;\"><a href=\"#quick-understanding-of-integration-benefits\" aria-label=\"quick understanding of integration benefits permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Quick Understanding of Integration Benefits</h3>\n<p><img src=\"/b2f9a964a2da0ea83e2f8596b833bba7/we-support-your-tech-stack.webp\" alt=\"This image shows a list of popular programming languages and frameworks offered by LoginRadius.\"></p>\n<p>Developers now have a clear view of the tech stack available with LoginRadius, designed to support diverse business needs.</p>\n<p>Our platform offers pre-built SDKs for Node.js, Python, Java, and more, making CIAM integration seamless across popular programming languages and frameworks.</p>\n<h2 id=\"over-to-you-now\" style=\"position:relative;\"><a href=\"#over-to-you-now\" aria-label=\"over to you now permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Over to You Now!</h2>\n<p>Check out our <a href=\"https://www.loginradius.com/\">revamped LoginRadius website</a> and see how the improved experience makes it easier to build, scale, and secure your applications.</p>\n<p>Do not forget to explore the improved navigation and API documentation, and get started with our free trial today. We’re excited to see what you’ll build with LoginRadius!</p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"February 21, 2025","updated_date":null,"description":"LoginRadius’ vision is to give developers a product that simplifies identity management so they can focus on building, deploying, and scaling their applications. To enhance this experience, we’ve redesigned our website interface, making navigation more intuitive and reassuring that essential resources are easily accessible.","title":"Revamped & Ready: Introducing the New Developer-First LoginRadius Website","tags":["Developer tools","API","Identity Management","User Authentication"],"pinned":true,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.7857142857142858,"src":"/static/80b4e4fbe176a10a327d273504607f32/58556/hero-section.webp","srcSet":"/static/80b4e4fbe176a10a327d273504607f32/61e93/hero-section.webp 200w,\n/static/80b4e4fbe176a10a327d273504607f32/1f5c5/hero-section.webp 400w,\n/static/80b4e4fbe176a10a327d273504607f32/58556/hero-section.webp 800w,\n/static/80b4e4fbe176a10a327d273504607f32/99238/hero-section.webp 1200w,\n/static/80b4e4fbe176a10a327d273504607f32/7c22d/hero-section.webp 1600w,\n/static/80b4e4fbe176a10a327d273504607f32/1258b/hero-section.webp 2732w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.jpg"}}}},"pageContext":{"limit":6,"skip":630,"currentPage":106,"type":"///","numPages":161,"pinned":"ee8a4479-3471-53b1-bf62-d0d8dc3faaeb"}},"staticQueryHashes":["1171199041","1384082988","2100481360","23180105","528864852"]}