{"componentChunkName":"component---src-templates-blog-list-template-js","path":"/99","result":{"data":{"allMarkdownRemark":{"edges":[{"node":{"excerpt":"Tenancy in cloud computing refers to the sharing of computing resources in a private or public environment that is isolated from other users…","fields":{"slug":"/identity/single-tenant-vs-multi-tenant/"},"html":"<p>Tenancy in <a href=\"https://www.loginradius.com/blog/identity/2021/01/identity-management-in-cloud-computing/\">cloud computing</a> refers to the sharing of computing resources in a private or public environment that is isolated from other users and kept secret. Tenancy in SaaS is divided into two types: single-tenant SaaS and multi-tenant SaaS.</p>\n<h2 id=\"what-is-a-single-tenant-architecture\" style=\"position:relative;\"><a href=\"#what-is-a-single-tenant-architecture\" aria-label=\"what is a single tenant architecture permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is a Single-Tenant Architecture</h2>\n<p>A single-tenant cloud runs on a dedicated infrastructure. This means that the hardware, storage, and network are dedicated to a single client, and there are no neighbors to share hosted resources with. They may reside in a dedicated offsite data center or with a managed private cloud provider. </p>\n<p>In a single-tenancy architecture, each tenant gets their own database. This way, data from each tenant remains separated from the other. Furthermore, the architecture is built such that only one software instance per SaaS server is allowed. </p>\n<h3 id=\"advantages-single-tenant-cloud\" style=\"position:relative;\"><a href=\"#advantages-single-tenant-cloud\" aria-label=\"advantages single tenant cloud 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>Advantages single-tenant cloud</h3>\n<ul>\n<li><strong>Enhanced security</strong> - Single-tenancy offers true data isolation that contributes to optimal protection and increased security. </li>\n<li><strong>Migration</strong>- When a tenant wants to migrate from a single-tenant (SaaS) system into a self-hosted or local environment, they can quickly move an application to their own managed servers. </li>\n<li><strong>Customization</strong>- Single tenancy offers the ability to architect an environment exactly how a consumer needs it. </li>\n<li><strong>Reliability</strong>- Single tenancy offers consistency and the highest level of performance for an application.</li>\n</ul>\n<h3 id=\"drawbacks-of-single-tenant-cloud\" style=\"position:relative;\"><a href=\"#drawbacks-of-single-tenant-cloud\" aria-label=\"drawbacks of single tenant cloud 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>Drawbacks of single-tenant cloud</h3>\n<ul>\n<li><strong>Cost</strong>: Because, single-tenant does not allow cost-sharing for facilities such as deployment and monitoring, companies end up paying more. Also, more customizations and maintenance often take more resources and time, which results in higher costs.</li>\n<li><strong>Maintenance</strong>: Since a single-tenant architecture needs continuous modifications and improvements, a lot of maintenance is required. </li>\n<li><strong>Setup</strong>: There may be delays due to individual installs, and not to forget the learning curves, that should be considered as well. </li>\n</ul>\n<h2 id=\"what-is-a-multi-tenant-architecture\" style=\"position:relative;\"><a href=\"#what-is-a-multi-tenant-architecture\" aria-label=\"what is a multi tenant architecture permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is a Multi-Tenant Architecture</h2>\n<p>Multi-tenant cloud architecture is a single cloud infrastructure built to serve multiple businesses. The entire system may cover multiple servers and data centers, incorporated into a single database. </p>\n<p>Cloud providers offer multi-tenancy as a gateway to share the same application with multiple businesses, on the same hardware, in the same operating environment, and with the same storage mechanism. </p>\n<h3 id=\"advantages-of-multi-tenant-architecture\" style=\"position:relative;\"><a href=\"#advantages-of-multi-tenant-architecture\" aria-label=\"advantages of multi tenant architecture 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>Advantages of multi-tenant architecture</h3>\n<ul>\n<li><strong>Scalable</strong>: It is very easy to <a href=\"https://www.loginradius.com/blog/identity/2021/01/user-onboarding-revamp-application/\">onboard users</a> with a multi-tenant cloud. In fact, there is no difference between onboarding ten users from a thousand companies or a thousand users from one company.</li>\n<li><strong>Saves money</strong>: Multi-tenancy allows resources to be consolidated and allocated efficiently, thereby saving a lot of expenses. </li>\n<li><strong>Flexible</strong>: A multi-tenant cloud can allocate a pool of resources to the users who need it, as their needs scale up and down.</li>\n<li><strong>Efficient</strong>: Multitenancy reduces the need to manage infrastructure and handle updates. </li>\n</ul>\n<p><a href=\"https://www.loginradius.com/resource/cloud-security-system-sase-whitepaper\"><img src=\"/fa88a9e70426c2aaf7daf7d4265e1351/Future-proof-your-security.webp\" alt=\"Future-proof-your-security\"></a></p>\n<h3 id=\"drawbacks-of-multi-tenant-cloud\" style=\"position:relative;\"><a href=\"#drawbacks-of-multi-tenant-cloud\" aria-label=\"drawbacks of multi tenant cloud 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>Drawbacks of multi-tenant cloud</h3>\n<ul>\n<li><strong>Security</strong>: Cybercriminals can take advantage of multiple access points to exploit <a href=\"https://www.loginradius.com/blog/identity/2021/01/7-web-app-sec-threats/\">systems vulnerabilities</a>. </li>\n<li><strong>Backup and restoration</strong>: A lot of companies fail to keep up with the latest system backup advances and restore options. </li>\n<li><strong>Limited management</strong>: They do not provide a lot of customization options, and that reduces the consumer's ability to interact with the system.</li>\n</ul>\n<p>To learn more about Single-Tenant vs Multi-Tenant Cloud, check out the infographic by LoginRadius. Find out which is the right solution for your business. </p>\n<p><img src=\"/85c3baec23270d69c8f4cf3e66e8d532/single-tenant-vs-multi-tenant-infographic.webp\" alt=\"single-tenant-vs-multi-tenant-infographic\"> </p>\n<p>Contact us for your personalized deployment requirements.</p>\n<p><a href=\"https://www.loginradius.com/contact-us?utm_source=blog&#x26;utm_medium=web&#x26;utm_campaign=single-tenant-vs-multi-tenant\"><img src=\"/8fce571f703a5970dbb1359a2fe0e51a/book-a-demo-loginradius.webp\" alt=\"LoginRadius Book a Demo\"></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":"February 26, 2021","updated_date":null,"description":"A single-tenant cloud runs on dedicated infrastructure, while a multi-tenant cloud is a single cloud infrastructure built to serve multiple businesses. Check out the infographic by LoginRadius to understand the difference between the two and find out which is the right solution for your business.","title":"Understanding the Difference Between Single-Tenant and Multi-Tenant Cloud [Infographic]","tags":["cloud computing","single tenant","multi tenant"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.6,"src":"/static/8c42e6b1a263259e38ee5b78afc285b2/58556/single-tenant-vs-multi-tenant-cover.webp","srcSet":"/static/8c42e6b1a263259e38ee5b78afc285b2/61e93/single-tenant-vs-multi-tenant-cover.webp 200w,\n/static/8c42e6b1a263259e38ee5b78afc285b2/1f5c5/single-tenant-vs-multi-tenant-cover.webp 400w,\n/static/8c42e6b1a263259e38ee5b78afc285b2/58556/single-tenant-vs-multi-tenant-cover.webp 800w,\n/static/8c42e6b1a263259e38ee5b78afc285b2/cc834/single-tenant-vs-multi-tenant-cover.webp 1024w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.webp"}}}},{"node":{"excerpt":"Introduction Have you heard of phone login lately? We will get to it soon.  With all the business going online in this digital era, there is…","fields":{"slug":"/identity/what-is-phone-login/"},"html":"<h2 id=\"introduction\" style=\"position:relative;\"><a href=\"#introduction\" aria-label=\"introduction permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Introduction</h2>\n<p>Have you heard of phone login lately? We will get to it soon. </p>\n<p>With all the business going online in this digital era, there is probably a possibility that there is not even a single person on this planet who enjoys filling out registration forms. </p>\n<p>Today, a single consumer interacts with various apps/websites, which require them to log in or register before allowing them to use their services. There are relatively high chances of forgetting the username and the associated password while trying to log in.</p>\n<p>In this type of process, consumers may become frustrated and completely give up the sign-up process as it asks for a lot of information. Ultimately, businesses end up with lower consumer growth rates.</p>\n<p><img src=\"/68fe1376ba68f8ae19206f854d681796/PhoneLogin_overview.webp\" alt=\"PhoneLogin_overview\"></p>\n<p>But if the sign-up and login process is done right, it can trigger the retention of lots of new consumers. If done in an improper method, it may backfire and can have the exact opposite effect. </p>\n<p>So now the question is, what is the right process? How do we tame this beast? </p>\n<p>We tame it by following the best consumer experience practices and using the right analysis and optimization techniques.</p>\n<p>You might think that we can also implement a social login method like GitHub, Facebook, Google, etc., to skip traditional registration/login. </p>\n<p>Yes, you are right, we can do that! But there is a slight problem that sometimes consumers do not want their data to be shared with app developers. </p>\n<p>This is where <strong>Phone Login</strong> comes to the rescue.</p>\n<h2 id=\"introduction-to-phone-login\" style=\"position:relative;\"><a href=\"#introduction-to-phone-login\" aria-label=\"introduction to phone login permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Introduction to Phone Login</h2>\n<p>In the fast-paced digital landscape, the convenience and security of consumer interactions are paramount. Phone Login emerges as a powerful tool designed to streamline the often cumbersome processes of registration and login. As consumers juggle multiple apps and websites, each requiring their own set of credentials, the need for a more straightforward solution becomes evident. Phone Login steps in to simplify this process, allowing users to swiftly register or access their accounts using nothing but their mobile phones.</p>\n<p>Gone are the days of lengthy registration forms and forgotten passwords. With Phone Login, users input their phone number, receive a one-time password (OTP) on their mobile device, and gain instant access. This not only improves the user experience but also significantly reduces friction in the onboarding process for businesses.</p>\n<h2 id=\"crucial-considerations-in-phone-login-implementation\" style=\"position:relative;\"><a href=\"#crucial-considerations-in-phone-login-implementation\" aria-label=\"crucial considerations in phone login implementation 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>Crucial Considerations in Phone Login Implementation</h2>\n<h3 id=\"abuse-scenario-vigilance\" style=\"position:relative;\"><a href=\"#abuse-scenario-vigilance\" aria-label=\"abuse scenario vigilance 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>Abuse Scenario Vigilance</h3>\n<p>One crucial consideration in Phone Login implementation is being vigilant against abuse scenarios. The login endpoint could be vulnerable to attacks where repeated requests are sent with similar phone numbers, potentially slowing down the login page. To mitigate this risk, implementing checks on the frequency of requests from a single phone number can help maintain the system's integrity.</p>\n<h3 id=\"handling-phone-number-alterations\" style=\"position:relative;\"><a href=\"#handling-phone-number-alterations\" aria-label=\"handling phone number alterations 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>Handling Phone Number Alterations</h3>\n<p>Another important aspect to consider is how to handle scenarios where a user alters their phone number. To address this, a verification process can be implemented where the new number is verified before updating it in the user's account. This ensures that user information remains accurate and secure, preventing unauthorized access.</p>\n<h3 id=\"session-management-and-security\" style=\"position:relative;\"><a href=\"#session-management-and-security\" aria-label=\"session management and security permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Session Management and Security</h3>\n<p>Effective session management is essential for <a href=\"https://www.loginradius.com/blog/identity/security-ux-can-coexist/\">security and user convenience</a>. Generated tokens play a vital role in this aspect, allowing for the expiration of sessions and the logging out of idle accounts. When a user enters the OTP received on their phone, the backend system verifies the token to ensure a secure login process.</p>\n<h3 id=\"telephony-api-integration\" style=\"position:relative;\"><a href=\"#telephony-api-integration\" aria-label=\"telephony api integration 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>Telephony API Integration</h3>\n<p>To send OTPs to users' phones, integration with a telephony API is necessary. This API enables the system to send SMS messages with the OTP code for user verification. Choosing a reliable telephony API provider, such as LoginRadius, ensures the seamless delivery of OTPs to users, enhancing the overall user experience.</p>\n<h3 id=\"consumer-data-privacy\" style=\"position:relative;\"><a href=\"#consumer-data-privacy\" aria-label=\"consumer data privacy permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Consumer Data Privacy</h3>\n<p>Lastly, ensuring consumer data privacy is paramount. Phone Login should comply with data protection regulations to safeguard user information. This includes securely storing phone numbers, encrypting sensitive data, and obtaining user consent for using their phone numbers for verification purposes.</p>\n<h2 id=\"what-is-phone-login\" style=\"position:relative;\"><a href=\"#what-is-phone-login\" aria-label=\"what is phone login permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is Phone Login</h2>\n<p>Phone Login is a compelling and handy feature designed to enhance consumer experience and ease the process of login and registration.</p>\n<p>It is the process of registering or accessing a user's account by using a phone number. The user enters their phone number as username and receives a one-time password (OTP) on their mobile phone, entering which they can log in.</p>\n<p>It eliminates the hassle of filling lengthy registration forms and creating new passwords and usernames, thereby allowing users to quickly login or register just by using their mobile phones.</p>\n<p><img src=\"/3cc4a7cf7785c314d6be7437b9af604f/PhoneLogin.webp\" alt=\"PhoneLogin\"></p>\n<h2 id=\"why-should-businesses-use-phone-login\" style=\"position:relative;\"><a href=\"#why-should-businesses-use-phone-login\" aria-label=\"why should businesses use phone login permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Why Should Businesses Use Phone Login</h2>\n<p>As mentioned earlier, <a href=\"https://www.loginradius.com/resource/loginradius-ciam-phone-authentication/\">phone login simplifies the login and registrations process</a>. By using this feature, app developers and business owners can show their consumers that they understand what annoys them— and that they value their time. A rich consumer experience has always been seen providing a more significant consumer growth rate.</p>\n<p>This feature makes it easy for your consumers to register and log in within seconds using their phone numbers. To sign-in, they have to enter their phone number and the code they received (usually a one-time password ). </p>\n<p>And it should not be tough to understand that consumers will always tend to move in a comfortable and less time-consuming path.</p>\n<h2 id=\"benefits-of-phone-login-for-businesses\" style=\"position:relative;\"><a href=\"#benefits-of-phone-login-for-businesses\" aria-label=\"benefits of phone login for businesses 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>Benefits of Phone Login for Businesses</h2>\n<p><a href=\"https://www.loginradius.com/phone-login/\">Phone Login</a> becomes extremely useful for those businesses which rely heavily on consumer's phone numbers. For example, food delivery companies, cabs, and more. Other than these the following are a few benefits that will help any business.</p>\n<ul>\n<li>Easy and hassle-free registration for consumers as it skips the filling of lengthy forms.</li>\n<li>Consumers can register and login directly with their phone numbers.</li>\n<li>It avoids spam consumer registration on your website.</li>\n<li>It saves consumers time. A lot of it. By skipping traditional registration form filling.</li>\n<li>Consumers can also login without remembering their user ID and Password.</li>\n<li>Verify consumer mobile number by SMS OTP.</li>\n<li>All verified consumers are genuine, and hence it prevents fake orders.</li>\n<li>Order processing is fast because consumer identity is already verified by Phone Number and One-time password (OTP).</li>\n<li>As order processing is quick, the consumer trusts the merchant.</li>\n<li>Consumers can be notified quickly through mobile, even if they do not have internet or email access, and notifications are always read.</li>\n<li>Merchants shall reach consumers with their promotions and offers quickly through phone number</li>\n</ul>\n<p><img src=\"/86797b82228fc35c8d1dd3da04cb7816/Benifits_of_phoneLogin_in_business.webp\" alt=\"Benifits_of_phoneLogin_in_business\"></p>\n<p>Looking at the above benefits, business owners can easily enhance their business strategies and ultimately increase their consumer growth. You've got everything you need to communicate with your end-users in the most concrete and straightforward method.</p>\n<h2 id=\"how-to-implement-phone-login\" style=\"position:relative;\"><a href=\"#how-to-implement-phone-login\" aria-label=\"how to implement phone login permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How to Implement Phone Login</h2>\n<p>Now that you have read all the advantages of using a phone login and you are planning to implement it for your business, too, your first question will be, \"How can I implement this thing on my website.\" Right ??</p>\n<p>Don't worry, we've got you covered.</p>\n<p><a href=\"https://www.loginradius.com/resource/loginradius-ciam-phone-authentication/\"><img src=\"/46289e0fd6e7fcb32b496b8922df717f/phone-authentication.webp\" alt=\"phone-authentication\"></a></p>\n<p>This whole implementation is divided into two parts.\nThe user submits the phone number to the website's backend via GUI and obtains a token.\nUsers submit the obtained token in a web field, where it is verified. Upon successful verification, the user is logged into the website.</p>\n<p>Let's start with the first scenario where the user submits the phone number to the App backend through GUI. After submitting the number, they land on a new page which asks for a token. The application backend verifies the input number and combines it with extra information such as IP address, geographical location, and device information.</p>\n<p>This wholesome mixture of information is now submitted to the User service, which generates a token, and then they associate it with these requests. </p>\n<p>Here is an important aspect that you need to keep in mind: <strong>The generation of a token</strong>.</p>\n<p>See, this generated token will help us in many ways, and they are essential as well. These tokens can be used to expire the ongoing sessions or logging out of an idle account. And many more things like this, which increases the security of your user's account.</p>\n<p>Now our next challenge is how do we send OTP to the consumers. This will be done by your User Service, which will call a telephony API and will send the OTP to the consumers' phone number as an SMS. Many companies provide this functionality, and LoginRadius is one of them.</p>\n<p>On receiving the One-time password in SMS, the user will now enter the OTP in the form. Once again, the application backend comes into action and verifies the token which was sent by User Service.</p>\n<p>If the token is exactly the same as what was sent, the user is logged into the account. Simple!</p>\n<h2 id=\"what-things-to-take-care-of-while-implementing-phone-login\" style=\"position:relative;\"><a href=\"#what-things-to-take-care-of-while-implementing-phone-login\" aria-label=\"what things to take care of while implementing phone login permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What Things to Take Care of While Implementing Phone Login</h2>\n<p>Now that you know how to implement phone login, you must be excited to implement it for your website too. But there are a few things we need to keep in mind while implementing this feature.</p>\n<ul>\n<li>Be careful and vigilant about the multiple abuse scenarios where the login endpoint can get attacked by a code that keeps sending a request with a similar phone number. This can slow down your login page. To handle this, you can implement a check on how many times a consumer (phone number) can send requests.</li>\n<li>Another case is to consider the scenario if a consumer alters the phone number. You can use a similar method of first verifying the number and then updating it in the consumer’s account to handle this.\n<br /><br /></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>In this article, we talked about applying a simple approach of using Phone Login on the websites and how it will enhance the businesses. This feature removes the consumer's mental load to remember each password created on different websites. Finally, before implementing any functionality on your website, analyze and consider the pros and cons from every possible angle. </p>\n<p>Cheers!</p>\n<p><a href=\"https://www.loginradius.com/contact-us?utm_source=blog&#x26;utm_medium=web&#x26;utm_campaign=what-is-phone-login\"><img src=\"/8fce571f703a5970dbb1359a2fe0e51a/book-a-demo-loginradius.webp\" alt=\"book-a-demo-loginradius\"></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":"February 26, 2021","updated_date":null,"description":"Phone Login is a compelling and handy feature designed to enhance consumer experience and ease the process of login and registration. It eliminates the hassle of filling lengthy registration forms and creating new passwords and usernames, thereby allowing consumers to quickly login or register just by using their mobile phones.","title":"What is Phone Login","tags":["phone login","authentication","cx"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.6,"src":"/static/d26b5df225d96933799c9378128d393a/58556/PhoneLogin_cover_pic.webp","srcSet":"/static/d26b5df225d96933799c9378128d393a/61e93/PhoneLogin_cover_pic.webp 200w,\n/static/d26b5df225d96933799c9378128d393a/1f5c5/PhoneLogin_cover_pic.webp 400w,\n/static/d26b5df225d96933799c9378128d393a/58556/PhoneLogin_cover_pic.webp 800w,\n/static/d26b5df225d96933799c9378128d393a/99238/PhoneLogin_cover_pic.webp 1200w,\n/static/d26b5df225d96933799c9378128d393a/7c22d/PhoneLogin_cover_pic.webp 1600w,\n/static/d26b5df225d96933799c9378128d393a/25f09/PhoneLogin_cover_pic.webp 1920w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Ashish Kumar Yadav","github":null,"avatar":null}}}},{"node":{"excerpt":"A list is a set of index-accessible objects that provides functionality for searching, sorting, and manipulating list items. C# List class…","fields":{"slug":"/engineering/list-csharp/"},"html":"<p>A list is a set of index-accessible objects that provides functionality for searching, sorting, and manipulating list items. C# List class represents a collection of strongly typed objects that can be accessed by using the index. In this article, we learn how to work with lists in C# using the C# List class to add, remove, and search items in a collection of objects using List class methods and properties.</p>\n<h2 id=\"what-is-list-in-c\" style=\"position:relative;\"><a href=\"#what-is-list-in-c\" aria-label=\"what is list in c 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 List in C#?</h2>\n<p><code>List&#x3C;T></code> class in C# cotains a strongly typed list of objects. It provides functionality to create a list of objects, add list items, search, sort and manipulate list items. In <code>List&#x3C;T></code>, T is the type of objects like int, string, or any user-defined object.</p>\n<p><code>List&#x3C;T></code> is required when we have multiple items with the same object, like data of student's marks or data of various subject's names (string). In that case, we can use <code>List&#x3C;T></code> to maintain that data into a list.</p>\n<p><code>List&#x3C;T></code> comes under the <code>System.Collection.Generic</code> namespace and the index start from <code>0</code>.</p>\n<h2 id=\"how-to-create-a-list\" style=\"position:relative;\"><a href=\"#how-to-create-a-list\" aria-label=\"how to create a list 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 Create a List?</h2>\n<p>We can create a list by calling the <code>List&#x3C;T></code> constructor; It takes an argument of <code>int</code> type that is the list's capacity. If we do not define the capacity, then the list size will be dynamic and every time an element is added, the list size is increased. The list can be created using the below syntax.</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=\"mtk10\">List</span><span class=\"mtk1\">&lt;</span><span class=\"mtk4\">int</span><span class=\"mtk1\">&gt; </span><span class=\"mtk12\">lst</span><span class=\"mtk1\">=</span><span class=\"mtk4\">new</span><span class=\"mtk1\"> </span><span class=\"mtk10\">List</span><span class=\"mtk1\">&lt;</span><span class=\"mtk4\">int</span><span class=\"mtk1\">&gt;(); </span><span class=\"mtk3\">// list with dynamic capacity</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk10\">List</span><span class=\"mtk1\">&lt;</span><span class=\"mtk4\">int</span><span class=\"mtk1\">&gt; </span><span class=\"mtk12\">lstCapacity</span><span class=\"mtk1\">=</span><span class=\"mtk4\">new</span><span class=\"mtk1\"> </span><span class=\"mtk10\">List</span><span class=\"mtk1\">&lt;</span><span class=\"mtk4\">int</span><span class=\"mtk1\">&gt;(</span><span class=\"mtk7\">10</span><span class=\"mtk1\">); </span><span class=\"mtk3\">// list with capacity of 10 elements</span></span></code></pre>\n<p>As we have discussed above, Here T is the type of object for which we have to create the list. The type is <code>int</code> in the above code, which means we can store the <code>int</code> type of variable's value.</p>\n<p><strong>Note</strong>: If we have created the list using the capacity value and when more than the defined capacity elements are added, the list size will automatically increase.</p>\n<h2 id=\"add-elements-into-a-list\" style=\"position:relative;\"><a href=\"#add-elements-into-a-list\" aria-label=\"add elements into a list 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>Add elements into a list</h2>\n<p>We can add elements directly into when we have created a list or add elements after creating a list. I will discuss both methods here.</p>\n<ol>\n<li><strong>Create list</strong></li>\n</ol>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"c#\" data-index=\"1\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk10\">List</span><span class=\"mtk1\">&lt;</span><span class=\"mtk4\">int</span><span class=\"mtk1\">&gt; </span><span class=\"mtk12\">lst</span><span class=\"mtk1\"> = </span><span class=\"mtk4\">new</span><span class=\"mtk1\"> </span><span class=\"mtk10\">List</span><span class=\"mtk1\">&lt;</span><span class=\"mtk4\">int</span><span class=\"mtk1\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">{</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk7\">1</span><span class=\"mtk1\">,</span><span class=\"mtk7\">2</span><span class=\"mtk1\">,</span><span class=\"mtk7\">3</span><span class=\"mtk1\">,</span><span class=\"mtk7\">4</span><span class=\"mtk1\">,</span><span class=\"mtk7\">5</span><span class=\"mtk1\">,</span><span class=\"mtk7\">6</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">};</span></span></code></pre>\n<ol start=\"2\">\n<li><strong>Add items after creating list</strong></li>\n</ol>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"c#\" data-index=\"2\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk10\">List</span><span class=\"mtk1\">&lt;</span><span class=\"mtk4\">int</span><span class=\"mtk1\">&gt; </span><span class=\"mtk12\">lst</span><span class=\"mtk1\"> = </span><span class=\"mtk4\">new</span><span class=\"mtk1\"> </span><span class=\"mtk10\">List</span><span class=\"mtk1\">&lt;</span><span class=\"mtk4\">int</span><span class=\"mtk1\">&gt;();</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">lst</span><span class=\"mtk1\">.</span><span class=\"mtk11\">Add</span><span class=\"mtk1\">(</span><span class=\"mtk7\">1</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">lst</span><span class=\"mtk1\">.</span><span class=\"mtk11\">Add</span><span class=\"mtk1\">(</span><span class=\"mtk7\">2</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">lst</span><span class=\"mtk1\">.</span><span class=\"mtk11\">Add</span><span class=\"mtk1\">(</span><span class=\"mtk7\">3</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">lst</span><span class=\"mtk1\">.</span><span class=\"mtk11\">Add</span><span class=\"mtk1\">(</span><span class=\"mtk7\">4</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">lst</span><span class=\"mtk1\">.</span><span class=\"mtk11\">Add</span><span class=\"mtk1\">(</span><span class=\"mtk7\">5</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">lst</span><span class=\"mtk1\">.</span><span class=\"mtk11\">Add</span><span class=\"mtk1\">(</span><span class=\"mtk7\">3</span><span class=\"mtk1\">);</span></span></code></pre>\n<h2 id=\"properties-of-a-list\" style=\"position:relative;\"><a href=\"#properties-of-a-list\" aria-label=\"properties of a list 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>Properties of a list</h2>\n<p>The list has mainly two properties.</p>\n<ol>\n<li><strong>Capacity</strong>- This property tells the capacity of a list, which means how many elements a list can contain.</li>\n</ol>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"c#\" data-index=\"3\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk10\">List</span><span class=\"mtk1\">&lt;</span><span class=\"mtk4\">int</span><span class=\"mtk1\">&gt; </span><span class=\"mtk12\">lst</span><span class=\"mtk1\"> = </span><span class=\"mtk4\">new</span><span class=\"mtk1\"> </span><span class=\"mtk10\">List</span><span class=\"mtk1\">&lt;</span><span class=\"mtk4\">int</span><span class=\"mtk1\">&gt;();</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\">lst</span><span class=\"mtk1\">.</span><span class=\"mtk12\">Capacity</span><span class=\"mtk1\">); </span><span class=\"mtk3\">//Prints 0-- Default</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk10\">List</span><span class=\"mtk1\">&lt;</span><span class=\"mtk4\">int</span><span class=\"mtk1\">&gt; </span><span class=\"mtk12\">lst1</span><span class=\"mtk1\"> = </span><span class=\"mtk4\">new</span><span class=\"mtk1\"> </span><span class=\"mtk10\">List</span><span class=\"mtk1\">&lt;</span><span class=\"mtk4\">int</span><span class=\"mtk1\">&gt;(</span><span class=\"mtk7\">5</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\">lst1</span><span class=\"mtk1\">.</span><span class=\"mtk12\">Capacity</span><span class=\"mtk1\">); </span><span class=\"mtk3\">// Prints 5</span></span></code></pre>\n<ol start=\"2\">\n<li><strong>Count</strong>- This property tells that how many elements are there in a list</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=\"mtk10\">List</span><span class=\"mtk1\">&lt;</span><span class=\"mtk4\">int</span><span class=\"mtk1\">&gt; </span><span class=\"mtk12\">lst</span><span class=\"mtk1\"> = </span><span class=\"mtk4\">new</span><span class=\"mtk1\"> </span><span class=\"mtk10\">List</span><span class=\"mtk1\">&lt;</span><span class=\"mtk4\">int</span><span class=\"mtk1\">&gt;(</span><span class=\"mtk7\">5</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\">lst</span><span class=\"mtk1\">.</span><span class=\"mtk12\">Count</span><span class=\"mtk1\">); </span><span class=\"mtk3\">// Prints 0</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">lst</span><span class=\"mtk1\">.</span><span class=\"mtk11\">Add</span><span class=\"mtk1\">(</span><span class=\"mtk7\">1</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">lst</span><span class=\"mtk1\">.</span><span class=\"mtk11\">Add</span><span class=\"mtk1\">(</span><span class=\"mtk7\">2</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\">lst</span><span class=\"mtk1\">.</span><span class=\"mtk12\">Count</span><span class=\"mtk1\">); </span><span class=\"mtk3\">//Prints 2</span></span></code></pre>\n<h2 id=\"read-all-elements-of-a-list\" style=\"position:relative;\"><a href=\"#read-all-elements-of-a-list\" aria-label=\"read all elements of a list 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>Read all elements of a list</h2>\n<p>To get all the elements of a list, we have to loop through the list. We can use for or foreach loop to get the elements. Below is the code to get all the elements using both the loops and print the element's values.</p>\n<ol>\n<li>\n<h3 id=\"using-a-foreach-loop\" style=\"position:relative;\"><a href=\"#using-a-foreach-loop\" aria-label=\"using a foreach loop 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 a foreach loop</h3>\n</li>\n</ol>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"c#\" data-index=\"5\"><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\">item</span><span class=\"mtk1\"> </span><span class=\"mtk15\">in</span><span class=\"mtk1\"> </span><span class=\"mtk12\">lst</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\">item</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">}</span></span></code></pre>\n<ol start=\"2\">\n<li>\n<h3 id=\"using-for-loop\" style=\"position:relative;\"><a href=\"#using-for-loop\" aria-label=\"using for loop 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 for loop</h3>\n</li>\n</ol>\n<p>In this method, we have to run the loop till the last element of the list. For that, I have used the <strong>Count</strong> property of the list</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"c#\" data-index=\"6\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk15\">for</span><span class=\"mtk1\"> (</span><span class=\"mtk4\">int</span><span class=\"mtk1\"> </span><span class=\"mtk12\">i</span><span class=\"mtk1\"> = </span><span class=\"mtk7\">0</span><span class=\"mtk1\">; </span><span class=\"mtk12\">i</span><span class=\"mtk1\"> &lt; </span><span class=\"mtk12\">lst</span><span class=\"mtk1\">.</span><span class=\"mtk12\">Count</span><span class=\"mtk1\">; </span><span class=\"mtk12\">i</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\">lst</span><span class=\"mtk1\">[</span><span class=\"mtk12\">i</span><span class=\"mtk1\">]);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">}</span></span></code></pre>\n<p>Both the methods will give the same output. I am taking the above list example so the result will be</p>\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\">1</span>\n<span class=\"grvsc-line\">2</span>\n<span class=\"grvsc-line\">3</span>\n<span class=\"grvsc-line\">4</span>\n<span class=\"grvsc-line\">5</span>\n<span class=\"grvsc-line\">3</span></code></pre>\n<h2 id=\"remove-element-from-a-list\" style=\"position:relative;\"><a href=\"#remove-element-from-a-list\" aria-label=\"remove element from a list 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>Remove element from a list</h2>\n<p>To remove items from a list, we can use various list methods.</p>\n<ol>\n<li>Remove(T item)- This method removes the first occurrence of an element from a list. We have to pass the element into this method as a parameter.</li>\n</ol>\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\">lst</span><span class=\"mtk1\">.</span><span class=\"mtk11\">Remove</span><span class=\"mtk1\">(</span><span class=\"mtk7\">3</span><span class=\"mtk1\">); </span><span class=\"mtk3\">// Removes the fist occurance of element 3</span></span></code></pre>\n<ol start=\"2\">\n<li>RemoveAll(<code>Predicate&#x3C;T></code> match)- This method removes all elements from a list that matches the condition defined by the specified predicate. We have to pass the predicate as a parameter.</li>\n</ol>\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\">lst</span><span class=\"mtk1\">.</span><span class=\"mtk11\">RemoveAll</span><span class=\"mtk1\">(</span><span class=\"mtk12\">x</span><span class=\"mtk1\">=&gt;</span><span class=\"mtk12\">x</span><span class=\"mtk1\">==</span><span class=\"mtk7\">3</span><span class=\"mtk1\">); </span><span class=\"mtk3\">// Removes all the elements 3</span></span></code></pre>\n<ol start=\"3\">\n<li>RemoveAt(int index)- This method removes the element from the given index. We have to pass the index as a parameter.</li>\n</ol>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"c#\" data-index=\"10\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk12\">lst</span><span class=\"mtk1\">.</span><span class=\"mtk11\">RemoveAt</span><span class=\"mtk1\">(</span><span class=\"mtk7\">0</span><span class=\"mtk1\">); </span><span class=\"mtk3\">// Removes 0th index element from a list</span></span></code></pre>\n<ol start=\"4\">\n<li>RemoveRange(int index, int count)- This method removes the element from the given index to the specified count. We have to pass the starting index and count as a parameter.</li>\n</ol>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"c#\" data-index=\"11\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk12\">lst</span><span class=\"mtk1\">.</span><span class=\"mtk11\">RemoveRange</span><span class=\"mtk1\">(</span><span class=\"mtk7\">0</span><span class=\"mtk1\">,</span><span class=\"mtk7\">2</span><span class=\"mtk1\">); </span><span class=\"mtk3\">// Removes element 1,2 because the starting index is 0 and count is 2</span></span></code></pre>\n<ol start=\"5\">\n<li>Clear()- This method clears all the elements from a list.</li>\n</ol>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"c#\" data-index=\"12\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk12\">lst</span><span class=\"mtk1\">.</span><span class=\"mtk11\">Clear</span><span class=\"mtk1\">(); </span><span class=\"mtk3\">// Removes all elements from a list</span></span></code></pre>\n<h2 id=\"conclusion\" style=\"position:relative;\"><a href=\"#conclusion\" aria-label=\"conclusion permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Conclusion</h2>\n<p>In this article, we have discussed the basics of <code>List&#x3C;T></code>, properties, and some methods. The main advantage of using the list is that it is faster and it is more friendly because it gives us many inbuilt methods to use and do the manipulation according to ourselves. If you want to learn more about C# here is an article written by me on <a href=\"https://www.loginradius.com/blog/engineering/nullable-csharp/\">How to Work with Nullable Types in C#</a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n  .dark-default-dark {\n    background-color: #1E1E1E;\n    color: #D4D4D4;\n  }\n  .dark-default-dark .mtk10 { color: #4EC9B0; }\n  .dark-default-dark .mtk1 { color: #D4D4D4; }\n  .dark-default-dark .mtk4 { color: #569CD6; }\n  .dark-default-dark .mtk12 { color: #9CDCFE; }\n  .dark-default-dark .mtk3 { color: #6A9955; }\n  .dark-default-dark .mtk7 { color: #B5CEA8; }\n  .dark-default-dark .mtk11 { color: #DCDCAA; }\n  .dark-default-dark .mtk15 { color: #C586C0; }\n</style>","frontmatter":{"date":"February 25, 2021","updated_date":null,"description":"In this article, we will learn how to create lists in C# also how to use the C# list class to add, remove, and search items in a collection of objects.","title":"How to Create List in C#","tags":["C#","List"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.3333333333333333,"src":"/static/7bd585b5527fa11b07e771ae747529cd/58556/coverimage.webp","srcSet":"/static/7bd585b5527fa11b07e771ae747529cd/61e93/coverimage.webp 200w,\n/static/7bd585b5527fa11b07e771ae747529cd/1f5c5/coverimage.webp 400w,\n/static/7bd585b5527fa11b07e771ae747529cd/58556/coverimage.webp 800w,\n/static/7bd585b5527fa11b07e771ae747529cd/99238/coverimage.webp 1200w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Hemant Manwani","github":"hemant404","avatar":null}}}},{"node":{"excerpt":"Did you know that in only a few minutes, a DDoS attack can bring your website down? Hackers are targeting your site and overloading your…","fields":{"slug":"/engineering/how-to-mitigate-ddos-attack/"},"html":"<p>Did you know that in only a few minutes, a DDoS attack can bring your website down? Hackers are targeting your site and overloading your network and your server. Your website becomes unresponsive, unavailable and can even go entirely offline. We'll show you how DDoS attacks can be avoided.</p>\n<h2 id=\"what-is-ddos-attack\" style=\"position:relative;\"><a href=\"#what-is-ddos-attack\" aria-label=\"what is ddos attack 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 DDoS Attack?</h2>\n<p><img src=\"/72332960e1243ffa32dc827adaf67f77/What-is-a-DDoS-attack.webp\" alt=\"What is a DDoS attack?\"></p>\n<p>A Distributed Denial of Service (DDoS) is a targeted <a href=\"https://www.loginradius.com/blog/identity/2019/10/cybersecurity-attacks-business/\">cyber attack on a website</a> or device where a malicious attacker's flood of traffic is sent from single or multiple sources. The primary purpose of DDoS is to make a machine or network resource unavailable to its genuine users by temporarily or disrupting the services of a host connected to the Internet. If we do not use appropriate security practices or tools, it makes your application into a non-functional situation.</p>\n<p>The malicious attacker uses multiple compromised computer systems or devices or IoT devices for the attack. These all compromised devices make the DDoS attacks more effective.</p>\n<h2 id=\"what-is-ddos-mitigation\" style=\"position:relative;\"><a href=\"#what-is-ddos-mitigation\" aria-label=\"what is ddos mitigation 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 DDoS mitigation?</h2>\n<p>DDoS mitigation is a process in which we have used a set of techniques or tools for minimizing or mitigating the impact of distributed denial-of-service (DDoS) attacks on the targeted servers or networks. </p>\n<h2 id=\"types-of-ddos-attacks\" style=\"position:relative;\"><a href=\"#types-of-ddos-attacks\" aria-label=\"types of ddos 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>Types of DDoS Attacks</h2>\n<h3 id=\"1-volume-based-attacks\" style=\"position:relative;\"><a href=\"#1-volume-based-attacks\" aria-label=\"1 volume based 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>1. Volume Based Attacks</h3>\n<p>The Volume Based Attack DDoS attack is the most common DDoS attack. An attacker uses multiple methods to generate massive traffic volumes to overwhelms a machine's network bandwidth because of creating massive volume traffic that makes it impossible for legitimate traffic to flow into or out of the targeted site. The machine continually has to check the malicious data requests and has no room to accept legitimate traffic. We can detect this type of attack easily.</p>\n<h3 id=\"2-protocol-attacks\" style=\"position:relative;\"><a href=\"#2-protocol-attacks\" aria-label=\"2 protocol 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. Protocol Attacks</h3>\n<p>The Protocol attacks target Layer 3 and Layer 4. Attackers use malicious connection requests for consuming the processing capacity of network infrastructure resources like servers, firewalls, and load balancers.</p>\n<p>An SYN flood (half-open attack) is the most common way; in this attack, the attacker sends repeated initial connection requests and overwhelms all available ports on a targeted server machine or device.</p>\n<h3 id=\"3-application-layer-attacks\" style=\"position:relative;\"><a href=\"#3-application-layer-attacks\" aria-label=\"3 application layer 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>3. Application Layer Attacks</h3>\n<p>The Application attacks target Layer 7, which is the topmost layer in the OSI network model. This layer is closest to the end-user, which means both the OSI application layer and the user interact directly with the software application. These attacks are typically small in volume compared to the other layers attacks, so these attacks are not easy to catch, i.e., a small number of HTTP requests on a login page.</p>\n<h2 id=\"ddos-attack-examples\" style=\"position:relative;\"><a href=\"#ddos-attack-examples\" aria-label=\"ddos attack examples 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>DDoS attack examples</h2>\n<ol>\n<li>In September 2016 - An attack on the Internet of Things (IoT) devices by Mirai malware impacted Internet platforms and services (Brian Krebs, DNS solution provider Dyn, etc.).\nHere is the list of <a href=\"https://en.wikipedia.org/wiki/2016_Dyn_cyberattack#Affected_services\">sites or services</a> (Github, Twitter, etc.) were unavailable in Europe and North America.</li>\n<li>In Feb 2014 - According to a report on Gigaom, Cloudflare datacenters hit by the world's largest distributed denial-of-service attack (DDoS) in Europe and the U.S. This DDoS attack estimated at approximately 400 gigabits per second of traffic.</li>\n<li>In February 2018 - A most potent distributed denial-of-service attack (DDoS) on the Developers platform GitHub. This DDoS attack estimated approx <a href=\"https://www.wired.com/story/github-ddos-memcached/\">1.35 terabits</a> per second and lasted for roughly 20 minutes.</li>\n<li>In February 2020 - Amazon Web Services was hit by a powerful gigantic DDoS attack. The attack was running for three days and was estimated at approximately 2.3 terabytes per second.</li>\n</ol>\n<h2 id=\"best-practices-for-preventing-ddos-attacks\" style=\"position:relative;\"><a href=\"#best-practices-for-preventing-ddos-attacks\" aria-label=\"best practices for preventing ddos 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>Best Practices for Preventing DDoS attacks</h2>\n<p><img src=\"/57071b77d7cf07f146054f334f7b7bb2/How-to-mitigate-DDoS-attack.webp\" alt=\"How to mitigate DDoS attack?\"></p>\n<h3 id=\"1-traffic-monitoring\" style=\"position:relative;\"><a href=\"#1-traffic-monitoring\" aria-label=\"1 traffic monitoring 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. Traffic Monitoring</h3>\n<p>Application traffic monitoring is essential. We can identify most of the attacks using the proper monitoring. Commonly DDoS attacks are made with high volume traffic but DDoS attacks could be possible with a single vulnerable HTTP endpoint. </p>\n<p>Whenever traffic exceeds a defined threshold, then you should get some alert or notification. The best practice is to have the proper configuration for the alerting in your monitoring tools. It helps you identify the DDoS attack as early as possible and mitigate damage.</p>\n<h3 id=\"2-organize-a-ddos-attack-response-plan\" style=\"position:relative;\"><a href=\"#2-organize-a-ddos-attack-response-plan\" aria-label=\"2 organize a ddos attack response plan 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. Organize a DDoS Attack Response Plan</h3>\n<p>According to organizations size and policies, multiple teams have different responsibilities in infrastructure management. The DDoS attacks happen suddenly and should document the steps that need to follow.</p>\n<p>During the DDoS attack, first, you need to think about minimizing the impact on your application. Team responsibilities for key team members to ensure the organized reaction to the attack should be clear and the first step is defining how it will end.</p>\n<p><strong>Create a checklist</strong>: Define all the processes and steps in a list, like what tools you will use, who is the right person for contact.</p>\n<p><strong>Communication</strong>: You should correctly organize all communications and well-defined. </p>\n<p><strong>Responsibility</strong>: Documente all the team member's responsibilities and their reaction. </p>\n<h3 id=\"3-activate-a-waf\" style=\"position:relative;\"><a href=\"#3-activate-a-waf\" aria-label=\"3 activate a waf 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. Activate a WAF</h3>\n<p>A Web Application Firewall (WAF) is a set of rules or policies that helps protect web applications or APIs from malicious traffic. WAF sits between an application and the HTTP traffic and filters the common web exploits that can affect availability.</p>\n<p>There are various WAF solutions available, but you need to analyze which WAF solution is suitable for your application.</p>\n<h3 id=\"4-rate-limit\" style=\"position:relative;\"><a href=\"#4-rate-limit\" aria-label=\"4 rate limit 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. Rate Limit</h3>\n<p>Attackers can make so many <a href=\"https://www.loginradius.com/blog/engineering/best-practice-guide-for-rest-api-security/\">repeated calls on the APIs</a>. It can make resources unavailable to its genuine users. A rate limit is the number of API calls or requests that a user can make within a given time frame. When this limit is exceeded, block API access temporarily and return the 429 (too many requests) HTTP error code.</p>\n<p>I m adding node js examples to implement the rate limit. multiple npm packages are available for node js</p>\n<p> <strong>NodeJs</strong></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"javascript\" data-index=\"0\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> </span><span class=\"mtk12\">rateLimit</span><span class=\"mtk1\"> </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&#39;express-rate-limit&#39;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">export</span><span class=\"mtk1\"> </span><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">apiRatelimit</span><span class=\"mtk1\"> = </span><span class=\"mtk11\">rateLimit</span><span class=\"mtk1\">({</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">windowMs:</span><span class=\"mtk1\"> </span><span class=\"mtk7\">60</span><span class=\"mtk1\"> * </span><span class=\"mtk7\">60</span><span class=\"mtk1\"> * </span><span class=\"mtk7\">1000</span><span class=\"mtk1\">, </span><span class=\"mtk3\">// 1 hrs in milliseconds</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">max:</span><span class=\"mtk1\"> </span><span class=\"mtk7\">100</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">message:</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&#39;You have exceeded the 100 requests in 1 hrs limit!&#39;</span><span class=\"mtk1\">, </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">headers:</span><span class=\"mtk1\"> </span><span class=\"mtk4\">true</span><span class=\"mtk1\">, </span><span class=\"mtk3\">// it will add X-RateLimit-Limit , X-RateLimit-Remaining and Retry-After Headers in the request </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">});</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\">//  you can add this in the middleware. it will apply a rate limit for all requests </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">app</span><span class=\"mtk1\">.</span><span class=\"mtk11\">use</span><span class=\"mtk1\">(</span><span class=\"mtk12\">API</span><span class=\"mtk1\"> </span><span class=\"mtk12\">rate</span><span class=\"mtk1\"> </span><span class=\"mtk12\">limit</span><span class=\"mtk1\">);</span></span></code></pre>\n<h3 id=\"5-passive-cache\" style=\"position:relative;\"><a href=\"#5-passive-cache\" aria-label=\"5 passive cache 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. Passive cache</h3>\n<p>Active cache means if the service first attempts to read from the cache backend and falls back to reading from the actual source. The service is not dependent on requesting the data from the real upstream server. A cache backend is a key-value store (e.g., Redis) or In-Memory cache, and the actual source of data is SQL, MongoDB, etc.</p>\n<p>Passive cache architecture ensures high volume traffic never hits to actual server or service.</p>\n<p>I m adding node js examples to implement the passive cache. multiple npm packages are available for node js</p>\n<p> <strong>NodeJs</strong></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"javascript\" data-index=\"1\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk15\">import</span><span class=\"mtk1\"> </span><span class=\"mtk12\">nodeCache</span><span class=\"mtk1\"> </span><span class=\"mtk15\">from</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;node-cache&quot;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">myCache</span><span class=\"mtk1\"> = </span><span class=\"mtk4\">new</span><span class=\"mtk1\"> </span><span class=\"mtk10\">nodeCache</span><span class=\"mtk1\">();</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">ap</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\">// set object in the cache </span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">obj</span><span class=\"mtk1\"> = { </span><span class=\"mtk12\">userid:</span><span class=\"mtk1\"> </span><span class=\"mtk7\">909887</span><span class=\"mtk1\">, </span><span class=\"mtk12\">name:</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;example&quot;</span><span class=\"mtk1\"> };</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">success</span><span class=\"mtk1\"> = </span><span class=\"mtk12\">myCache</span><span class=\"mtk1\">.</span><span class=\"mtk11\">set</span><span class=\"mtk1\">( </span><span class=\"mtk8\">&quot;userKey&quot;</span><span class=\"mtk1\">, </span><span class=\"mtk12\">obj</span><span class=\"mtk1\">, </span><span class=\"mtk7\">600</span><span class=\"mtk1\"> ); </span><span class=\"mtk3\">// ttl is 600 seconds </span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\">//read object from the cache </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">value</span><span class=\"mtk1\"> = </span><span class=\"mtk12\">myCache</span><span class=\"mtk1\">.</span><span class=\"mtk11\">get</span><span class=\"mtk1\">( </span><span class=\"mtk8\">&quot;userKey&quot;</span><span class=\"mtk1\"> );</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk15\">if</span><span class=\"mtk1\"> ( </span><span class=\"mtk12\">value</span><span class=\"mtk1\"> == </span><span class=\"mtk4\">undefined</span><span class=\"mtk1\"> ){</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk3\">// handle miss!</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">}</span></span></code></pre>\n<h3 id=\"6-cloud-based-ddos-mitigation\" style=\"position:relative;\"><a href=\"#6-cloud-based-ddos-mitigation\" aria-label=\"6 cloud based ddos mitigation 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. Cloud-Based DDoS Mitigation</h3>\n<p>Several vendors provide DDoS mitigation services as software as a service model. They have charged a license fee the first time then charge according to service usages. </p>\n<p>The Cloud-based DDoS mitigation solution has a lot of advantages. They have dedicated staff, better reaction time, High network bandwidth than private networks to perform better in case of volume-based DDoS attack. Multi cross-region availability with auto replica or backup so you can switch to your application load next available region without impacting your actual users, updated policies or rule set, a better experience for handling DDoS attacks.</p>\n<h2 id=\"conclusion\" style=\"position:relative;\"><a href=\"#conclusion\" aria-label=\"conclusion permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Conclusion</h2>\n<p>The DDoS attacks are increasing day by day. Organizations need to prepare for any attack. If the organization does not prepare in advance and any attack happens, that case damage control can take months and impact the organization's reputation. </p>\n<p>LoginRadius has all processes and policies well defined, 24X7 monitoring by delegating security team. Please see <a href=\"https://www.loginradius.com/docs/security/overview/\">Security Overview</a> document for more information.</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 .mtk15 { color: #C586C0; }\n  .dark-default-dark .mtk1 { color: #D4D4D4; }\n  .dark-default-dark .mtk12 { color: #9CDCFE; }\n  .dark-default-dark .mtk8 { color: #CE9178; }\n  .dark-default-dark .mtk4 { color: #569CD6; }\n  .dark-default-dark .mtk11 { color: #DCDCAA; }\n  .dark-default-dark .mtk7 { color: #B5CEA8; }\n  .dark-default-dark .mtk3 { color: #6A9955; }\n  .dark-default-dark .mtk10 { color: #4EC9B0; }\n</style>","frontmatter":{"date":"February 24, 2021","updated_date":null,"description":"Learn what a DDoS attack is, including the various classifications of attacks, and how to defend your site from one.","title":"What is a DDoS Attack and How to Mitigate it","tags":["DDoS","DDos mitigate","DDoS Prevention"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.3333333333333333,"src":"/static/72332960e1243ffa32dc827adaf67f77/58556/What-is-a-DDoS-attack.webp","srcSet":"/static/72332960e1243ffa32dc827adaf67f77/61e93/What-is-a-DDoS-attack.webp 200w,\n/static/72332960e1243ffa32dc827adaf67f77/1f5c5/What-is-a-DDoS-attack.webp 400w,\n/static/72332960e1243ffa32dc827adaf67f77/58556/What-is-a-DDoS-attack.webp 800w,\n/static/72332960e1243ffa32dc827adaf67f77/cc834/What-is-a-DDoS-attack.webp 1024w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Vijay Singh Shekhawat","github":"code-vj","avatar":null}}}},{"node":{"excerpt":"Personalization is the key to creating a meaningful experience for consumers across industries. It allows organizations to ensure that the…","fields":{"slug":"/growth/consumer-experience-and-privacy/"},"html":"<p>Personalization is the key to creating a meaningful experience for consumers across industries. It allows organizations to ensure that the content seen and received by their users is worthwhile and relevant. Needless to say, in striving to create this meaningful experience, brands need to collect an increasing amount of data on their respective consumers.</p>\n<p>This growing demand for personalized content and the consequent need to secure an overwhelming amount of data is what breeds the dilemma of consumer experience and data security faced by present-day organizations. </p>\n<p>Another aspect of this dilemma is an <a href=\"https://www.edelman.com/trust/2020-trust-barometer\">all-time low consumer trust in brands</a>. The general population has lost faith in brands. This lack of trust has given rise to data security legislations that organizations ought to adhere to: GDPR, CCPA, and the SOX Act amongst many more with several reportedly under conception.</p>\n<p>To enjoy the benefits of personalization while balancing adherence to regulations and retention of consumer trust, entities ought to seek the optimal and acceptable degree of data collection and utilization.</p>\n<h2 id=\"the-case-for-enabling-a-frictionless-consumer-experience\" style=\"position:relative;\"><a href=\"#the-case-for-enabling-a-frictionless-consumer-experience\" aria-label=\"the case for enabling a frictionless consumer experience permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>The Case for Enabling a Frictionless Consumer Experience</h2>\n<p>Gartner argues that the value of the traditional 4 Ps of marketing: product, price, promotion, and placement) has faded in the internet-era where prices and product availability are more transparent than ever. This change has made consumer experience the factor that acts as the primary influencer for consumers in this age.</p>\n<p>A consumer’s digital experience with the brand is largely dependent on their interaction with the applications of the organization. These applications’ flow and working are increasingly dependent on usage patterns and behavioral inputs of consumers. Hence, the information collected through an individual’s data patterns is necessary to <a href=\"https://www.loginradius.com/customer-experience-solutions/\">supplement consumer experience</a>. </p>\n<p>Artificial Intelligence and Machine Learning enable the worthwhile use of this data. When implemented well, these automated systems help create a catered virtual experience that feels relevant to consumers. A consequent personalized experience increases the potential to increase conversion rates and hence returns on investment. Unsurprisingly, <a href=\"https://segmentify.com/blog/personalization-great-fit-online-healthcare-services/\">93% of ecommerce consumers</a> expect personalization in their browsing.</p>\n<p><a href=\"https://www.loginradius.com/blog/fuel/2020/04/omnichannel-customer-experience/\">Omnichannel promotions</a>, location-based consumer services, and targeted content barely scratch the surface of personalized content expected by consumers. It’s reasonable to claim that a relevant experience created through these means can make or break a brand. Nevertheless, collection of such sensitive information and its use renders organizations susceptible to data mishandling and potentially exposing it through data breaches.</p>\n<p>The ever-present potential for data breaches along with concerns over unethical use of sensitive data are two aspects hurting trust in brands throughout the globe.</p>\n<h2 id=\"the-conflict-between-privacy-and-security\" style=\"position:relative;\"><a href=\"#the-conflict-between-privacy-and-security\" aria-label=\"the conflict between privacy and security permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>The Conflict Between Privacy and Security</h2>\n<p>The contradictory tendency of the newer generations to share their personal information in exchange for services despite the negligible trust in brands is called the privacy paradox.</p>\n<p>Users have – and are – growing more concerned about the manner in which organizations treat their personal information. <a href=\"https://tresorit.com/blog/trust-in-tech-giants-is-broken/\">More than 40%</a> studied in a survey do not trust companies like Amazon, Google, Facebook, and Apple to manage their data lawfully, much less ethically. Even for most organizations: <a href=\"https://news.microsoft.com/apac/2019/04/16/microsoft-idc-study-only-31-of-consumers-in-asia-pacific-trust-organizations-offering-digital-services-to-protect-their-personal-data/\">approximately 40%</a> consumers have felt their trust has been compromised when using digital services. Only <a href=\"https://news.microsoft.com/apac/2019/04/16/microsoft-idc-study-only-31-of-consumers-in-asia-pacific-trust-organizations-offering-digital-services-to-protect-their-personal-data/\">31% of participants</a> have indicated that they trust organizations and institutes to treat their personal information and data trustworthily.</p>\n<p>On realizing that their trusts have been compromised, consumers can and do tend to reduce their interaction with the brand. This reduction can be in the form of reduced spending, or a boycott of the brand altogether.</p>\n<p>Weak and unethical approaches to consumer experience and data security practices have been met with growing regulations on consumer data security. Regulations such as General Data Protection Regulation (GDPR), the SOX Act, HIPAA, and others mean that the companies that fail to act legally and ethically do not only stand to lose their consumer base but also incur heavy fines from regulatory bodies. According to UNCTAD, <a href=\"https://unctad.org/page/data-protection-and-privacy-legislation-worldwide\">128 out of 194</a> recognized countries have established legislations to protect consumer data and privacy.</p>\n<p>But there’s a catch!</p>\n<p>Despite all things considered, in reality, companies may be using much less data than consumers may consent to. Studies by <a href=\"https://www.gartner.com/smarterwithgartner/how-to-balance-personalization-with-data-privacy/\">Gartner</a> and the Boston Consulting Group conclude that when consumer consent is undertaken, that is, when consumers and other stakeholders are consulted before the use of their data, they may be willing to let companies use much more data than they currently use: making consent the key to perfecting the balancing act.</p>\n<h2 id=\"maintaining-the-balance--benefits-in-the-c-suite\" style=\"position:relative;\"><a href=\"#maintaining-the-balance--benefits-in-the-c-suite\" aria-label=\"maintaining the balance  benefits in the c suite 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>Maintaining the Balance – Benefits in the C-Suite</h2>\n<ul>\n<li>Undertaking and tracking consumer consent through improved identity solutions increases consumer trust all the while reducing the risk for the organization. For the desired response, consent record can and should allow consumers to have a say in the use, sharing, and commercialization of their data.</li>\n<li>Greater consent to data use can allow boosted personalization and use of data. Hence, allowing a smooth consumer omnichannel experience. In addition, better and statistical backed business decisions can be undertaken through data inference.</li>\n<li>Data management risks and compliance costs can be reduced. Through the means of an outcome-based service, real-time risks to stored data can be assessed, hence, meeting <a href=\"https://www.loginradius.com/security/\">data security compliance</a> and reduced potential for legal fines.</li>\n<li>Such a balanced approach is also likely to give one a competitive edge over organizations that fail to engage in ethical data stewardship practices: increasing the potential to secure a broader consumer base and hence greater revenues.</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>Consumer data has become a fundamentally crucial aspect of business models. It is needed for personalization to boost consumer experience, to make better business decisions, to generate more revenue through third party transfers, and to allow personalized advertisements. consumers and other stakeholders have come to realize the importance and the use of this data over the past few years as well.</p>\n<p>Unfortunately, the current consumer experience and <a href=\"https://www.loginradius.com/blog/identity/2020/12/data-security-best-practices/\">data security practices</a> do not stand in line with consumer privacy expectations. An organization neglecting ethical and legal data use stands to lose out on revenue, incur heavy fines, all the while narrowing their consumer base for the worse.</p>\n<p>Consent as well as robust security protocols play key roles in walking the fine line between data management and consumer privacy expectations. An organization that handles their consumers’ data ethically stands to gain a considerable edge against competitors through greater access to data, greater consumer trust, and potential to secure more privacy-conscious consumers.</p>\n<p><a href=\"https://www.loginradius.com/contact-us?utm_source=blog&#x26;utm_medium=web&#x26;utm_campaign=consumer-experience-and-privacy\"><img src=\"/8fce571f703a5970dbb1359a2fe0e51a/book-a-demo-loginradius.webp\" alt=\"book-a-demo-loginradius\"></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":"February 24, 2021","updated_date":null,"description":"Consent as well as robust security protocols play key roles in walking the fine line between data management and consumer privacy expectations. An organization that handles their consumers’ data ethically stands to gain a considerable edge against competitors through greater access to data, consumer trust, and potential to secure more privacy-conscious consumers.","title":"Walking the Fine Line Between Consumer Experience and Privacy","tags":null,"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/99838ade013331305fe537175a2e1cf1/58556/consumer-experience-privacy.webp","srcSet":"/static/99838ade013331305fe537175a2e1cf1/61e93/consumer-experience-privacy.webp 200w,\n/static/99838ade013331305fe537175a2e1cf1/1f5c5/consumer-experience-privacy.webp 400w,\n/static/99838ade013331305fe537175a2e1cf1/58556/consumer-experience-privacy.webp 800w,\n/static/99838ade013331305fe537175a2e1cf1/99238/consumer-experience-privacy.webp 1200w,\n/static/99838ade013331305fe537175a2e1cf1/135cd/consumer-experience-privacy.webp 1280w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.webp"}}}},{"node":{"excerpt":"In today’s constantly changing world, agility is an absolute must for transformation. Any small or large organization can no longer avoid…","fields":{"slug":"/identity/digital-agility/"},"html":"<p>In today’s constantly changing world, agility is an absolute must for transformation. Any small or large organization can no longer avoid – or even delay - digital transformation as they try to remain competitive in an evolving business climate. As aptly stated by <a href=\"https://blog.kintone.com/business-with-heart/11-digital-transformation-quotes-to-lead-change-inspire-action\">Aaron Levie of BOX</a>, “the next 10 years of IT will be about transforming your business.”</p>\n<p>Just like agility is the “way to move quickly and easily,” digital agility is now the means to <a href=\"https://www.striata.com/posts/digital-agility-in-digital-transformation/\">adopt digital transformation</a> quickly and easily through the right tools and processes. </p>\n<p>What exactly is digital agility – and how do you go about achieving its objectives? These are the key questions that we shall try to address over the next few sections. </p>\n<h2 id=\"what-is-digital-agility\" style=\"position:relative;\"><a href=\"#what-is-digital-agility\" aria-label=\"what is digital agility permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is Digital Agility</h2>\n<p>In simple terms, digital agility is the ease with which any organization can adapt to changing business needs – by enabling or changing their business processes. <a href=\"https://business.comcast.com/community/browse-all/details/speed-and-strategy-success-through-agility\">Meredith Whalen of IDC</a> believes that \"the more we get into a digital economy, it is all about adapting and responding quickly as an organization to disruption and changes.\"</p>\n<p>Simply put, for a successful digital transformation, organizations need to invest in resilient business operations, consumer experience initiatives, and technology. For instance, the creation of an identity-driven digital transformation strategy enables various users – including internal &#x26; external – to have the <span style=\"text-decoration:underline;\">right access to the right technology for the right purpose</span>.</p>\n<p>How do you go about achieving your business objectives in digital agility? Among its major building blocks, identity and access management (or IAM) can help in bringing business agility into any organization. </p>\n<p>Traditionally, IAM has always been viewed as an effective security solution that is necessary for software applications and mobile apps. In short, it has been used solely to “keep the bad guys out.” This is true – but the fact is IAM is now much more than simply acting as an authentication tool.</p>\n<p>Among its major benefits, flexible IAM technology can also be used to add to the digital agility progress of any firm. How does IAM technology work in boosting digital agility? Let us discuss that in the following section.</p>\n<h2 id=\"iam-and-digital-agility\" style=\"position:relative;\"><a href=\"#iam-and-digital-agility\" aria-label=\"iam and digital agility permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>IAM and Digital Agility</h2>\n<p>Traditionally, IAM technology has been embedded into applications and frameworks such as AngularJS and React. The constraint of this approach is that IAM-related capabilities remain limited to the specific application or framework. As a result, it is a challenge to integrate these applications with external systems. </p>\n<p>To create a successful digital strategy using IAM, you need to focus on:</p>\n<ul>\n<li>Which users or identities require access rights to the applications?</li>\n<li>How can they go about utilizing these applications?</li>\n<li>What resources do they need for access?</li>\n<li>How can you prevent unauthorized access to the applications?</li>\n</ul>\n<p>Business leaders must plan on having a flexible IAM solution in their working environment that can be both distributed and dynamic for changing business needs.</p>\n<p>For effective <a href=\"https://www.loginradius.com/blog/identity/2021/01/what-is-digital-transformation/\">digital transformation</a>, technology-enabled companies must move from a fixed and rigid IT infrastructure – to a more flexible and component-based API architecture, which can easily be reconstructed or reused. Next, we shall see how an API-based <a href=\"https://www.loginradius.com/blog/identity/2019/06/customer-identity-and-access-management/\">consumer Identity and Access Management (or CIAM)</a> can be the foundation of digital agility and transformation.</p>\n<p><a href=\"https://www.loginradius.com/resource/the-enterprise-buyers-guide-to-consumer-identity/\"><img src=\"/860c267222fd012ab48fe9e6c26d0129/enterprise-buyer-guide-to-consumer-identity.webp\" alt=\"enterprise-buyer-guide-to-consumer-identity\"></a></p>\n<h2 id=\"importance-and-benefits-of-api-driven-ciam\" style=\"position:relative;\"><a href=\"#importance-and-benefits-of-api-driven-ciam\" aria-label=\"importance and benefits of api driven 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>Importance and Benefits of API-driven CIAM</h2>\n<p>A recent PwC report concludes that <a href=\"https://www.pwc.com/us/en/advisory-services/publications/consumer-intelligence-series/pwc-consumer-intelligence-series-customer-experience.pdf\">32% of consumers</a> will abandon a product or brand – after just one bad experience. This shows a good consumer experience is not just desirable – but essential for business success. </p>\n<p>CIAM technology essentially combines both these requirements. No matter which medium consumers are using to engage with a brand – be it physical, online, or mobile, CIAM solutions ensure a secure and seamless experience. Plus, using their API capabilities, CIAM solutions can be embedded into on-premises software or cloud-based applications.</p>\n<p>Listed below are some of the benefits of CIAM as compared to traditional IAM solutions:</p>\n<ul>\n<li><span style=\"text-decoration:underline;\">A unified consumer experience</span> that is consistent across all channels.</li>\n<li><span style=\"text-decoration:underline;\">Advanced data authentication </span>that can secure your consumer data from online security threats.</li>\n<li><span style=\"text-decoration:underline;\">Consistent performance and scalability </span>with an exponential increase in consumer identities.</li>\n<li><span style=\"text-decoration:underline;\">Data privacy-related compliance</span> ensures that your consumers have complete control over who and how their data is shared.</li>\n</ul>\n<h2 id=\"how-the-loginradius-ciam-solution-can-help-in-your-digital-agility\" style=\"position:relative;\"><a href=\"#how-the-loginradius-ciam-solution-can-help-in-your-digital-agility\" aria-label=\"how the loginradius ciam solution can help in your digital agility permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How the LoginRadius CIAM Solution Can Help in Your Digital Agility</h2>\n<p>As a leading provider of CIAM solutions that works for any business model, LoginRadius ensures digital agility along with a seamless consumer experience. With the LoginRadius identity management platform, you can achieve digital transformation by connecting your consumer data to a host of API-driven tools in analytics, business intelligence (BI), and consumer relationship management (CRM). </p>\n<p>Using the LoginRadius <a href=\"https://www.loginradius.com/identity-api/\">consumer identity APIs</a>, you can easily validate and automate your consumer identification process and prevent the creation of any spam or fraud accounts.</p>\n<p>With its preconfigured integration with third-party tools and applications, you can pull your latest consumer data – thus eliminating data silos and generating valuable insights.</p>\n<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>Organizations need to maximize their digital footprint – to stay relevant in today’s connected world. Are you still working with outdated IT systems and processes? Then it is the right time to go for digital agility that can transform your business. In addition to user authentication, <a href=\"https://www.loginradius.com/blog/identity/2021/01/what-is-iam/\">IAM</a> solutions can go a long way in elevating your consumer experience.</p>\n<p>Built using extensive API functionalities and open-source SDKs, LoginRadius CIAM provides the best of customization and security – that can work for your business needs.</p>\n<p><a href=\"https://www.loginradius.com/contact-us?utm_source=blog&#x26;utm_medium=web&#x26;utm_campaign=digital-agility\"><img src=\"/8fce571f703a5970dbb1359a2fe0e51a/book-a-demo-loginradius.webp\" alt=\"LoginRadius Book a Demo\"></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":"February 24, 2021","updated_date":null,"description":"Digital agility is the ease with which any organization can adapt to changing business needs – by enabling or changing their business processes. For a successful digital transformation, organizations need to invest in resilient business operations, consumer experience initiatives, and technology.","title":"Why Organizations Must Use API-Driven CIAM for Digital Agility","tags":["ciam solution","digital transformation","cx"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.492537313432836,"src":"/static/227e71fd3c3a37cb135823ebe2e06775/58556/digital-agility.webp","srcSet":"/static/227e71fd3c3a37cb135823ebe2e06775/61e93/digital-agility.webp 200w,\n/static/227e71fd3c3a37cb135823ebe2e06775/1f5c5/digital-agility.webp 400w,\n/static/227e71fd3c3a37cb135823ebe2e06775/58556/digital-agility.webp 800w,\n/static/227e71fd3c3a37cb135823ebe2e06775/cc834/digital-agility.webp 1024w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.webp"}}}}]},"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.webp"}}}},"pageContext":{"limit":6,"skip":588,"currentPage":99,"type":"///","numPages":164,"pinned":"ee8a4479-3471-53b1-bf62-d0d8dc3faaeb"}},"staticQueryHashes":["1171199041","1384082988","2100481360","23180105","528864852"]}