{"componentChunkName":"component---src-templates-blog-list-template-js","path":"/135","result":{"data":{"allMarkdownRemark":{"edges":[{"node":{"excerpt":"This blog is a short guide on implementing AWS Lambda and SQS together. First we’ll introduce these technologies and explain why they work…","fields":{"slug":"/engineering/working-with-aws-lambda-and-sqs/"},"html":"<p>This blog is a short guide on implementing AWS Lambda and SQS together. First we’ll introduce these technologies and explain why they work well together, then walkthrough some configurations and invocation using a simple Nodejs script.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 448px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 47.09821428571428%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAAAsTAAALEwEAmpwYAAAB2ElEQVQoz2P4DwT//gGJt49uvr207//f3//BQv9RAIj769evO5f2fHh2GS7KAMQfXzx6dnjFpqqgM5WW75fnfL++9/+fX8ha//z+de3cnlntsf2FBtfXhLw60//r412Q5k/P7++r8zteYbUp1+pCi9etmSmX2zzf758Jtu/vv79/gfTxPYvKY5SyglXSg7Vrkg1nVxrum+H97d1dhrf3r+0qsjnT4rUp3+5co9vVpQ0nl3TdXdUM1vv33z+Q5pO7Zq7vdljR6dGVbz67KXDrsvZrpzb8/v6B4d2D67uKbE83uG3Osz3b5HmgyPx8vdPddZ3Ims/tmzO11GB+o31/kdnV1cE31gZfWxP25c0NkObdJQ5nmr0259udbXS9PLvwyqquO2vakTWf2Ttn/yyfE8vid8yMeHCw4fW1FR8eHvzz4yPD+4c3dhRYHS+33Jxnfb7F6/O+SU8XZr3a2gWOBKifD2yZPrXM5OSavLcXpny8POnJwfLb2zJBfgaa//zqidsrmtYXuJyuMH81PeTD3ql/P7+BxhA4Fr99/bh/y6ymPLuefP1zi71vbM17d2//v7+/GcA2gFTcP7Pv8Y7p/z6/gsc8IpbB3M+f3p3eO+/1nb3/wX4BAgCRTp73+XcmigAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"blog aws lambda sqs 1\"\n        title=\"blog aws lambda sqs 1\"\n        src=\"/static/770c89c93d5798dacecb6b81d79b6c00/33b38/blog-aws-lambda-sqs-1.png\"\n        srcset=\"/static/770c89c93d5798dacecb6b81d79b6c00/33b38/blog-aws-lambda-sqs-1.png 448w\"\n        sizes=\"(max-width: 448px) 100vw, 448px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p><strong>What are they?</strong>\nAWS Lambda is a popular choice in serverless computing. As an event-driven platform, AWS Lambda requires users to configure event sources in order to run a function. Their built-in support for many AWS services like S3 and SQS as event sources allow for relatively simple configuration. Note that Lambda functions can also be triggered via HTTP(S) by using AWS API Gateway service.</p>\n<p>AWS SQS (Simple Queue Service) is a queue service with 2 types: standard and FIFO. The major difference is that standard queues guarantee “at-least once” delivery of its messages, while FIFO queues guarantee “exactly-once” delivery. FIFO queues, however, provide lower maximum throughput than standard.</p>\n<p>As previously mentioned, AWS SQS can be an event source for AWS Lambda. This means that when a message is added to the queue, the configured Lambda function will be invoked with an event containing this message.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 434px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.184331797235025%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAIAAABM9SnKAAAACXBIWXMAAAsTAAALEwEAmpwYAAABQUlEQVQY001QPUvDUBTNP7KDm9DNRf+Bk7ODCIUqOHUQFFGwXZ3t4gfVglTdLH5UKkoj9MumqWkbm7TJS/LSpHn3PtMUxcMdzr1czrn3CDwC9VGzIQDk/6DKYle8wokZdRgVJ0pDfz7nnhVyAZGrhGkWuD4aFBkLNE2zqSdV7o4S85lE7OUiCYE31IeuzwblwkNy4XU7rpxswdgWhg4QF2ZWAwv0kdmoV5uS8nSduTyI3x6vtIqHNtFr1ZqkqG/ZvceNWCm19JFe9Q1V6JtsdlMIk4LjhXSqVS/n8ullMbcm3++wCZ1tdIunxfW5SmpxkN0MHEMIbQ0KOvEMZ6I74AfIcQoAJpby7zf741Fzqo4QDn3Pk0sF6Wx33KsxwPBnZMhbbeVbN+E3Kox8KHXbnd5fhqFeX1U/252+NpLkL4uQH62JPUSBGRLAAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"blog aws lambda sqs 2\"\n        title=\"blog aws lambda sqs 2\"\n        src=\"/static/9ad82d0a34ee856fd75467a0556ee069/ade6e/blog-aws-lambda-sqs-2.png\"\n        srcset=\"/static/9ad82d0a34ee856fd75467a0556ee069/ade6e/blog-aws-lambda-sqs-2.png 434w\"\n        sizes=\"(max-width: 434px) 100vw, 434px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p><strong>But why use them together?</strong><br>\nCommon reasons include better handling Lambda function invocations and errors. For function invocations, the default concurrency limit is 1000. If a function has reached this limit, any additional invocations will fail with a throttling error. However, with SQS as an event source, events resulting in throttling errors are automatically retried based on set configs. This prevents the loss of events due to unexpected jumps in usage. Additionally, dead-letter queues (DLQ) can be configured as a place where failed events go, to avoid retrying indefinitely. Failed events in DLQ can then be sent somewhere like a DB for analysis.</p>\n<p>One limitation for many use cases was the “at-least once” delivery model of events with standard queues. Essentially, there was no guarantee that an event will only be delivered once to a consuming Lambda function. In cases where each event can strictly only be processed once, one would have to employ various strategies resulting in higher overhead and complexity. But, this is no longer an issue because recently the AWS team added support for FIFO queues as event sources to Lambda functions.</p>\n<p><strong>Walkthrough</strong><br>\nLet’s set up a basic “Hello World” application with SQS and Lambda.</p>\n<p>1. Starting with SQS, add a standard queue.</p>\n<p>2. Now, add a Lambda function:</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 43.69230769230769%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAYAAAAywQxIAAAACXBIWXMAAAsTAAALEwEAmpwYAAABL0lEQVQoz32S627CMAyF+/7vtJeY9g9NCA00Sugl9zRNe7DdFjamEemTj+3EdtpUu889Dl9HXJsGbddBG00YGGthnROt7eKLJjjO/k+2XLU7HHE4K1x6B6U9+pDRuEQNrrgohRgjQgjwBOuUksQVwdZaJ3mOB8pXtc1QLqONE3QGugGkC07fCsZYDMMg8IFxHIWLaqR4jOmeK6WIrlTbwYYIR0nro2jrA43vl81DWhnuUxjrF3+NbTjvUZ3rmhyeIiOPBWNZKFMR/w/lsWeaJqGsOlLRSnUGrXGCSxlxpAQdfEXI3HDG85Ir85+Z55k6PDr+x8zMD82LzzK8khTUBs55uXamD55zXuym82KnrcDTVL8L0pV7rdH1/f19vYTf5opZraZ4W5/Qvr+h23/gBmfyuvrRFaCXAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"blog aws lambda sqs 3 1024x447\"\n        title=\"blog aws lambda sqs 3 1024x447\"\n        src=\"/static/fc4529f0bf774126503634505395642c/e5715/blog-aws-lambda-sqs-3-1024x447.png\"\n        srcset=\"/static/fc4529f0bf774126503634505395642c/a6d36/blog-aws-lambda-sqs-3-1024x447.png 650w,\n/static/fc4529f0bf774126503634505395642c/e5715/blog-aws-lambda-sqs-3-1024x447.png 768w,\n/static/fc4529f0bf774126503634505395642c/2bef9/blog-aws-lambda-sqs-3-1024x447.png 1024w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>3. Create a new execution role with the following configs:<br>\na. Trusted Entity: Lambda<br>\nb. Permissions: AWSLambdaBasicExecutionRole; AWSLambdaSQSQueueExecutionRole</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 512px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 57.03125%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAALCAIAAADwazoUAAAACXBIWXMAAAsTAAALEwEAmpwYAAAA7ElEQVQoz4VSi27DIAzk/z+rv7BPqLQuRCSMp8FAdoUu6vrIToplgs/2XSK01uu6xhhrrdt/aK0xl22r0xJOH1JIKed5JqLwCzTa81JKewP0EswMJgiI3vtpmrAL2i3Lgpe4rR2j+gHi/oAi7rAdIKMdeiE3xuD4MPwPGUVKqX1zMPc4cM/EJPG8TC0FOqgjpYSYcx750WT0hvPOB+ucd31X843Zrd5wpBneWuuC04mcJ/YxBcox8SuznshA5sbm06rzZeUvFaQmfFLjczsmQxK2hD1QdxVIEc/Q+e6fEbiG1OGK76BO6walY/IPBgqFRAr7DkMAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"blog aws lambda sqs 4\"\n        title=\"blog aws lambda sqs 4\"\n        src=\"/static/9f83447cdf63a3b11b1098c9e83aa39b/01e7c/blog-aws-lambda-sqs-4.png\"\n        srcset=\"/static/9f83447cdf63a3b11b1098c9e83aa39b/01e7c/blog-aws-lambda-sqs-4.png 512w\"\n        sizes=\"(max-width: 512px) 100vw, 512px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>4. Use newly created role in Lambda function. Remember to save (top right).</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 759px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 39.84615384615385%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAICAIAAAB2/0i6AAAACXBIWXMAAAsTAAALEwEAmpwYAAAA3ElEQVQY04VR23KFIAz0/z9TaLUtCohJUMDTRY+XPnUnLmuYTDahGa1VSmmtu65n5vgflgeaMM/GmGEcnXMppZxzyfniJ0qpkVNOJxqJEfV+mqxzYGjETBQqMQhHlUTG07eTVLbXiVqMKjMMff81E6P1mtIR6RSHlrjEZX09sHcOAdNeqW3bdr7182rbUwc3fgptq1qlMbjznkWqR+bDPD4IJN8Z/DPjGlXrmhpi0Z+9+uisDzB2+cx1NXdgV1i0SLTWgd+2SRYzyY8XS6unhfZueJLb5F+UUq5ZfgG9FdCeWW5mkAAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"blog aws lambda sqs 5\"\n        title=\"blog aws lambda sqs 5\"\n        src=\"/static/bc5c66a5797178bc7f81a10b4acc9df6/ef3e1/blog-aws-lambda-sqs-5.png\"\n        srcset=\"/static/bc5c66a5797178bc7f81a10b4acc9df6/a6d36/blog-aws-lambda-sqs-5.png 650w,\n/static/bc5c66a5797178bc7f81a10b4acc9df6/ef3e1/blog-aws-lambda-sqs-5.png 759w\"\n        sizes=\"(max-width: 759px) 100vw, 759px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>5. Add a trigger:<br>\na. Batch size set to 1, so the Lambda Function will process 1 message at a time.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 512px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 73.046875%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAPCAIAAABr+ngCAAAACXBIWXMAAAsTAAALEwEAmpwYAAABYklEQVQoz41SW26DMBDksr1UD1NV6kd/q0C+m9KQQgwY/H7w6NhWoyI1TUYjawEPs15PVnfjMI5fzbnrKReCcX4/s12eF/t9XhRSKTyPjN3PrPo8HqvqoyzPhECsjVFa36bSHM7HtqmbpizL98MB/U/TZN1tYJsQIuuf30bSTcu8Luu8LNN8G1A673HMrH3NNRfW2Xma14jlf0Q1zBXEhA09pdZaE0+LNZhfUQHrD7A563uKM5/qum07FNXphMmBQsh0ikRslVIyxjdiCDB0tGEMzG2C1to5/6f5RhxatQYThjDQuVS7ycM5Mcmwrr8QxVKmSxMxXiJA8ogQo4gB7QqRzDdi0g191w3DgFHJ8COFAm2HAYbKqAiU6xZxYCOnNPwat+e9R882pMSHFfR+vYIg1gZZU3AUUl4IpP5RXyKpQyoV3irBFMUV0yxFHMG8ln58SkRNCCnrlhQv5eNDu3v6Bl0TYEVofcLmAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"blog aws lambda sqs 6\"\n        title=\"blog aws lambda sqs 6\"\n        src=\"/static/e46348dd03d3c4ba184bd06f4e989f4e/01e7c/blog-aws-lambda-sqs-6.png\"\n        srcset=\"/static/e46348dd03d3c4ba184bd06f4e989f4e/01e7c/blog-aws-lambda-sqs-6.png 512w\"\n        sizes=\"(max-width: 512px) 100vw, 512px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>6. Programmatically enqueue a message into SQS with the following code in Nodejs:</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=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">AWS</span><span class=\"mtk1\"> = </span><span class=\"mtk11\">require</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&quot;aws-sdk&quot;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">AWS</span><span class=\"mtk1\">.</span><span class=\"mtk12\">config</span><span class=\"mtk1\">.</span><span class=\"mtk11\">update</span><span class=\"mtk1\">({</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">region:</span><span class=\"mtk1\"> </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">AWS_SQS_REGION</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">, // TODO</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  accessKeyId: </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">AWS_ACCESS_KEY_ID</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">, // TODO</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  secretAccessKey: </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">AWS_SECRET_ACCESS_KEY</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> // TODO</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">});</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">const sqs = new AWS.SQS(</span><span class=\"mtk4\">{</span><span class=\"mtk1\"> </span><span class=\"mtk12\">apiVersion</span><span class=\"mtk1\">: </span><span class=\"mtk8\">&quot;2012-11-05&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk4\">}</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">sqs.sendMessage(</span><span class=\"mtk4\">{</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">MessageBody</span><span class=\"mtk1\">: </span><span class=\"mtk10\">JSON</span><span class=\"mtk1\">.</span><span class=\"mtk11\">stringify</span><span class=\"mtk1\">({</span><span class=\"mtk12\">hello:</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;world&quot;</span><span class=\"mtk1\">}),</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">QueueUrl</span><span class=\"mtk1\">: </span><span class=\"mtk17\">&lt;</span><span class=\"mtk10\">AWS_SQS_URL</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> // TODO</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">}, (err, data) =&gt; (err) ? console.log(&quot;Error&quot;, err) : console.log(&quot;Success&quot;, data.MessageId));</span></span></code></pre>\n<p>a. Create package.json with `npm init`<br>\nb. Install aws sdk dependency with `npm i aws-sdk --save`<br>\nc. Fill in your specific AWS account details. Find AWS_SQS_URL by selecting the queue you created, while AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY require creating a new IAM user with programmatic access. This user also needs permission to push messages into SQS.<br>\nd. Run script with `node app.js`<br>\ne. Navigate to Monitoring tab in your Lambda function, the invocations graph should have a new data point (may take a few minutes to update).</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 512px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 86.32812499999999%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAARCAIAAABSJhvpAAAACXBIWXMAAAsTAAALEwEAmpwYAAABWklEQVQ4y6VT207CQBDd//8p9UF4EX3BGAOV0qWRXvbe7S60BU9bBCSYFJ1MJzPdMzNn9kKU1sEifJ/NZ/OPJE2ZEPNggXBJqTKFXM1EOBXRm1ZSm0Ibc64EyYzzjLGcMaEAacM0zxkXKWNRFNLlIgqDz/VaGoPVcyVcCKCRCSeHw7lUqi8MR7SqO8VffaFk+jp9HI3v7h8mzy9Pk8loPI4otWWJNeSbojBFZ38SPtDGh0adPaD1NdxVbWdGQmEttKd6Mdhv2tJGM8ZYkiSrOMbY2+12M0AAs9YSjBfHMaUUVkq5HywoQZz3zjlUQrwbLN/Jzu2apq7r498bOpfO7f8kh85NJ8PT6g586nwT4dPM/6PtPXYLuw3m3ns4VVXBge2P9BhiqXdgAW6TrXOq3CBGwDnvtyDLMtTG/cFzgIOw6gQAhLjH/ekSY8tlqnK8QcZAoRkmGBv9vgB7ptYEeBKDOQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"blog aws lambda sqs 7\"\n        title=\"blog aws lambda sqs 7\"\n        src=\"/static/7c84dcffcf1c9b4f5456154bbcf2f1ff/01e7c/blog-aws-lambda-sqs-7.png\"\n        srcset=\"/static/7c84dcffcf1c9b4f5456154bbcf2f1ff/01e7c/blog-aws-lambda-sqs-7.png 512w\"\n        sizes=\"(max-width: 512px) 100vw, 512px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n  .dark-default-dark {\n    background-color: #1E1E1E;\n    color: #D4D4D4;\n  }\n  .dark-default-dark .mtk4 { color: #569CD6; }\n  .dark-default-dark .mtk1 { color: #D4D4D4; }\n  .dark-default-dark .mtk12 { color: #9CDCFE; }\n  .dark-default-dark .mtk11 { color: #DCDCAA; }\n  .dark-default-dark .mtk8 { color: #CE9178; }\n  .dark-default-dark .mtk17 { color: #808080; }\n  .dark-default-dark .mtk10 { color: #4EC9B0; }\n</style>","frontmatter":{"date":"February 13, 2020","updated_date":null,"description":null,"title":"Working with AWS Lambda and SQS","tags":["Engineering","General"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":2.127659574468085,"src":"/static/770c89c93d5798dacecb6b81d79b6c00/509ce/blog-aws-lambda.png","srcSet":"/static/770c89c93d5798dacecb6b81d79b6c00/69585/blog-aws-lambda.png 200w,\n/static/770c89c93d5798dacecb6b81d79b6c00/497c6/blog-aws-lambda.png 400w,\n/static/770c89c93d5798dacecb6b81d79b6c00/509ce/blog-aws-lambda.png 448w","sizes":"(max-width: 448px) 100vw, 448px"}}},"author":{"id":"Team LoginRadius","github":"LoginRadius","avatar":null}}}},{"node":{"excerpt":"In this blog, we’ll be implementing  OAuth in node js application via Google. For this, we’ll be using Passport.js, an authentication…","fields":{"slug":"/engineering/google-authentication-with-nodejs-and-passportjs/"},"html":"<p>In this blog, we’ll be implementing  OAuth in node js application via Google. For this, we’ll be using <a href=\"http://www.passportjs.org/\">Passport.js</a>, an authentication package for Node.js. Here’s a quick guide on implementing OAuth 2.0 in node js​. </p>\n<h2 id=\"before-you-get-started\" style=\"position:relative;\"><a href=\"#before-you-get-started\" aria-label=\"before you get started permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Before You Get Started</h2>\n<p>This tutorial assumes you have:</p>\n<ul>\n<li>Basic knowledge of HTML/CSS</li>\n<li>A good understanding of JavaScript and Node.js</li>\n<li>Latest Node.js version installed on your system</li>\n</ul>\n<h3 id=\"step-1-create-a-google-client-id-and-client-secret\" style=\"position:relative;\"><a href=\"#step-1-create-a-google-client-id-and-client-secret\" aria-label=\"step 1 create a google client id and client secret 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>Step 1: Create a Google client ID and client secret</h3>\n<p>We can create a client ID and client secret using its <a href=\"https://console.developers.google.com/\">Google API Console</a>. You need to follow below steps once you open Google Auth API Console </p>\n<ul>\n<li>From the project drop-down, select an existing project, or create a new one by selecting Create a new project</li>\n<li>In the sidebar under \"APIs &#x26; Services\", select Credentials</li>\n<li>In the Credentials tab, select the Create credentials drop-down list, and choose OAuth client ID.</li>\n<li>Under Application type, select Web application.</li>\n<li>In Authorized redirect URI use <code>http://localhost:3000/auth/google/callback</code></li>\n<li>Press the Create button and copy the generated client ID and client secret</li>\n</ul>\n<p><strong>Note:</strong> If Google doesn't support <code>http://localhost:3000</code>, then use <code>http://127.0.0.1:3000</code></p>\n<h3 id=\"step-2-initialize-a-nodejs-project-with-all-the-dependencies\" style=\"position:relative;\"><a href=\"#step-2-initialize-a-nodejs-project-with-all-the-dependencies\" aria-label=\"step 2 initialize a nodejs project with all the dependencies 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>Step 2: Initialize a node.js project with all the dependencies</h3>\n<p>To create OAuth nodejs authentication, first in an empty folder run the below command</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"0\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">npm init</span></code></pre>\n<p>It essentially just creates the package.json file with all the basic information you will provide. after that, we will install all the dependencies needed in our project </p>\n<ul>\n<li><strong>express:</strong>  Node.js framework to create a server and accept requests</li>\n<li><strong>ejs:</strong>  To render HTML pages for login and profile</li>\n<li><strong>express-session:</strong>  To save information from google in session and use it on the success page</li>\n<li><strong>passport:</strong> Social Authentication package for Node.js</li>\n<li><strong>passport-google-oauth:</strong>  Google authentication module by Passport.js</li>\n</ul>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"1\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">npm install express ejs express-session passport passport-google-oauth --save</span></code></pre>\n<h3 id=\"step-3-writing-express-server-code-to-accept-web-requests\" style=\"position:relative;\"><a href=\"#step-3-writing-express-server-code-to-accept-web-requests\" aria-label=\"step 3 writing express server code to accept web requests permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Step 3: Writing express server code to accept web requests</h3>\n<p>Create a file <strong>index.js</strong> in the root folder of your app and add the following code: </p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"javascript\" data-index=\"2\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk3\">// index.js</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\">/*  EXPRESS */</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\">express</span><span class=\"mtk1\"> = </span><span class=\"mtk11\">require</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;express&#39;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">app</span><span class=\"mtk1\"> = </span><span class=\"mtk11\">express</span><span class=\"mtk1\">();</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">session</span><span class=\"mtk1\"> = </span><span class=\"mtk11\">require</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;express-session&#39;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">app</span><span class=\"mtk1\">.</span><span class=\"mtk11\">set</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;view engine&#39;</span><span class=\"mtk1\">, </span><span class=\"mtk8\">&#39;ejs&#39;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"></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=\"mtk11\">session</span><span class=\"mtk1\">({</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">resave:</span><span class=\"mtk1\"> </span><span class=\"mtk4\">false</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">saveUninitialized:</span><span class=\"mtk1\"> </span><span class=\"mtk4\">true</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">secret:</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&#39;SECRET&#39;</span><span class=\"mtk1\"> </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">}));</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">app</span><span class=\"mtk1\">.</span><span class=\"mtk11\">get</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;/&#39;</span><span class=\"mtk1\">, </span><span class=\"mtk4\">function</span><span class=\"mtk1\">(</span><span class=\"mtk12\">req</span><span class=\"mtk1\">, </span><span class=\"mtk12\">res</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">res</span><span class=\"mtk1\">.</span><span class=\"mtk11\">render</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;pages/auth&#39;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">});</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">port</span><span class=\"mtk1\"> = </span><span class=\"mtk12\">process</span><span class=\"mtk1\">.</span><span class=\"mtk12\">env</span><span class=\"mtk1\">.</span><span class=\"mtk12\">PORT</span><span class=\"mtk1\"> || </span><span class=\"mtk7\">3000</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">app</span><span class=\"mtk1\">.</span><span class=\"mtk11\">listen</span><span class=\"mtk1\">(</span><span class=\"mtk12\">port</span><span class=\"mtk1\"> , () </span><span class=\"mtk4\">=&gt;</span><span class=\"mtk1\"> </span><span class=\"mtk10\">console</span><span class=\"mtk1\">.</span><span class=\"mtk11\">log</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;App listening on port &#39;</span><span class=\"mtk1\"> + </span><span class=\"mtk12\">port</span><span class=\"mtk1\">));</span></span></code></pre>\n<p>Our web server has been set up, now we will add the code related to the passport at the bottom of the <strong>index.js</strong> file:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"javascript\" data-index=\"3\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk3\">// index.js</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\">/*  PASSPORT SETUP  */</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\">passport</span><span class=\"mtk1\"> = </span><span class=\"mtk11\">require</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;passport&#39;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">var</span><span class=\"mtk1\"> </span><span class=\"mtk12\">userProfile</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"></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\">passport</span><span class=\"mtk1\">.</span><span class=\"mtk11\">initialize</span><span class=\"mtk1\">());</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\">passport</span><span class=\"mtk1\">.</span><span class=\"mtk11\">session</span><span class=\"mtk1\">());</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">app</span><span class=\"mtk1\">.</span><span class=\"mtk11\">set</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;view engine&#39;</span><span class=\"mtk1\">, </span><span class=\"mtk8\">&#39;ejs&#39;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">app</span><span class=\"mtk1\">.</span><span class=\"mtk11\">get</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;/success&#39;</span><span class=\"mtk1\">, (</span><span class=\"mtk12\">req</span><span class=\"mtk1\">, </span><span class=\"mtk12\">res</span><span class=\"mtk1\">) </span><span class=\"mtk4\">=&gt;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">res</span><span class=\"mtk1\">.</span><span class=\"mtk11\">send</span><span class=\"mtk1\">(</span><span class=\"mtk12\">userProfile</span><span class=\"mtk1\">));</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">app</span><span class=\"mtk1\">.</span><span class=\"mtk11\">get</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;/error&#39;</span><span class=\"mtk1\">, (</span><span class=\"mtk12\">req</span><span class=\"mtk1\">, </span><span class=\"mtk12\">res</span><span class=\"mtk1\">) </span><span class=\"mtk4\">=&gt;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">res</span><span class=\"mtk1\">.</span><span class=\"mtk11\">send</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&quot;error logging in&quot;</span><span class=\"mtk1\">));</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">passport</span><span class=\"mtk1\">.</span><span class=\"mtk11\">serializeUser</span><span class=\"mtk1\">(</span><span class=\"mtk4\">function</span><span class=\"mtk1\">(</span><span class=\"mtk12\">user</span><span class=\"mtk1\">, </span><span class=\"mtk12\">cb</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk11\">cb</span><span class=\"mtk1\">(</span><span class=\"mtk4\">null</span><span class=\"mtk1\">, </span><span class=\"mtk12\">user</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">});</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">passport</span><span class=\"mtk1\">.</span><span class=\"mtk11\">deserializeUser</span><span class=\"mtk1\">(</span><span class=\"mtk4\">function</span><span class=\"mtk1\">(</span><span class=\"mtk12\">obj</span><span class=\"mtk1\">, </span><span class=\"mtk12\">cb</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk11\">cb</span><span class=\"mtk1\">(</span><span class=\"mtk4\">null</span><span class=\"mtk1\">, </span><span class=\"mtk12\">obj</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">});</span></span></code></pre>\n<p>Now, at last, we are ready to implement Google Authentication in our app, Add the following code at the bottom of your <strong>index.js</strong> file, use your client Id and Secret instead of placeholders:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"javascript\" data-index=\"4\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk3\">// index.js</span></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"><span class=\"mtk3\">/*  Google AUTH  */</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\"> </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">GoogleStrategy</span><span class=\"mtk1\"> = </span><span class=\"mtk11\">require</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;passport-google-oauth&#39;</span><span class=\"mtk1\">).</span><span class=\"mtk12\">OAuth2Strategy</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">GOOGLE_CLIENT_ID</span><span class=\"mtk1\"> = </span><span class=\"mtk8\">&#39;our-google-client-id&#39;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk4\">const</span><span class=\"mtk1\"> </span><span class=\"mtk12\">GOOGLE_CLIENT_SECRET</span><span class=\"mtk1\"> = </span><span class=\"mtk8\">&#39;our-google-client-secret&#39;</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">passport</span><span class=\"mtk1\">.</span><span class=\"mtk11\">use</span><span class=\"mtk1\">(</span><span class=\"mtk4\">new</span><span class=\"mtk1\"> </span><span class=\"mtk10\">GoogleStrategy</span><span class=\"mtk1\">({</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">clientID:</span><span class=\"mtk1\"> </span><span class=\"mtk12\">GOOGLE_CLIENT_ID</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">clientSecret:</span><span class=\"mtk1\"> </span><span class=\"mtk12\">GOOGLE_CLIENT_SECRET</span><span class=\"mtk1\">,</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">callbackURL:</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&quot;http://localhost:3000/auth/google/callback&quot;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  },</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk4\">function</span><span class=\"mtk1\">(</span><span class=\"mtk12\">accessToken</span><span class=\"mtk1\">, </span><span class=\"mtk12\">refreshToken</span><span class=\"mtk1\">, </span><span class=\"mtk12\">profile</span><span class=\"mtk1\">, </span><span class=\"mtk12\">done</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk12\">userProfile</span><span class=\"mtk1\">=</span><span class=\"mtk12\">profile</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk15\">return</span><span class=\"mtk1\"> </span><span class=\"mtk11\">done</span><span class=\"mtk1\">(</span><span class=\"mtk4\">null</span><span class=\"mtk1\">, </span><span class=\"mtk12\">userProfile</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  }</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">));</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\"> </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">app</span><span class=\"mtk1\">.</span><span class=\"mtk11\">get</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;/auth/google&#39;</span><span class=\"mtk1\">, </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">passport</span><span class=\"mtk1\">.</span><span class=\"mtk11\">authenticate</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;google&#39;</span><span class=\"mtk1\">, { </span><span class=\"mtk12\">scope :</span><span class=\"mtk1\"> [</span><span class=\"mtk8\">&#39;profile&#39;</span><span class=\"mtk1\">, </span><span class=\"mtk8\">&#39;email&#39;</span><span class=\"mtk1\">] }));</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\"> </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk12\">app</span><span class=\"mtk1\">.</span><span class=\"mtk11\">get</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;/auth/google/callback&#39;</span><span class=\"mtk1\">, </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk12\">passport</span><span class=\"mtk1\">.</span><span class=\"mtk11\">authenticate</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;google&#39;</span><span class=\"mtk1\">, { </span><span class=\"mtk12\">failureRedirect:</span><span class=\"mtk1\"> </span><span class=\"mtk8\">&#39;/error&#39;</span><span class=\"mtk1\"> }),</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk4\">function</span><span class=\"mtk1\">(</span><span class=\"mtk12\">req</span><span class=\"mtk1\">, </span><span class=\"mtk12\">res</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk3\">// Successful authentication, redirect success.</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">res</span><span class=\"mtk1\">.</span><span class=\"mtk11\">redirect</span><span class=\"mtk1\">(</span><span class=\"mtk8\">&#39;/success&#39;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  });</span></span></code></pre>\n<p><strong>Note:</strong> The callback URL should be the same as used in the google app configuration.</p>\n<h3 id=\"step-4-creating-a-login-and-profile-page\" style=\"position:relative;\"><a href=\"#step-4-creating-a-login-and-profile-page\" aria-label=\"step 4 creating a login and profile page 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>Step 4: Creating a Login and Profile page</h3>\n<p>Create an ejs file under path <strong>views/pages/auth.js</strong>, it will render into a nice looking social login page:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"html\" data-index=\"5\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">&lt;!-- </span><span class=\"mtk12\">views</span><span class=\"mtk1\">/</span><span class=\"mtk12\">pages</span><span class=\"mtk1\">/</span><span class=\"mtk12\">auth</span><span class=\"mtk1\">.</span><span class=\"mtk12\">ejs</span><span class=\"mtk1\"> --&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">&lt;!</span><span class=\"mtk12\">doctype</span><span class=\"mtk1\"> </span><span class=\"mtk12\">html</span><span class=\"mtk1\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">html</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">head</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">title</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Google SignIn</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">title</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">link</span><span class=\"mtk1\"> </span><span class=\"mtk12\">rel</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;stylesheet&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">href</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">link</span><span class=\"mtk1\"> </span><span class=\"mtk12\">rel</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;stylesheet&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">href</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">style</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        body        </span><span class=\"mtk4\">{</span><span class=\"mtk1\"> </span><span class=\"mtk12\">padding</span><span class=\"mtk1\">-</span><span class=\"mtk12\">top</span><span class=\"mtk1\">:70</span><span class=\"mtk12\">px</span><span class=\"mtk1\">; </span><span class=\"mtk4\">}</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">style</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">head</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">body</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;container&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;jumbotron text-center text-primary&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">h1</span><span class=\"mtk17\">&gt;&lt;</span><span class=\"mtk4\">span</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;fa fa-lock&quot;</span><span class=\"mtk17\">&gt;&lt;/</span><span class=\"mtk4\">span</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> Social Authentication</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">h1</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">p</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Login or Register with:</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">p</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">a</span><span class=\"mtk1\"> </span><span class=\"mtk12\">href</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;/auth/google&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;btn btn-danger&quot;</span><span class=\"mtk17\">&gt;&lt;</span><span class=\"mtk4\">span</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;fa fa-google&quot;</span><span class=\"mtk17\">&gt;&lt;/</span><span class=\"mtk4\">span</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> SignIn with Google</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">a</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">body</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">html</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> </span></span></code></pre>\n<p>After it we wll create an ejs file under path <strong>views/pages/success.js</strong>, it will be used to show the user profile information we will get after authenticated by google</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"html\" data-index=\"6\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">&lt;!-- </span><span class=\"mtk12\">views</span><span class=\"mtk1\">/</span><span class=\"mtk12\">success</span><span class=\"mtk1\">.</span><span class=\"mtk12\">ejs</span><span class=\"mtk1\"> --&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">&lt;!</span><span class=\"mtk12\">doctype</span><span class=\"mtk1\"> </span><span class=\"mtk12\">html</span><span class=\"mtk1\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">html</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">head</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">title</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Google SignIn</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">title</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">link</span><span class=\"mtk1\"> </span><span class=\"mtk12\">rel</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;stylesheet&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">href</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css&quot;</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> &lt;!-- load bootstrap css --&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">link</span><span class=\"mtk1\"> </span><span class=\"mtk12\">rel</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;stylesheet&quot;</span><span class=\"mtk1\"> </span><span class=\"mtk12\">href</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css&quot;</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> &lt;!-- load fontawesome --&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">style</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          body        </span><span class=\"mtk4\">{</span><span class=\"mtk1\"> </span><span class=\"mtk12\">padding</span><span class=\"mtk1\">-</span><span class=\"mtk12\">top</span><span class=\"mtk1\">:70</span><span class=\"mtk12\">px</span><span class=\"mtk1\">; </span><span class=\"mtk4\">}</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">style</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">head</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">body</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;container&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;jumbotron&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">h1</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;text-primary  text-center&quot;</span><span class=\"mtk17\">&gt;&lt;</span><span class=\"mtk4\">span</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;fa fa-user&quot;</span><span class=\"mtk17\">&gt;&lt;/</span><span class=\"mtk4\">span</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> Profile Information</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">h1</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">          </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;row&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;col-sm-6&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">div</span><span class=\"mtk1\"> </span><span class=\"mtk12\">class</span><span class=\"mtk1\">=</span><span class=\"mtk8\">&quot;well&quot;</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                        </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">p</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                            </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">strong</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Id</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">strong</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">: &lt;%= user.id %&gt;</span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">br</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                            </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">strong</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Email</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">strong</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">: &lt;%= user.emails[0].value %&gt;</span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">br</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                            </span><span class=\"mtk17\">&lt;</span><span class=\"mtk4\">strong</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">Name</span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">strong</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\">: &lt;%= user.displayName %&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                        </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">p</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">                </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">            </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">      </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">div</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">  </span><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">body</span><span class=\"mtk17\">&gt;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk17\">&lt;/</span><span class=\"mtk4\">html</span><span class=\"mtk17\">&gt;</span><span class=\"mtk1\"> </span></span></code></pre>\n<p><strong>Note:</strong> Here we are also using bootstrap and font-awesome css to make our web pages look good. </p>\n<p>We have finished building our social login page, let's run the application by below command</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"js\" data-index=\"7\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk12\">node</span><span class=\"mtk1\"> </span><span class=\"mtk12\">index</span><span class=\"mtk1\">.</span><span class=\"mtk12\">js</span></span></code></pre>\n<p>Once our server is running, we can see our social login page on <code>http://localhost:3000/</code></p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 26.923076923076923%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAFABQDASIAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAAAAECBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHcgSwP/8QAFhAAAwAAAAAAAAAAAAAAAAAAABAR/9oACAEBAAEFAiL/xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAWEAADAAAAAAAAAAAAAAAAAAAAEDH/2gAIAQEABj8CKv/EABgQAAMBAQAAAAAAAAAAAAAAAAABETFh/9oACAEBAAE/IZ0TLaEf/9oADAMBAAIAAwAAABAMP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EABkQAAIDAQAAAAAAAAAAAAAAAAERACExgf/aAAgBAQABPxAkXbkLF7ZSUArZ/9k='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Social Authentication Page\"\n        title=\"Social Authentication Page\"\n        src=\"/static/20ffc646928dfe0aed48148ed5321f19/212bf/social_login.jpg\"\n        srcset=\"/static/20ffc646928dfe0aed48148ed5321f19/6aca1/social_login.jpg 650w,\n/static/20ffc646928dfe0aed48148ed5321f19/212bf/social_login.jpg 768w,\n/static/20ffc646928dfe0aed48148ed5321f19/fcb1e/social_login.jpg 1452w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>We need to click on <strong>SignIn with Google button</strong>, which will redirect us to the google login page.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 48.61538461538462%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAKABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAd8mlQv/xAAWEAADAAAAAAAAAAAAAAAAAAAAIEP/2gAIAQEAAQUCSh//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAWEAADAAAAAAAAAAAAAAAAAAAQIIH/2gAIAQEABj8CSD//xAAXEAADAQAAAAAAAAAAAAAAAAAAARAx/9oACAEBAAE/IWKrcf/aAAwDAQACAAMAAAAQLA//xAAVEQEBAAAAAAAAAAAAAAAAAAABEP/aAAgBAwEBPxBZ/8QAFhEBAQEAAAAAAAAAAAAAAAAAARAR/9oACAECAQE/EA2f/8QAHBABAAEEAwAAAAAAAAAAAAAAAREAECExQWGB/9oACAEBAAE/EEBmlJue7PFJhliOPbf/2Q=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Google Login\"\n        title=\"Google Login\"\n        src=\"/static/50f7a7ff4ae46578ee72084f50d31297/212bf/google_login.jpg\"\n        srcset=\"/static/50f7a7ff4ae46578ee72084f50d31297/6aca1/google_login.jpg 650w,\n/static/50f7a7ff4ae46578ee72084f50d31297/212bf/google_login.jpg 768w,\n/static/50f7a7ff4ae46578ee72084f50d31297/68a11/google_login.jpg 1246w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>After login with our google credentials, it will redirect back to our application and on the success page, we can see the details of the logged-in user and can save this detail in a database for future use also.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 27.53846153846154%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAGABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAEF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAdqiUH//xAAXEAADAQAAAAAAAAAAAAAAAAAAAREQ/9oACAEBAAEFAoyZ/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAFRABAQAAAAAAAAAAAAAAAAAAEDH/2gAIAQEABj8Cr//EABgQAAMBAQAAAAAAAAAAAAAAAAABEUFR/9oACAEBAAE/IVpRXSM//9oADAMBAAIAAwAAABD8P//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQMBAT8QP//EABURAQEAAAAAAAAAAAAAAAAAABAR/9oACAECAQE/EKf/xAAZEAADAQEBAAAAAAAAAAAAAAAAARFhQXH/2gAIAQEAAT8QStayQSOn6zY//9k='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Social Profile Info\"\n        title=\"Social Profile Info\"\n        src=\"/static/d3202ef49beb0a7733031e404e092a91/212bf/profileinfo_google.jpg\"\n        srcset=\"/static/d3202ef49beb0a7733031e404e092a91/6aca1/profileinfo_google.jpg 650w,\n/static/d3202ef49beb0a7733031e404e092a91/212bf/profileinfo_google.jpg 768w,\n/static/d3202ef49beb0a7733031e404e092a91/c546a/profileinfo_google.jpg 1453w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>As we have seen it is fairly easy to build a google social authentication system with Node.js and Passport.js, You can found the complete code used in this tutorial on our <a href=\"https://github.com/LoginRadius/engineering-blog-samples/tree/master/NodeJs/GoogleAuthenticationPassport\">Github Repo</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 .mtk3 { color: #6A9955; }\n  .dark-default-dark .mtk4 { color: #569CD6; }\n  .dark-default-dark .mtk1 { color: #D4D4D4; }\n  .dark-default-dark .mtk12 { color: #9CDCFE; }\n  .dark-default-dark .mtk11 { color: #DCDCAA; }\n  .dark-default-dark .mtk8 { color: #CE9178; }\n  .dark-default-dark .mtk7 { color: #B5CEA8; }\n  .dark-default-dark .mtk10 { color: #4EC9B0; }\n  .dark-default-dark .mtk15 { color: #C586C0; }\n  .dark-default-dark .mtk17 { color: #808080; }\n</style>","frontmatter":{"date":"February 12, 2020","updated_date":null,"description":"Learn how to implement Google OAuth2 Authentication in NodeJS using Passport","title":"Google OAuth2 Authentication in NodeJS - A Guide to Implementing OAuth in Node.js","tags":["NodeJs","SocialLogin","Oauth"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.3071895424836601,"src":"/static/a9dad0fc4bf1af95243aa5e2d017bc22/0f3a1/google_cover.jpg","srcSet":"/static/a9dad0fc4bf1af95243aa5e2d017bc22/f836f/google_cover.jpg 200w,\n/static/a9dad0fc4bf1af95243aa5e2d017bc22/2244e/google_cover.jpg 400w,\n/static/a9dad0fc4bf1af95243aa5e2d017bc22/0f3a1/google_cover.jpg 500w","sizes":"(max-width: 500px) 100vw, 500px"}}},"author":{"id":"Puneet Singh","github":"puneetsingh24","avatar":null}}}},{"node":{"excerpt":"The gaming industry has been leveling up since it entered the mainstream in the 1980s. Exciting advancements in online streaming and Virtual…","fields":{"slug":"/growth/improving-customer-experience-in-the-gaming-industry/"},"html":"<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 60.61538461538461%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAMABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAECBf/EABYBAQEBAAAAAAAAAAAAAAAAAAMAAf/aAAwDAQACEAMQAAAB45UOsrP/xAAWEAADAAAAAAAAAAAAAAAAAAAAIEH/2gAIAQEAAQUCSH//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAY/Al//xAAXEAADAQAAAAAAAAAAAAAAAAABEBEg/9oACAEBAAE/IVBh/9oADAMBAAIAAwAAABDTP//EABcRAQADAAAAAAAAAAAAAAAAAAABEVH/2gAIAQMBAT8QVOv/xAAWEQEBAQAAAAAAAAAAAAAAAAAAARH/2gAIAQIBAT8QbH//xAAZEAEAAwEBAAAAAAAAAAAAAAABABARMSH/2gAIAQEAAT8QQh2LO8pDLnu1/9k='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"image1\"\n        title=\"image1\"\n        src=\"/static/03aae02dd01aae7c180e7fdcf91306ea/212bf/image1.jpg\"\n        srcset=\"/static/03aae02dd01aae7c180e7fdcf91306ea/6aca1/image1.jpg 650w,\n/static/03aae02dd01aae7c180e7fdcf91306ea/212bf/image1.jpg 768w,\n/static/03aae02dd01aae7c180e7fdcf91306ea/64175/image1.jpg 1025w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>The gaming industry has been leveling up since it entered the mainstream in the 1980s. Exciting advancements in online streaming and Virtual Reality (VR) appear to lead the way. Yet, without a seamless user experience, game popularity can suffer. Here are some trends in improving customer experience that can help your gaming or streaming business win and retain more customers.</p>\n<h2 id=\"online-gaming-industry-growth\" style=\"position:relative;\"><a href=\"#online-gaming-industry-growth\" aria-label=\"online gaming industry growth 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>Online Gaming Industry Growth</h2>\n<p>In 2019, <a href=\"https://venturebeat.com/2020/01/02/superdata-games-hit-120-1-billion-in-2019-with-fortnite-topping-1-8-billion/\">a report by SuperData</a>, found that the gaming industry made over $120 billion dollars. And experts at <a href=\"https://newzoo.com/insights/articles/newzoo-adjusts-global-games-forecast-to-148-8-billion-slower-growth-in-console-spending-starts-sooner-than-expected/\">Newzoo</a> say the gaming market will grow to $189.6 billion by 2022. Newzoo’s report also stated that collectively, mobile and console games contribute around 80% of this revenue. In response to this demand, <a href=\"https://www.theverge.com/2019/6/19/18683382/what-is-cloud-gaming-google-stadia-microsoft-xcloud-faq-explainer\">Google and Microsoft</a> announced their own cloud gaming services. This means that <a href=\"https://www.theverge.com/2019/6/19/18683382/what-is-cloud-gaming-google-stadia-microsoft-xcloud-faq-explainer\">players can stream games</a> as easily as streaming a movie.</p>\n<h2 id=\"the-top-5-gaming-industries\" style=\"position:relative;\"><a href=\"#the-top-5-gaming-industries\" aria-label=\"the top 5 gaming industries 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 Top 5 Gaming Industries</h2>\n<p>Since people of all ages and demographics play digital games, the global community is massive. <a href=\"https://www.businessinsider.com/video-game-industry-120-billion-future-innovation-2019-9\">Microsoft estimates over two billion active gamers</a> play everything from free mobile games to high-tech computer games. As new platforms, technology, and genres emerge, that figure is likely to grow. </p>\n<p><em>For now, here are some fun facts about the most popular gaming genres.</em></p>\n<p><strong>1. Gambling</strong></p>\n<p>Gambling has been a popular recreation for generations, so there’s no wonder that <a href=\"https://www.loginradius.com/blog/2020/06/online-casino-and-gambling-cyber-threat/\">online gambling is so lucrative</a>. Here are some interesting facts about the online gambling market.</p>\n<p><a href=\"https://www.prnewswire.com/news-releases/online-gambling-market-worth-102-97-billion-by-2025--cagr-11-5-grand-view-research-inc-300907362.html\">Grand View Research</a> predicts that this niche may be worth $102.97 billion by 2025.</p>\n<p>Currently, the <a href=\"https://www.egba.eu/eu-market/\">EU leads online gambling</a> and will likely continue this well into 2020. </p>\n<p>The Asia Pacific Digital Gaming market is expected to <a href=\"https://newzoo.com/insights/articles/newzoo-games-market-numbers-revenues-and-audience-2020-2023/\">reach +$241 billion</a> (due to a rise in disposable income) by 2023. </p>\n<p><strong>2. Shooter or survivor games</strong></p>\n<p>Shooter and survivor games give players a first-person point-of-view of a solider or apocalyptic survivor. Popular shooter games include Counter-Strike, Quake 4, Halo 2, and Battlefield 2. As a “build and survive” game, <a href=\"https://www.theverge.com/2019/12/5/20996849/minecraft-youtube-rewind-fortnite-grand-theft-auto-roblox-biggest-games-views\">Minecraft led video-game popularity</a> on Youtube in 2019.</p>\n<p>Gaming trivia: In 2018, <a href=\"https://www.usatoday.com/story/tech/2018/08/01/fortnite-tutors-thing-and-yes-parents-paying-them/882305002/\">some parents hired “Fortnite tutors”</a> to teach their kids to play better. Talk about helicopter parenting! </p>\n<p><strong>3. Educational games</strong></p>\n<p>Schools, universities, government agencies, and businesses support the educational gaming industry. The <a href=\"https://www.gamesindustry.biz/articles/2018-08-08-metaari-game-based-learning-market-will-reach-usd17-billion-by-2023\">Global Game-Based Learning Market report by Metaari</a> predicts that this gaming genre will hit $17 billion by 2023. </p>\n<p><strong>4. Cross-platform online games</strong> </p>\n<p>In cross-platform gaming, AKA cross-play games, players on multiple platforms and devices can get together and play at the same time. </p>\n<p>The popularity of cross-play is huge. That’s why vendors in the <a href=\"https://www.digitaltrends.com/gaming/what-is-cloud-gaming-explained/\">cloud-based gaming marketplace</a> are making games compatible on all platforms, including smartphones, PCs, laptops, and tablets. Some popular cross-play games include Call of Duty: Modern Warfare (Xbox One, PS4, PC), Minecraft (Xbox One, Switch, PC, mobile), and Fortnite (Xbox One, PS4, Switch, PC, mobile).</p>\n<p><strong>5. Virtual reality games</strong> </p>\n<p><a href=\"https://www.forbes.com/sites/bernardmarr/2019/07/19/the-important-difference-between-virtual-reality-augmented-reality-and-mixed-reality/#15d83bad35d3\">Virtual Reality (VR), Augmented Reality (AR), and Mixed Reality (MR)</a> are making exciting strides in gaming technology. In fact, <a href=\"https://www.polarismarketresearch.com/industry-analysis/virtual-reality-vr-in-gaming-market\">Polaris Market Research</a> predicts that VR in the gaming industry will become a $48.2 billion-dollar market by 2026. </p>\n<h2 id=\"improving-customer-experience-in-the-gaming-industry\" style=\"position:relative;\"><a href=\"#improving-customer-experience-in-the-gaming-industry\" aria-label=\"improving customer experience in the gaming industry 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>Improving Customer Experience in the Gaming Industry  </h2>\n<p>There’s no denying that gamers expect frictionless gameplay. That’s why in 2020, digital customer experience is vital to a game's popularity. </p>\n<p><em>Here are the top things to consider when improving a gamer's user experience:</em></p>\n<p><strong>Gamers expect 100% uptime.</strong> </p>\n<p>When a game crashes, it ruins the overall momentum of the game. Players know they can switch to a competitor anytime they want—and <em>they will</em>. Don’t assume they’ll return to your games once they find a better experience elsewhere.</p>\n<p>Here’s how to prevent that from happening. Look for cloud-based CIAM solutions like LoginRadius that offer <a href=\"https://www.loginradius.com/engineering/failover-systems-and-loginradius-99-99-uptime/\">automated failover systems</a> and a scalable infrastructure that handles surges. This will ensure that your game is available even during peak loads. </p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 54.61538461538461%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAEF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAP/2gAMAwEAAhADEAAAAciFJgf/xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAEFAl//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAY/Al//xAAXEAADAQAAAAAAAAAAAAAAAAABEBEh/9oACAEBAAE/IbkYf//aAAwDAQACAAMAAAAQ4w//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/ED//xAAaEAACAwEBAAAAAAAAAAAAAAAAAREhMRBR/9oACAEBAAE/EL1T4yBpSaHvP//Z'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"image2\"\n        title=\"image2\"\n        src=\"/static/6833e31e4e6aa66359701caa59e19667/212bf/image2.jpg\"\n        srcset=\"/static/6833e31e4e6aa66359701caa59e19667/6aca1/image2.jpg 650w,\n/static/6833e31e4e6aa66359701caa59e19667/212bf/image2.jpg 768w,\n/static/6833e31e4e6aa66359701caa59e19667/64175/image2.jpg 1025w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p><strong>Gamers exchange opinions on gaming forums.</strong> </p>\n<p>As the gaming industry continues <a href=\"https://www.forbes.com/sites/ilkerkoksal/2019/11/08/video-gaming-industry--its-revenue-shift/\">to grow</a>, it’s important to engage with your customers. A good way to increase engagement is to be present in various forums so that you can solve their technical queries.</p>\n<p>In case you can’t be there to solve them, reward forum members who provide answers to other gamers for you. </p>\n<p><strong>Gaming is an emotional experience.</strong></p>\n<p>Due to the emotional aspects of gaming, players see gaming as not just a product, but an experience. They forge friendships around gaming and often enjoy connecting to players around the world. In fact, a gaming trend called \"<a href=\"https://www.researchgate.net/publication/228294342_PC_bang_Inc_The_Culture_and_Business_of_PC_bangs_in_Korea\">PC Bangs</a>\" (translation: PC Rooms) gives gamers a dedicated gaming room. Many other countries are also jumping on the “gaming bar” trend, which also includes eSports cafes. </p>\n<p>Whether you own one of these gaming bars, or the games the guests are playing, you’ll want to keep players happy with great customer support. </p>\n<p><strong>Gamers are willing to pay more for a great experience.</strong></p>\n<p>In short, the more invested the player is in the experience, the more upset they’ll be if the experience is subpar. That’s why most gamers are willing to pay more for a great user experience, better support, and top-notch security. </p>\n<h2 id=\"making-data-security-a-priority-in-the-gaming-industry\" style=\"position:relative;\"><a href=\"#making-data-security-a-priority-in-the-gaming-industry\" aria-label=\"making data security a priority in the gaming industry 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>Making Data Security a Priority in the Gaming Industry</h2>\n<p>Compared to TV, music, and film, the gaming industry is becoming one of the biggest industries in digital entertainment. In order to play their favorite games, players trust gaming companies with their personal information. </p>\n<p>That’s why <a href=\"https://www.cpomagazine.com/tech/data-security-in-the-online-gaming-industry/\">data security</a> should be taken seriously. Here are the most common gaming security issues and how to remedy them.</p>\n<ul>\n<li><strong>Weak authentication:</strong> An average gamer needs to manage multiple accounts for multiple games. This means that players must remember multiple passwords for all of these games. As a result, they end up with weaker passwords or reusing the same password for multiple accounts. This, of course, makes hacking a gamer’s account “child’s play.”</li>\n</ul>\n<p>To protect gamer accounts cybersecurity measures like <a href=\"https://www.loginradius.com/blog/identity/what-is-multi-factor-authentication/\">multi-factor authentication</a> (MFA), password management, and firewalls should be applied. </p>\n<ul>\n<li><strong>Phishing</strong>: Phishing campaigns have been used to hack gamers. Hackers will set up a fake login page and send malicious links. Falling prey will result in a takeover of the player’s account or stealing possessions of a character. </li>\n</ul>\n<p>To protect players, educate them about phishing. Prevent account takeovers by using Risk-based Authentication (RBA). This detects unusual IPs or behavioral anomalies so you can block fake users from accessing accounts.</p>\n<ul>\n<li><strong>Child identity theft</strong>: Kids tend to be more <a href=\"https://www.lifelock.com/learn-identity-theft-resources-teens-risk-identity-theft.html\">vulnerable to identity theft</a> for numerous reasons. This makes the gaming industry a hunting ground for security abuse. Gaming companies can <a href=\"https://www.loginradius.com/role-management/\">leverage role management</a> to manage access, giving guardians the right to limit a child’s access.</li>\n</ul>\n<p>Customer Identity and Access Management (CIAM) platform LoginRadius offers <a href=\"https://www.loginradius.com/integrations/age-verification/\">out-of-the-box compliance</a> for COPPA, CCPA, and GDPR. This prevents any user under the age of 13, as indicated by the date of birth, from completing registration. </p>\n<h3 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 </h3>\n<p>No matter what platform or game, players demand a seamless experience with no downtime. With a CIAM solution from LoginRadius, you don’t have to compromise security to provide it. </p>\n<p><a href=\"https://www.loginradius.com/book-a-demo/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsTAAALEwEAmpwYAAABYElEQVQY0z2RO08CURCFN0hcWRZQHhYUKBHFBR+sUQQWefoAE4HCArXSWGhiZUGhsTHGEBsLf4AxdkQriZWWNtrY+HuOMwNaTO69k3PPfOdeZWS2BO9cGS4jD//8Ktyxgpx575kpQp20oE/nMGquQ4+uwBkvw5uswUcajfYOowBtKgsH1RBplQAJ+SI3fH2TwYkMeJBu5OCJF6XHYtvYEtRYCcF8E9HCNgbMGmxGGfbxJNSIJR4Kk+lU7niPjI3EjKiYkofYwykEEmtINQ5gVvewUN1FokJrhdaNHSzX9xG26gSShsKT1UhGCISQjJmKDbk33Kd3Ulwm5UThbAOh9JZUMLkpfQaTyCKmy0yl8Rv1yTiuFs1KnwcpoUWcXNzg8/sHj8+veHjq4r7zgvePL3S6b6Ljp1KYwE9x2Jjfgen+4rti+f8P4jjF5hFa13c4Pm/36qyN08tbHLau5DM56S/3nMSX+4NvoQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"BD-Plexicon1-1024x310-1\"\n        title=\"BD-Plexicon1-1024x310-1\"\n        src=\"/static/c4fac6b24f15c7b7ba84deec1d1107ac/e5715/BD-Plexicon1-1024x310-1.png\"\n        srcset=\"/static/c4fac6b24f15c7b7ba84deec1d1107ac/a6d36/BD-Plexicon1-1024x310-1.png 650w,\n/static/c4fac6b24f15c7b7ba84deec1d1107ac/e5715/BD-Plexicon1-1024x310-1.png 768w,\n/static/c4fac6b24f15c7b7ba84deec1d1107ac/2bef9/BD-Plexicon1-1024x310-1.png 1024w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"January 27, 2020","updated_date":null,"description":"In order to prosper in the gaming industry, you need to offer a smooth user interface. Learn how it is possible to use emerging technologies to draw and retain more clients.","title":"Improving Customer Experience in the Gaming Industry","tags":["data security","mfa","cx","ciam solution"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/4393627e38897a7fbf153b0ec3bd8a34/33aa5/gaming-industry.jpg","srcSet":"/static/4393627e38897a7fbf153b0ec3bd8a34/f836f/gaming-industry.jpg 200w,\n/static/4393627e38897a7fbf153b0ec3bd8a34/2244e/gaming-industry.jpg 400w,\n/static/4393627e38897a7fbf153b0ec3bd8a34/33aa5/gaming-industry.jpg 768w","sizes":"(max-width: 768px) 100vw, 768px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.jpg"}}}},{"node":{"excerpt":"Identity as a Service (IDaaS) can be a game-changer for your business—but only if you know how to play it right.  Speaking of which, the…","fields":{"slug":"/identity/identity-as-a-service-for-business/"},"html":"<p>Identity as a Service (IDaaS) can be a game-changer for your business—but only if you know how to play it right. </p>\n<p>Speaking of which, the term identity refers to characteristics that make an entity recognizable. Likewise, <a href=\"https://www.loginradius.com/blog/2019/10/digital-identity-management/\">digital identity refers</a> to attributes that identify people, organizations, or other entities online.</p>\n<p>With more and more businesses migrating to the cloud, the demand for <a href=\"https://www.loginradius.com/authentication/\">seamless authentication of digital identities</a> has reached a critical point.</p>\n<p>Experts predict a massive change in the way enterprises handle <a href=\"https://www.loginradius.com/blog/2019/06/customer-identity-and-access-management/\">customer identity and access management</a> (CIAM) within the next decade. </p>\n<p>By 2022, Identity as a Service (IDaaS) solutions is expected to grow the identity and access management space to a <a href=\"https://www.gartner.com/account/signin?method=initialize&#x26;TARGET=http%253A%252F%252Fwww.gartner.com%252Fdocument%252Fcode%252F369430\">$13.42 billion property</a>. Hence, <em>now</em> is the best time to invest in a secure, highly accessible, simplified, low-risk solution like IDaaS.</p>\n<h2 id=\"what-is-identity-as-a-service-idaas\" style=\"position:relative;\"><a href=\"#what-is-identity-as-a-service-idaas\" aria-label=\"what is identity as a service idaas permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is Identity as a Service (IDAAS)? </h2>\n<p>Identity as a service (IDaaS) refers to identity and access management services that are offered through the cloud or via SaaS (software-as-a-service) systems. It offers cloud-based authentication delivered and operated by third-party providers on a subscription basis.</p>\n<p>In short, IDaaS helps manage digital identities so that the right users can access the resources that are meant for them.</p>\n<p>IDaaS is a win-win for both businesses and their customers. With modern IDaaS access features, there’s no need for end-users to remember multiple account credentials. Likewise, system administrators can reduce the number of user accounts they have to manage. </p>\n<h2 id=\"3-benefits-of-identity-as-a-service-idaas-for-developers\" style=\"position:relative;\"><a href=\"#3-benefits-of-identity-as-a-service-idaas-for-developers\" aria-label=\"3 benefits of identity as a service idaas for developers permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3 Benefits of Identity as a Service (IDAAS) for Developers</h2>\n<p>As an application developer, you must see features like registration, authentication, and account recovery as opportunities to <a href=\"https://www.loginradius.com/customer-experience-solutions/\">better customer experiences</a>. But, that’s not it. The following are three important benefits of IDaaS for developers.</p>\n<h3 id=\"decentralization-of-identity\" style=\"position:relative;\"><a href=\"#decentralization-of-identity\" aria-label=\"decentralization of identity permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Decentralization of identity</h3>\n<p>IDaaS allows application developers to decentralize the user identity from the application. This leads to the following advantages for developers.</p>\n<ul>\n<li>If there is no need for the user identity information any longer, there's no point in storing it in their databases.</li>\n<li>The identity of a user does not resonate with the application, and all developers should care about is a unique identifier.</li>\n<li>The <a href=\"https://www.loginradius.com/blog/2019/06/perfect-ciam-platform/\">CIAM platform</a> will also manage the non-feature work like user CRUD, password CRUD, etc. That's another burden of the load.</li>\n</ul>\n<p>By letting an external service handle identity and authentication, developers can focus on bringing more value to the business. </p>\n<h3 id=\"idaas-is-api-based\" style=\"position:relative;\"><a href=\"#idaas-is-api-based\" aria-label=\"idaas is api based 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>IDaaS is API-based </h3>\n<p>One of the core competencies of IDaaS is that they are API-first. Interestingly, most of these third parties provide on-demand expertise that would otherwise become more time-consuming and resource-heavy, if developed in-house.</p>\n<p>By leveraging APIs, developers can add them to their existing technology and save a significant amount of time.</p>\n<h3 id=\"bridge-the-gap-between-developer-and-security-teams\" style=\"position:relative;\"><a href=\"#bridge-the-gap-between-developer-and-security-teams\" aria-label=\"bridge the gap between developer and security teams permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Bridge the gap between developer and security teams</h3>\n<p>With developers constantly bugged to build revenue-generating apps in shorter deadlines, IDaaS allows them to get the job done quickly, and simultaneously create high quality and secure output. </p>\n<p>Furthermore, IDaaS has the potential to deliver a secure, streamlined on-demand identity expertise. Such strategies can also do a great deal to reduce internal tension and eventually bridge the gap between developers and the security workforce.</p>\n<p><a href=\"https://www.loginradius.com/resource/guide-to-modern-customer-identity/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsTAAALEwEAmpwYAAABeUlEQVQY0z2RvU/CUBTFSUz4KApUMQJqEfkqRaJASykfRcEiBDTqYBicjAsuJg6YqIOJJuJgHPwH3ByYTHRwMG4OxsHFv+f43oM6nLzc3JvzO/c+iyNWAhUXL8Mp6hgnoi+tHbEizD6VPVIAl6yBVzYxmarCIRGJFTiiwzk7eS2mmTepg49pmAjn4Aqr8C3XEMjU4ZIqbJDO2cIauJQBYX0fydoebMoOrEsGA9lHUIvpHNVa0Bod5JsdRHMb4IIZTMY1uBI6bKTPxUsIKE0I+TZm5QZ82QaEHKnVFubUNgGvDhOa9KBcR0rfQrq6i0WFJAvJ8ERUuCWdDA7pVpKET9XgGxn6CcC7YvxvwBLSgt7MEyvAKaThXMhiSiyCF0twh7JwJ8rsJJZ5GceXd/j6+cXT8xseBy9MH5/fGLy+M5A1XBga0o/g4+TgxHBaKsOfNjCzdoDgdo8ZUvJYSEW108XpzQOOLm7RPe+je9bHydU9DnvXbGUb2eAPon/C6UBeBwEAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"Guide-to-Modern-Customer-Identity-ebook\"\n        title=\"Guide-to-Modern-Customer-Identity-ebook\"\n        src=\"/static/e791aaca3b019b248226fc631382c30c/e5715/EB-Guide-to-Modern-Customer-Identity-1024x310.png\"\n        srcset=\"/static/e791aaca3b019b248226fc631382c30c/a6d36/EB-Guide-to-Modern-Customer-Identity-1024x310.png 650w,\n/static/e791aaca3b019b248226fc631382c30c/e5715/EB-Guide-to-Modern-Customer-Identity-1024x310.png 768w,\n/static/e791aaca3b019b248226fc631382c30c/2bef9/EB-Guide-to-Modern-Customer-Identity-1024x310.png 1024w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<h2 id=\"3-benefits-of-identity-as-a-service-idaas-for-businesses\" style=\"position:relative;\"><a href=\"#3-benefits-of-identity-as-a-service-idaas-for-businesses\" aria-label=\"3 benefits of identity as a service idaas 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>3 Benefits of Identity as a Service (IDaaS) for Businesses</h2>\n<p>A comprehensive IDaaS solution brings a plethora of benefits to the entire business environment. There's agility, security, and efficiency, to name a few. Some other advantages include:</p>\n<h3 id=\"freedom-to-choose\" style=\"position:relative;\"><a href=\"#freedom-to-choose\" aria-label=\"freedom to choose 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>Freedom to choose</h3>\n<p>IDaaS allows businesses the freedom to choose the right IT resources that fit them and their customers. When they have the best tool to get their job done, that leads to better agility and increased speed. The outcome? A competitive position in the market.</p>\n<h3 id=\"increase-in-productivity\" style=\"position:relative;\"><a href=\"#increase-in-productivity\" aria-label=\"increase in productivity permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Increase in productivity</h3>\n<p>IDaaS offers the liberty to businesses to manage their IT environment from a single platform. There's less scope for human error too. With a comprehensive identity solution, they can let their customers access multiple web properties with a <a href=\"https://www.loginradius.com/blog/2019/11/benefits-single-sign-on-sso/\">single set of credentials</a>. This leads to increased productivity and better security. </p>\n<h3 id=\"stronger-security\" style=\"position:relative;\"><a href=\"#stronger-security\" aria-label=\"stronger 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>Stronger security</h3>\n<p>A modern IDaaS solution secures identities and protects your IT environment. With features like MFA, SSO, and password complexity, businesses can control access and increase security. Needless-to-say, with identities being the epicenter of every cyberattack, identity security features such as these are instrumental in <a href=\"https://www.loginradius.com/blog/2019/12/digital-privacy-best-practices/\">safeguarding your digital properties</a>. </p>\n<h2 id=\"7-core-components-of-idaas-in-an-enterprise-environment\" style=\"position:relative;\"><a href=\"#7-core-components-of-idaas-in-an-enterprise-environment\" aria-label=\"7 core components of idaas in an enterprise environment permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>7 Core Components of IDaaS in an Enterprise Environment </h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 60.61538461538461%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAMABQDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAIBBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHvTZDB/8QAFBABAAAAAAAAAAAAAAAAAAAAIP/aAAgBAQABBQJf/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAFBABAAAAAAAAAAAAAAAAAAAAIP/aAAgBAQAGPwJf/8QAFxAAAwEAAAAAAAAAAAAAAAAAABEhIP/aAAgBAQABPyGjuf/aAAwDAQACAAMAAAAQ/wA//8QAFREBAQAAAAAAAAAAAAAAAAAAABH/2gAIAQMBAT8Qiv/EABURAQEAAAAAAAAAAAAAAAAAAAAR/9oACAECAQE/EEf/xAAaEAADAAMBAAAAAAAAAAAAAAAAAREhMVFx/9oACAEBAAE/EFk6WpfRO30maNJ7Qls//9k='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"imgae2 1024x621\"\n        title=\"imgae2 1024x621\"\n        src=\"/static/2bb9d05df8d45cd811e7cc61768996b1/212bf/imgae2-1024x621.jpg\"\n        srcset=\"/static/2bb9d05df8d45cd811e7cc61768996b1/6aca1/imgae2-1024x621.jpg 650w,\n/static/2bb9d05df8d45cd811e7cc61768996b1/212bf/imgae2-1024x621.jpg 768w,\n/static/2bb9d05df8d45cd811e7cc61768996b1/72e01/imgae2-1024x621.jpg 1024w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<p>The features and functionalities of an Identity as a Service solution vary across all market segments but generally include digital identity access and management. Here are some of the most common components.</p>\n<h3 id=\"1-cloud-based-and-multi-tenant-architecture\" style=\"position:relative;\"><a href=\"#1-cloud-based-and-multi-tenant-architecture\" aria-label=\"1 cloud based and 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>1. Cloud-based and multi-tenant architecture</h3>\n<p>A typical IDaaS vendor will operate a <a href=\"https://www.loginradius.com/multi-tenant-cloud/\">multi-tenant service</a> delivery model. The vendor will issue updates and performance enhancement requests whenever these become available. </p>\n<h3 id=\"2-password-management-and-authentication\" style=\"position:relative;\"><a href=\"#2-password-management-and-authentication\" aria-label=\"2 password management and authentication permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. Password management and authentication</h3>\n<p>IDaaS service taps all the points of an ideal identity and access management platform. It includes maintaining features like multi-factor authentication and biometric access across all access points. </p>\n<h3 id=\"3-single-sign-on-sso\" style=\"position:relative;\"><a href=\"#3-single-sign-on-sso\" aria-label=\"3 single sign on sso permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. Single Sign-On (SSO)</h3>\n<p>When it comes to customer identity and access management, <a href=\"https://www.loginradius.com/blog/2019/05/what-is-single-sign-on/\">single sign-on</a> is a vital feature. </p>\n<p>SSO is designed to maximize the end-user experience while simultaneously maintaining the security of a network. With SSO, users are encouraged to use strong password combinations to access their everyday IT services. </p>\n<p>In an Identity as a service environment, SSO allows <a href=\"https://www.loginradius.com/single-sign-on/\">enterprises to secure authentication</a> for third-party services without requiring an internal IT department’s involvement.</p>\n<h3 id=\"4-multi-factor-authentication\" style=\"position:relative;\"><a href=\"#4-multi-factor-authentication\" aria-label=\"4 multi factor authentication permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. Multi-factor authentication</h3>\n<p><a href=\"https://www.loginradius.com/blog/2019/06/what-is-multi-factor-authentication/\">Multi-factor authentication (MFA)</a> is associated with Identity as a Service and is occasionally referred to as two-factor authentication. Using multiple factors for authentication helps prevent data breaches, making it one of the best ways to protect digital identities.</p>\n<p>Other examples of how MFA works include Google 2-Step Verification and Microsoft Authenticator. Both work on the TOTP (time-based one-time password) mechanism. </p>\n<p>Biometrics uses the \"inheritance\" as a means of verification—meaning something the user is. </p>\n<p>SMS and voice verifications are also popular multi-factor authentication methods. Iris or retina recognition, fingerprint, hand, thumbprints, full facial recognition, and DNA usage are catching up too. </p>\n<h3 id=\"5-automated-approval-workflows\" style=\"position:relative;\"><a href=\"#5-automated-approval-workflows\" aria-label=\"5 automated approval workflows 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. Automated approval workflows</h3>\n<p>Identity as a Service also utilizes automated approval workflows. These workflows help IT admins to:</p>\n<ul>\n<li>Offer access privileges to multiple apps.</li>\n<li>Enforce GUI-based configuration capabilities. </li>\n<li>Manage user-account provisioning.</li>\n<li>Follow <a href=\"https://www.loginradius.com/data-governance/\">governance frameworks</a> for risk assessment.</li>\n</ul>\n<h3 id=\"6-analytics-and-intelligence\" style=\"position:relative;\"><a href=\"#6-analytics-and-intelligence\" aria-label=\"6 analytics and intelligence 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. Analytics and Intelligence</h3>\n<p>Using analytics and intelligence capabilities in IDaaS lets enterprises report misuse related to access privileges. This makes it easier to detect anomalies in user functions and data usage. </p>\n<h3 id=\"7-governance-and-compliance\" style=\"position:relative;\"><a href=\"#7-governance-and-compliance\" aria-label=\"7 governance and compliance permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>7. Governance and Compliance</h3>\n<p>Enterprises can leverage the intelligence capabilities of an Identity as a Service platform to manage <a href=\"https://www.loginradius.com/blog/2020/07/data-governance-best-practices/\">governance and compliance</a>-related workflows. Real-world authentication processes can be aligned with governance policies to mitigate security risk.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 60.61538461538461%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAAMABQDASIAAhEBAxEB/8QAFwABAAMAAAAAAAAAAAAAAAAAAAECBf/EABUBAQEAAAAAAAAAAAAAAAAAAAAB/9oADAMBAAIQAxAAAAHcsJIX/8QAFxAAAwEAAAAAAAAAAAAAAAAAAAEQQf/aAAgBAQABBQJmDv8A/8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAwEBPwE//8QAFBEBAAAAAAAAAAAAAAAAAAAAEP/aAAgBAgEBPwE//8QAFBABAAAAAAAAAAAAAAAAAAAAIP/aAAgBAQAGPwJf/8QAGRAAAwADAAAAAAAAAAAAAAAAAAERECEx/9oACAEBAAE/IWdLQuCVE1j/2gAMAwEAAgADAAAAEBjP/8QAFREBAQAAAAAAAAAAAAAAAAAAEEH/2gAIAQMBAT8Qp//EABQRAQAAAAAAAAAAAAAAAAAAABD/2gAIAQIBAT8QP//EABgQAAMBAQAAAAAAAAAAAAAAAAABIRFR/9oACAEBAAE/EFJcEzLj6JiXRVDGII//2Q=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"image 3 1 1024x621\"\n        title=\"image 3 1 1024x621\"\n        src=\"/static/897b6b8863ef02441d99b8a379bf2003/212bf/image-3-1-1024x621.jpg\"\n        srcset=\"/static/897b6b8863ef02441d99b8a379bf2003/6aca1/image-3-1-1024x621.jpg 650w,\n/static/897b6b8863ef02441d99b8a379bf2003/212bf/image-3-1-1024x621.jpg 768w,\n/static/897b6b8863ef02441d99b8a379bf2003/72e01/image-3-1-1024x621.jpg 1024w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<h2 id=\"some-new-regulations-that-are-protecting-identities-include\" style=\"position:relative;\"><a href=\"#some-new-regulations-that-are-protecting-identities-include\" aria-label=\"some new regulations that are protecting identities include 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>Some new regulations that are protecting identities include:</h2>\n<p><strong>1. General Data Protection Regulation (GDPR)</strong></p>\n<p>GDPR is the core of Europe's digital privacy legislation. It requires businesses to safeguard the personally identifiable information (PII) of the European Union citizens for transactions that occur within the member states. Failure to comply may cost dearly. Individual rights include: </p>\n<ul>\n<li>Right to be informed.</li>\n<li>Right of access.</li>\n<li>Right to rectification.</li>\n<li>Right to erasure.</li>\n<li>Right to restrict processing.</li>\n<li>Right to data portability.</li>\n<li>Right to object.</li>\n</ul>\n<p><strong>2. California Consumer Privacy Act (CCPA)</strong></p>\n<p>The CCPA is a state-level law that <a href=\"https://www.loginradius.com/blog/2020/03/how-loginradius-helps-enterprises-stay-ccpa-compliant-in-2020/\">mandates that businesses</a> inform customers of their plan to monetize their data, and provide them with a clear means of opting out, whenever required. Any violation can lead to hefty fines. A few other requirements include:</p>\n<ul>\n<li>Businesses must disclose what information they collect.</li>\n<li>Businesses must delete customer data upon request. </li>\n<li>Customers can opt-out of their data being sold.</li>\n</ul>\n<h2 id=\"5-reasons-why-loginradius-idaas-is-the-right-fit-for-your-enterprise\" style=\"position:relative;\"><a href=\"#5-reasons-why-loginradius-idaas-is-the-right-fit-for-your-enterprise\" aria-label=\"5 reasons why loginradius idaas is the right fit for your enterprise 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 Reasons Why LoginRadius IDaaS Is the Right Fit for Your Enterprise</h2>\n<p>In a world that’s swiftly migrating to the cloud, the LoginRadius IDaaS provider is positioned to <a href=\"https://www.loginradius.com/security/\">combine both security</a> and ease-of-use in solving emerging business needs for enterprise-level organizations. </p>\n<p>Here’s what LoginRadius IDaaS can do for your digital enterprise. </p>\n<h3 id=\"1-faster-implementation\" style=\"position:relative;\"><a href=\"#1-faster-implementation\" aria-label=\"1 faster 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>1. Faster implementation</h3>\n<p>LoginRadius IDaaS implementation in the cloud is fast and straightforward. Since servers are already <a href=\"https://www.loginradius.com/identity-api/\">installed in the cloud</a>, you only need to configure your chosen platform according to your IT protocols to get it up and running.</p>\n<h3 id=\"2-easy-third-party-integrations\" style=\"position:relative;\"><a href=\"#2-easy-third-party-integrations\" aria-label=\"2 easy third party integrations 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. Easy third-party integrations</h3>\n<p>A cloud-based Identity as a Service platform like LoginRadius easily integrates with <a href=\"https://www.loginradius.com/cloud-integrations/\">3rd-party apps</a>. You can also add or remove any feature from your existing CIAM environment at any time, such as MFA, SSO, or <a href=\"https://www.loginradius.com/blog/2019/02/presenting-progressive-profiling-loginradius/\">Progressive Profiling</a>.</p>\n<h3 id=\"3-seamless-data-migration\" style=\"position:relative;\"><a href=\"#3-seamless-data-migration\" aria-label=\"3 seamless data migration 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. Seamless data migration </h3>\n<p>Transferring identity data to a new environment in the cloud may seem daunting to the uninitiated. LoginRadius provides customers with <a href=\"https://www.loginradius.com/blog/2020/07/loginradius-identity-import-manager-data-migration/\">data migration software</a>, and sets up and executes the migration for a seamless, hassle-free transfer.</p>\n<h3 id=\"4-passwordless-authentication\" style=\"position:relative;\"><a href=\"#4-passwordless-authentication\" aria-label=\"4 passwordless authentication permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. Passwordless Authentication </h3>\n<p><a href=\"https://www.loginradius.com/blog/identity/passwordless-authentication-the-future-of-identity-and-security/\">Passwordless Authentication</a> deters cybercriminals by reducing the risk of password sprawl. With the LoginRadius IDaaS platform, you can set up secure, passwordless authentication and secure password resets.</p>\n<h3 id=\"5-no-need-for-ciam-experts\" style=\"position:relative;\"><a href=\"#5-no-need-for-ciam-experts\" aria-label=\"5 no need for ciam experts 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. No need for CIAM experts</h3>\n<p>CIAM experts are an asset to any company when it comes to implementing IDaaS and securing customer identities. Luckily, onboarding a CIAM expert isn’t necessary when using Identity as a Service. With LoginRadius CIAM, we are with you every step of the way in your digital transformation.</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>There is a lot of anticipation about Identity as a Service in solving real-world business problems. It is important, and no, you cannot mess it up. Because then, you will be out of business. No wonder, IDaaS has already entered the mainstream and will continue growing from here.</p>\n<p><a href=\"https://www.loginradius.com/book-a-demo/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsTAAALEwEAmpwYAAABbElEQVQY0zVQO0/CUBQmaihthUbRhPhCAlhKEXlE3s+CCEaBwQF10riQODkwaFyMMcTFwR9gjBvRSeKko4NxcfD/fJ57C8PJbc53+r0soj8Lm5qHbS0HW6AIwZ+DXSvAESxBpJ3MMLph3+xWDlUwm2jCGa5A0isQtRIkhrH/CbdwwkDBHAJlGodexsy6wUkduknMBCfdmxCCBhZKHailfUxGm5jQKphaTUDwmaIWdigyF1oZsm7AFavBRspKuMpdTJMQO5yLbCHVPkG0cYRY4xAR9tbp3T5AsnUMT7YFqzdtOuQOSFmiyMupXUihKuzk0hWvc0xgUYlYod18tAZPrg13eg8rNIuJHSihMtVUHEUe51cLPJ5zo8oJJRJQRnHlQB6WpTjOru7w/fuH59d3PL0M8Th4w+fXDwbDD16R1ZsxCcelsyUbidQEEuC9ECap1J8nCaPTRe/2Ad3LvjkXfZxf3+O0d8P7FnwZ/AMzEsMp2f6LdQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"book-a-free-demo-loginradius\"\n        title=\"book-a-free-demo-loginradius\"\n        src=\"/static/779ad148d33fb1ecfd80cc41f1a94ef3/e5715/Book-a-free-demo-request-1024x310.png\"\n        srcset=\"/static/779ad148d33fb1ecfd80cc41f1a94ef3/a6d36/Book-a-free-demo-request-1024x310.png 650w,\n/static/779ad148d33fb1ecfd80cc41f1a94ef3/e5715/Book-a-free-demo-request-1024x310.png 768w,\n/static/779ad148d33fb1ecfd80cc41f1a94ef3/2bef9/Book-a-free-demo-request-1024x310.png 1024w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"December 25, 2019","updated_date":null,"description":"Identity as a service (IDaaS) refers to services provided via the cloud or through SaaS (software-as-a-service) systems for identity and access management. It provides cloud-based authentication provided and managed on a subscription basis by third-party providers.","title":"Identity as a Service (IDAAS): Managing Digital Identities (Updated)","tags":["idaas","digital identity management","ciam solution"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/95a2b0e01482fb960001833820621b4c/33aa5/idaas-business.jpg","srcSet":"/static/95a2b0e01482fb960001833820621b4c/f836f/idaas-business.jpg 200w,\n/static/95a2b0e01482fb960001833820621b4c/2244e/idaas-business.jpg 400w,\n/static/95a2b0e01482fb960001833820621b4c/33aa5/idaas-business.jpg 768w","sizes":"(max-width: 768px) 100vw, 768px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.jpg"}}}},{"node":{"excerpt":"These days, businesses have an understanding of security hygiene and the risks of using insecure passwords.  Yet, the password management…","fields":{"slug":"/identity/worst-passwords-list-2019/"},"html":"<p>These days, businesses have an understanding of security hygiene and the risks of using insecure passwords. </p>\n<p>Yet, the <em>password management struggle is real</em> and it is hitting businesses <em>hard</em>. </p>\n<p>Given the fact that stolen or reused passwords are responsible for 80% of <a href=\"https://www.helpnetsecurity.com/2019/10/10/poor-password-hygiene/\">hacking-related breaches</a>, it’s high time for businesses to fix their overall security posture and step up their cybersecurity game. </p>\n<p>While more and more businesses are taking this concern seriously and are implementing security measures like password management, <a href=\"https://www.loginradius.com/blog/2019/06/what-is-multi-factor-authentication/\">multi-factor authentication</a> (MFA), and <a href=\"https://www.loginradius.com/blog/2019/05/what-is-single-sign-on/\">single sign-on (SSO)</a>, it is unfortunate that people still cling to poor password habits. </p>\n<p>NordPass came up with a database of 500 million leaked passwords and ranked them based on their usage in its list of worst passwords in 2019. Keep reading for some of the worst of the bunch. </p>\n<h2 id=\"the-top-51-worst-passwords-of-2019\" style=\"position:relative;\"><a href=\"#the-top-51-worst-passwords-of-2019\" aria-label=\"the top 51 worst passwords of 2019 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 Top 51 Worst Passwords of 2019</h2>\n<p>In this list, you’ll recognize some old standbys like \"123456\" and \"password\" in the top spots. But there are some unexpected ones here, too. </p>\n<p>For example, passwords like zinch and g_czechout may seem harder to crack, yet they still made it to the 7th and 8th positions, respectively.</p>\n<p>You’ll also see popular female names like Jasmine or Jennifer. Another tactic is using a string of letters that forms a pattern or a line on the keyboard. Popular examples include asdfghjkl and 1qaz2wsx. </p>\n<p><a href=\"https://www.loginradius.com/resource/understanding-credential-stuffing-attacks-whitepaper\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABbElEQVQY00WQOU8CURSFCTGAA4ICEUUgGJV9kXUQxWEZGGSJBgtCkBhDY2KiVlZKZaM/xNhYaGOkMNGKys7Gwr9yvO8hoTi5xTvvu/cc1axnB0yCNwe9bxcGEp/+8Zy8M+nWsxCCRVgzB7BES5gNydD5JOg2tqH796gmMGtUhjEgQc/AJGMgD0tMgSlU4B84lKYhUoar2EFAbkNIt6ANVyB4xu/Mx4Fa2uyRWii0TyE2j5Gs9xCpdLAYq3AwMzIPW+rKNGBPKLCRHKkq3FtN2FO1KZCfS3KKdcT3uvDmD2GLK1hKVGGOlGAK5qeRyWchqIO8TrFBs4GVdI3XNEnBgayrOb8EtVvEzGqGrqElQRmaZAsmimjw5aBa3sTZ9T2+f37x9PqOh+c3PL4M8TH6wvBzhHmqRrOWHUdmnZmjZRjDMvT+PASCL0g9mIp9GKMK707tTkPcPyHoHY4uBuie33D1r27RuxzwK7Xk+wOessQezDQFMgAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"credential stuffing\"\n        title=\"credential stuffing\"\n        src=\"/static/091051c0e36ccf509c9dea986078f13a/e5715/credential-stuffing.png\"\n        srcset=\"/static/091051c0e36ccf509c9dea986078f13a/a6d36/credential-stuffing.png 650w,\n/static/091051c0e36ccf509c9dea986078f13a/e5715/credential-stuffing.png 768w,\n/static/091051c0e36ccf509c9dea986078f13a/63ff0/credential-stuffing.png 2887w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<p>Here they all are in top ranking order.  </p>\n<table>\n<thead>\n<tr>\n<th><strong>Rank</strong></th>\n<th><strong>Password</strong></th>\n<th><strong>Count</strong></th>\n<th></th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1</td>\n<td>12345</td>\n<td>2812220</td>\n<td></td>\n</tr>\n<tr>\n<td>2</td>\n<td>123456</td>\n<td>2485216</td>\n<td></td>\n</tr>\n<tr>\n<td>3</td>\n<td>123456789</td>\n<td>1052268</td>\n<td></td>\n</tr>\n<tr>\n<td>4</td>\n<td>test1</td>\n<td>993756</td>\n<td></td>\n</tr>\n<tr>\n<td>5</td>\n<td>password</td>\n<td>830846</td>\n<td></td>\n</tr>\n<tr>\n<td>6</td>\n<td>12345678</td>\n<td>512560</td>\n<td></td>\n</tr>\n<tr>\n<td>7</td>\n<td>zinch</td>\n<td>483443</td>\n<td></td>\n</tr>\n<tr>\n<td>8</td>\n<td>g_czechout</td>\n<td>372278</td>\n<td></td>\n</tr>\n<tr>\n<td>9</td>\n<td>asdf</td>\n<td>359520</td>\n<td></td>\n</tr>\n<tr>\n<td>10</td>\n<td>qwerty</td>\n<td>348762</td>\n<td></td>\n</tr>\n<tr>\n<td>11</td>\n<td>1234567890</td>\n<td>329341</td>\n<td></td>\n</tr>\n<tr>\n<td>12</td>\n<td>1234567</td>\n<td>261610</td>\n<td></td>\n</tr>\n<tr>\n<td>13</td>\n<td>Aa123456.</td>\n<td>212903</td>\n<td></td>\n</tr>\n<tr>\n<td>14</td>\n<td>iloveyou</td>\n<td>171657</td>\n<td></td>\n</tr>\n<tr>\n<td>15</td>\n<td>1234</td>\n<td>169683</td>\n<td></td>\n</tr>\n<tr>\n<td>16</td>\n<td>abc123</td>\n<td>150977</td>\n<td></td>\n</tr>\n<tr>\n<td>17</td>\n<td>111111</td>\n<td>148079</td>\n<td></td>\n</tr>\n<tr>\n<td>18</td>\n<td>123123</td>\n<td>145365</td>\n<td></td>\n</tr>\n<tr>\n<td>19</td>\n<td>dubsmash</td>\n<td>144104</td>\n<td></td>\n</tr>\n<tr>\n<td>20</td>\n<td>test</td>\n<td>139624</td>\n<td></td>\n</tr>\n<tr>\n<td>21</td>\n<td>princess</td>\n<td>122658</td>\n<td></td>\n</tr>\n<tr>\n<td>22</td>\n<td>122658</td>\n<td>116273</td>\n<td></td>\n</tr>\n<tr>\n<td>23</td>\n<td>sunshine</td>\n<td>107202</td>\n<td></td>\n</tr>\n<tr>\n<td>24</td>\n<td>BvtTest123</td>\n<td>106991</td>\n<td></td>\n</tr>\n<tr>\n<td>25</td>\n<td>11111</td>\n<td>104395</td>\n<td></td>\n</tr>\n<tr>\n<td>26</td>\n<td>ashley</td>\n<td>94557</td>\n<td></td>\n</tr>\n<tr>\n<td>27</td>\n<td>00000</td>\n<td>92927</td>\n<td></td>\n</tr>\n<tr>\n<td>28</td>\n<td>000000</td>\n<td>92330</td>\n<td></td>\n</tr>\n<tr>\n<td>29</td>\n<td>password1</td>\n<td>92009</td>\n<td></td>\n</tr>\n<tr>\n<td>30</td>\n<td>monkey</td>\n<td>86404</td>\n<td></td>\n</tr>\n<tr>\n<td>31</td>\n<td>livetest</td>\n<td>83677</td>\n<td></td>\n</tr>\n<tr>\n<td>32</td>\n<td>55555</td>\n<td>83004</td>\n<td></td>\n</tr>\n<tr>\n<td>33</td>\n<td>soccer</td>\n<td>80159</td>\n<td></td>\n</tr>\n<tr>\n<td>34</td>\n<td>charlie</td>\n<td>78914</td>\n<td></td>\n</tr>\n<tr>\n<td>35</td>\n<td>asdfghjkl</td>\n<td>77360</td>\n<td></td>\n</tr>\n<tr>\n<td>36</td>\n<td>654321</td>\n<td>76498</td>\n<td></td>\n</tr>\n<tr>\n<td>37</td>\n<td>family</td>\n<td>76007</td>\n<td></td>\n</tr>\n<tr>\n<td>38</td>\n<td>michael</td>\n<td>71035</td>\n<td></td>\n</tr>\n<tr>\n<td>39</td>\n<td>123321</td>\n<td>69727</td>\n<td></td>\n</tr>\n<tr>\n<td>40</td>\n<td>football</td>\n<td>68495</td>\n<td></td>\n</tr>\n<tr>\n<td>41</td>\n<td>baseball</td>\n<td>67981</td>\n<td></td>\n</tr>\n<tr>\n<td>42</td>\n<td>q1w2e3r4t5y6</td>\n<td>66586</td>\n<td></td>\n</tr>\n<tr>\n<td>43</td>\n<td>nicole</td>\n<td>64992</td>\n<td></td>\n</tr>\n<tr>\n<td>44</td>\n<td>jessica</td>\n<td>63498</td>\n<td></td>\n</tr>\n<tr>\n<td>45</td>\n<td>purple</td>\n<td>62709</td>\n<td></td>\n</tr>\n<tr>\n<td>46</td>\n<td>shadow</td>\n<td>62592</td>\n<td></td>\n</tr>\n<tr>\n<td>47</td>\n<td>hannah</td>\n<td>62394</td>\n<td></td>\n</tr>\n<tr>\n<td>48</td>\n<td>chocolate</td>\n<td>62325</td>\n<td></td>\n</tr>\n<tr>\n<td>49</td>\n<td>michelle</td>\n<td>61873</td>\n<td></td>\n</tr>\n<tr>\n<td>50</td>\n<td>daniel</td>\n<td>61643</td>\n<td></td>\n</tr>\n<tr>\n<td>51</td>\n<td>maggie</td>\n<td>61445</td>\n<td></td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"why-is-password-hygiene-not-taken-seriously\" style=\"position:relative;\"><a href=\"#why-is-password-hygiene-not-taken-seriously\" aria-label=\"why is password hygiene not taken seriously 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 is password hygiene not taken seriously?</h2>\n<p>Now that you've seen the worst passwords, you may want to <a href=\"https://www.loginradius.com/blog/2018/05/infographic-poor-password-hygiene-letting-cybercriminals-clean/\">improve the password hygiene</a> of your enterprise.</p>\n<p>But what if your customers don't follow good password hygiene? </p>\n<p>Unfortunately, many don't. The biggest reason is that remembering multiple passwords for multiple accounts is hard work. This leads to people using easy-to-guess passwords or recycled passwords which can lead to a domino effect of attacks on both consumers and companies. </p>\n<p>Another flawed approach is that people may think their information is insignificant, so they assume that no hacker would care about them. However, a ransomware attack can lock users out of their accounts and become quite costly.</p>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 54.61538461538461%; position: relative; bottom: 0; left: 0; background-image: url('data:image/jpeg;base64,/9j/2wBDABALDA4MChAODQ4SERATGCgaGBYWGDEjJR0oOjM9PDkzODdASFxOQERXRTc4UG1RV19iZ2hnPk1xeXBkeFxlZ2P/2wBDARESEhgVGC8aGi9jQjhCY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2P/wgARCAALABQDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAEF/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/2gAMAwEAAhADEAAAAd6WoC//xAAWEAEBAQAAAAAAAAAAAAAAAAABACD/2gAIAQEAAQUChz//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/AT//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/AT//xAAUEAEAAAAAAAAAAAAAAAAAAAAg/9oACAEBAAY/Al//xAAZEAACAwEAAAAAAAAAAAAAAAAAARARMUH/2gAIAQEAAT8he3Yxiw7Cw//aAAwDAQACAAMAAAAQvA//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAEDAQE/ED//xAAUEQEAAAAAAAAAAAAAAAAAAAAQ/9oACAECAQE/ED//xAAaEAEAAgMBAAAAAAAAAAAAAAABABEhMWFB/9oACAEBAAE/EBo8aiLeDpBW19gZxCmYif/Z'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"image2\"\n        title=\"image2\"\n        src=\"/static/2d0ba915fef0e91be27b9165b68285d6/212bf/image2.jpg\"\n        srcset=\"/static/2d0ba915fef0e91be27b9165b68285d6/6aca1/image2.jpg 650w,\n/static/2d0ba915fef0e91be27b9165b68285d6/212bf/image2.jpg 768w,\n/static/2d0ba915fef0e91be27b9165b68285d6/64175/image2.jpg 1025w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></p>\n<h2 id=\"how-can-you-improve-password-security\" style=\"position:relative;\"><a href=\"#how-can-you-improve-password-security\" aria-label=\"how can you improve password 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>How can you improve password security?</h2>\n<p>As our worst passwords list shows, you can’t stop everyone from using bad passwords. However, you can prevent hackers from accessing passwords by using a Customer Identity and Access Management (CIAM) solution. Here’s how.</p>\n<p>An Identity Platform can help companies implement industry-standard hashing algorithms that protect passwords during transit or at rest. This is an effective way to prevent data from being exposed to hackers. </p>\n<p>With the increase in frequency and complexity of attacks, companies could also utilize additional features like two-factor authentication, risk-based authentication, and <a href=\"https://www.loginradius.com/blog/2019/10/passwordless-authentication-the-future-of-identity-and-security/\">passwordless login</a>.</p>\n<p>By implementing these features, companies can increase security to customer accounts that will help prevent data breaches and hacks.</p>\n<p>A CIAM solution also saves resources. Your support and development teams can devote their time to growing your business rather than responding to data breaches. </p>\n<p>Overall, bad passwords coupled with smart hackers are a big problem for  businesses. To protect your company from costly hacks and breaches, you need cybersecurity that prevents access to your sensitive data. For state-of-the-art cybersecurity and enhanced customer experience, choose a globally-certified CIAM solution like LoginRadius. </p>\n<p><a href=\"https://www.loginradius.com/book-a-demo/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsTAAALEwEAmpwYAAABs0lEQVQY0yWRy08TcRDH92Cku2yloTQQ0NJ2W9gV2vRBt0vZ2oeSblGQhiiF8BISDyZG4ERIxYMeqolnE09GTdDER0yIMeGiFy8kHDx4NvHoH/Hht+vhO5PMZL4z3/lKcsxCHakQ1KcZLa2z3f7BVueUVOsdY1efE8qu4kuUkYcn6ApnuZCwCGen6R2vIRtVlMQUvuGcBzkygaTEJukWA6HkdXbah1Q7f8k++0e19ZpA7i7+5DyyZhMYmcQftwiNXcGeXSVaWqAn3ySQdlBjedEvokTzLmEBOW4zZNRpvjwm8ukP4ZUXXGvsE0zfQrns0BUx0e05qgub5OqLmI0lpmZXMOu3KTgtCjPLXk2NmUiyYO0RZ/fFSwyUl9CdPXqNeS6tvaE/3SSjb4jNJueF3P5kBa3QQLNmSBRveIiYDlEBV64n2Q3uQLfmnlxENWoEMjcZnHss/uSQSe+iip40MM72wVNOf/3m8PNX3n/5xtsPR3z/ecLHo2OChu39WHJ1/2fPo2iWR+wa5buYQtVraMuv8I9WODeUoty8w4N2h82dA7Z2H4n8kHt7T1i7v++Z5RpzBoBK0hPcPRyRAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"CTA book demo password 1024x310\"\n        title=\"CTA book demo password 1024x310\"\n        src=\"/static/627cc6ea75a5e7740ea1c7fb9d6d737b/e5715/CTA-book-demo-password-1024x310.png\"\n        srcset=\"/static/627cc6ea75a5e7740ea1c7fb9d6d737b/a6d36/CTA-book-demo-password-1024x310.png 650w,\n/static/627cc6ea75a5e7740ea1c7fb9d6d737b/e5715/CTA-book-demo-password-1024x310.png 768w,\n/static/627cc6ea75a5e7740ea1c7fb9d6d737b/2bef9/CTA-book-demo-password-1024x310.png 1024w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"December 23, 2019","updated_date":null,"description":"Overall, a major challenge for corporations is poor passwords combined with smart hackers. You need cybersecurity that prevents access to your confidential data to protect your business from expensive hacks and breaches. Choose a globally-certified CIAM solution like LoginRadius for state-of-the-art safety and increased customer experience.","title":"The Worst Passwords of 2019","tags":["passwordless login","password management","data security"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/ef5c2fb5e81e04465adcb074831f64a5/33aa5/worst-psswrd-list.jpg","srcSet":"/static/ef5c2fb5e81e04465adcb074831f64a5/f836f/worst-psswrd-list.jpg 200w,\n/static/ef5c2fb5e81e04465adcb074831f64a5/2244e/worst-psswrd-list.jpg 400w,\n/static/ef5c2fb5e81e04465adcb074831f64a5/33aa5/worst-psswrd-list.jpg 768w","sizes":"(max-width: 768px) 100vw, 768px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.jpg"}}}},{"node":{"excerpt":"We want to give a big thank you and shout out to Union Gospel Mission (UGM) for giving us the opportunity to give back to the community…","fields":{"slug":"/growth/christmas-spirit-of-giving/"},"html":"<p>We want to give a big thank you and shout out to <a href=\"https://www.ugm.ca/\">Union Gospel Mission (UGM)</a> for giving us the opportunity to give back to the community! </p>\n<p>The holiday season serves as a great reminder to count our blessings. Many of us are fortunate in that we know which beds we’ll be sleeping in tonight. We consider hunger as an occasional discomfort we can easily solve. For gifts, we expect beautiful, new items from malls and boutiques rather than second-hand or dollar store finds. But we shouldn’t feel guilty. Instead, let’s feel grateful for the blessings we get to enjoy.</p>\n<p>As we count our blessings, the holiday season also reminds us not to simply give, but to embrace <em>the joy of giving</em>. With the help of UGM, the team at LoginRadius got to do just that. We celebrated the holiday season by preparing gifts for the residents at one of UGM Vancouver’s housing facilities. </p>\n<p>Together, the LoginRadius team wrote Christmas cards and assembled gift bags full of goodies. Each bag had necessities <em>and</em> treats, including socks, toothbrushes, toothpaste, gloves, candies, and chocolates.</p>\n<p>As LoginRadius grows from a tech startup to an established corporation, we’re reminded that the joy of giving is year-round. We feel lucky that we can contribute to projects that help our community. In fact, some of our own team members could have benefited from organizations like UGM in the past—our own CEO grew up in a rural village without running water or electricity. </p>\n<p>Our night of preparing gifts and cards for UGM was a great way to get into the Christmas spirit. We hope you enjoy these photos and get inspired to help your local community, too.</p>\n<center>\n<p><strong>Happy holiday and New Year from everyone at LoginRadius!</strong></p>\n</center>\n<p>If you wish to join UGM in helping our most vulnerable communities, please consider giving them a <a href=\"https://www.ugm.ca/donate/?noredirect=1\">generous donation</a>.</p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"December 17, 2019","updated_date":null,"description":"We want to give the Union Gospel Mission (UGM) a huge thank you and shout out for giving us the chance to give the world back!","title":"LoginRadius Gets into the Christmas Spirit (of Giving)","tags":null,"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.408450704225352,"src":"/static/79b1fa2b13099d16865cc75f381cd0ec/33aa5/christmas-spirit-of-giving.jpg","srcSet":"/static/79b1fa2b13099d16865cc75f381cd0ec/f836f/christmas-spirit-of-giving.jpg 200w,\n/static/79b1fa2b13099d16865cc75f381cd0ec/2244e/christmas-spirit-of-giving.jpg 400w,\n/static/79b1fa2b13099d16865cc75f381cd0ec/33aa5/christmas-spirit-of-giving.jpg 768w","sizes":"(max-width: 768px) 100vw, 768px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.jpg"}}}}]},"markdownRemark":{"excerpt":"Identity is evolving, and developers are at the forefront of this transformation. Every day brings a new learning—adapting to new standards…","fields":{"slug":"/identity/developer-first-identity-provider-loginradius/"},"html":"<p>Identity is evolving, and developers are at the forefront of this transformation. Every day brings a new learning—adapting to new standards and refining approaches to building secure, seamless experiences.</p>\n<p>We’re here to support developers on that journey. We know how important simplicity, efficiency, and well-structured documentation are when working with identity and access management solutions. That’s why we’ve redesigned the <a href=\"https://www.loginradius.com/\">LoginRadius website</a>—to be faster, more intuitive, and developer-first in every way.</p>\n<p>The goal? Having them spend less time searching and more time building.</p>\n<h2 id=\"whats-new-and-improved-on-the-loginradius-website\" style=\"position:relative;\"><a href=\"#whats-new-and-improved-on-the-loginradius-website\" aria-label=\"whats new and improved on the loginradius website permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What’s New and Improved on the LoginRadius Website?</h2>\n<p>LoginRadius’ vision is to give developers a product that simplifies identity management so they can focus on building, deploying, and scaling their applications. To enhance this experience, we’ve spent the last few months redesigning our interface— making navigation more intuitive and reassuring that essential resources are easily accessible.</p>\n<p>Here’s a closer look at what’s new and why it’s important:</p>\n<h3 id=\"a-developer-friendly-dark-theme\" style=\"position:relative;\"><a href=\"#a-developer-friendly-dark-theme\" aria-label=\"a developer friendly dark theme permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>A Developer-Friendly Dark Theme</h3>\n<p><img src=\"/f46881583c7518a93bb24e94c32320de/a-developer-friendly-dark-theme.webp\" alt=\"This image shows how LoginRadius offers several authentication methods like traditional login, social login, passwordless login, passkeys and more in a dark mode.\">    </p>\n<p>Developers spend long hours working in dark-themed IDEs and terminals, so we’ve designed the LoginRadius experience to be developer-friendly and align with that preference.</p>\n<p>The new dark mode reduces eye strain, enhances readability, and provides a seamless transition between a coding environment and our platform. Our new design features a clean, modern aesthetic with a consistent color scheme and Barlow typography, ensuring better readability. High-quality graphics and icons are thoughtfully placed to enhance the content without adding visual clutter.</p>\n<p>So, whether you’re navigating our API docs or configuring authentication into your system, our improved interface will make those extended development hours more comfortable and efficient.</p>\n<h3 id=\"clear-categorization-for-loginradius-capabilities\" style=\"position:relative;\"><a href=\"#clear-categorization-for-loginradius-capabilities\" aria-label=\"clear categorization for loginradius capabilities permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Clear Categorization for LoginRadius Capabilities</h3>\n<p><img src=\"/e5358b82be414940f3fb146013845933/capabilities.webp\" alt=\"This image shows a breakdown of all the LoginRadius CIAM capabilities, including authentication, security, UX, scalability and multi-brand management.\"></p>\n<p>We’ve restructured our website to provide a straightforward breakdown of our customer identity and access management platform capabilities, helping you quickly find what you need:</p>\n<ul>\n<li>Authentication: Easily understand <a href=\"https://www.loginradius.com/blog/identity/authentication-option-for-your-product/\">how to choose the right login method</a>, from traditional passwords and OTPs to social login, federated SSO, and passkeys with few lines of code.</li>\n<li>Security: Implement no-code security features like bot detection, IP throttling, breached password alerts, DDoS protection, and adaptive MFA to safeguard user accounts.</li>\n<li>User Experience: Leverage AI builder, hosted pages, and drag-and-drop workflows to create smooth, branded sign-up and login experiences.</li>\n<li>High Performance &#x26; Scalability: Confidently scale with sub-100ms API response times, 100% uptime, 240K+ RPS, and 28+ global data center regions.</li>\n<li>Multi-Brand Management: Efficiently manage multiple identity apps, choosing isolated or shared data stores based on your brand’s unique needs.</li>\n</ul>\n<p>This structured layout ensures you can quickly understand each capability and how it integrates into your identity ecosystem.</p>\n<h3 id=\"developer-first-navigation\" style=\"position:relative;\"><a href=\"#developer-first-navigation\" aria-label=\"developer first navigation permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Developer-First Navigation</h3>\n<p><img src=\"/a8c155c2b6faf3d5f4b4de4e2b14d763/developers-menu.webp\" alt=\"This image shows the LoginRadius menu bar, highlighting the developer dropdown.\">   </p>\n<p>We’ve been analyzing developer workflows to identify how you access key resources. That’s why we redesigned our navigation with one goal in mind: to reduce clicks and make essential resources readily available.</p>\n<p>The new LoginRadius structure puts APIs, SDKs, and integration guides right at the menu bar under the Developers dropdown so you can get started faster. Our Products, Solutions, and Customer Services are also clearly categorized, helping development teams quickly find the right tools and make informed decisions.</p>\n<h3 id=\"quick-understanding-of-integration-benefits\" style=\"position:relative;\"><a href=\"#quick-understanding-of-integration-benefits\" aria-label=\"quick understanding of integration benefits permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Quick Understanding of Integration Benefits</h3>\n<p><img src=\"/b2f9a964a2da0ea83e2f8596b833bba7/we-support-your-tech-stack.webp\" alt=\"This image shows a list of popular programming languages and frameworks offered by LoginRadius.\"></p>\n<p>Developers now have a clear view of the tech stack available with LoginRadius, designed to support diverse business needs.</p>\n<p>Our platform offers pre-built SDKs for Node.js, Python, Java, and more, making CIAM integration seamless across popular programming languages and frameworks.</p>\n<h2 id=\"over-to-you-now\" style=\"position:relative;\"><a href=\"#over-to-you-now\" aria-label=\"over to you now permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Over to You Now!</h2>\n<p>Check out our <a href=\"https://www.loginradius.com/\">revamped LoginRadius website</a> and see how the improved experience makes it easier to build, scale, and secure your applications.</p>\n<p>Do not forget to explore the improved navigation and API documentation, and get started with our free trial today. We’re excited to see what you’ll build with LoginRadius!</p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"February 21, 2025","updated_date":null,"description":"LoginRadius’ vision is to give developers a product that simplifies identity management so they can focus on building, deploying, and scaling their applications. To enhance this experience, we’ve redesigned our website interface, making navigation more intuitive and reassuring that essential resources are easily accessible.","title":"Revamped & Ready: Introducing the New Developer-First LoginRadius Website","tags":["Developer tools","API","Identity Management","User Authentication"],"pinned":true,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.7857142857142858,"src":"/static/80b4e4fbe176a10a327d273504607f32/58556/hero-section.webp","srcSet":"/static/80b4e4fbe176a10a327d273504607f32/61e93/hero-section.webp 200w,\n/static/80b4e4fbe176a10a327d273504607f32/1f5c5/hero-section.webp 400w,\n/static/80b4e4fbe176a10a327d273504607f32/58556/hero-section.webp 800w,\n/static/80b4e4fbe176a10a327d273504607f32/99238/hero-section.webp 1200w,\n/static/80b4e4fbe176a10a327d273504607f32/7c22d/hero-section.webp 1600w,\n/static/80b4e4fbe176a10a327d273504607f32/1258b/hero-section.webp 2732w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.jpg"}}}},"pageContext":{"limit":6,"skip":804,"currentPage":135,"type":"///","numPages":161,"pinned":"ee8a4479-3471-53b1-bf62-d0d8dc3faaeb"}},"staticQueryHashes":["1171199041","1384082988","2100481360","23180105","528864852"]}