{"componentChunkName":"component---src-templates-blog-list-template-js","path":"/58","result":{"data":{"allMarkdownRemark":{"edges":[{"node":{"excerpt":"LoginRadius, a leading CIAM platform, offers endless possibilities to diverse businesses and ensures business success through advanced…","fields":{"slug":"/identity/loginradius-webhook-datasync-realtime/"},"html":"<p>LoginRadius, a leading CIAM platform, offers endless possibilities to diverse businesses and ensures business success through advanced access control and seamless login capabilities. </p>\n<p>Moreover, when it comes to deriving valuable insights from consumer data, LoginRadius helps enterprises integrate third-party analytics and data-driven applications that help create winning marketing and <a href=\"https://www.loginradius.com/blog/fuel/top-5-marketing-strategies-to-power-up-your-business/\">business-centric strategies</a>. </p>\n<p>Businesses can leverage the true potential of Webhook that allows them to build or set up integrations that subscribe to certain events on LoginRadius CIAM. </p>\n<p>Let’s understand how LoginRadius improves business performance through third-party integrations and helps sync your crucial business data in real-time through Webhook. </p>\n<h2 id=\"how-loginradius-webhook-works\" style=\"position:relative;\"><a href=\"#how-loginradius-webhook-works\" aria-label=\"how loginradius webhook works permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How LoginRadius Webhook Works</h2>\n<p>Webhooks allow you to build or set up integrations that subscribe to certain events on LoginRadius. When one of these events is triggered, LoginRadius automatically sends a POST payload over HTTPS to the Webhook's configured URL in real-time. You can use Webhooks to update an external tracker or update a backup mirror.</p>\n<p>LoginRadius can integrate with hundreds of third-party tools. We can easily connect customer data to your existing API-driven tools, delivering an incredible experience for your customers and saving you money.</p>\n<p>Enterprises can quickly set up third-party integrations like Webhook to ensure they receive consumer-behavior-related notifications in real-time. </p>\n<p>Once you <a href=\"https://www.loginradius.com/developers/\">configure the webhook</a> with an event, LoginRadius triggers that webhook every time for that event. For example, a webhook subscribed URL configured for a Login event will receive a POST request on your server with a payload. </p>\n<h2 id=\"webhook-security\" style=\"position:relative;\"><a href=\"#webhook-security\" aria-label=\"webhook 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>Webhook Security</h2>\n<p>LoginRadius follows the best practices to <a href=\"https://www.loginradius.com/blog/identity/data-security-best-practices/\">ensure your endpoint security</a> and provides several ways to verify that triggered events are securely coming from LoginRadius. </p>\n<p>Enterprises shouldn’t worry about the overall security of consumer data since the best security practices are already in place in the LoginRadius CIAM solution. When it comes to security, LoginRadius commits to: </p>\n<ul>\n<li>Achieving the expectations of its customers and relevant regulatory authorities.</li>\n<li>Understanding customers’ needs to deliver high-standard services.</li>\n<li>Ensuring all of its employees follow the company’s best practices, processes, and procedures.</li>\n<li>Protecting customer data and LoginRadius’ information, intellectual property, people, and activities against loss, damage, disruption, or unauthorized disclosure.</li>\n<li>Implementing and <a href=\"https://www.loginradius.com/security-policy\">maintaining security policies</a> and procedures to meet the ISO 27001, ISO 27017, ISO 27018, NIST CSF requirements, and any other compliance that LoginRadius follows.</li>\n<li>Implementing an Information Security Management System and ensuring that it is continually improved and supported with the necessary resources required to achieve the commitments written in this policy statement.</li>\n</ul>\n<p><a href=\"https://www.loginradius.com/resource/webhook-integration-datasheet\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABq0lEQVQY002Qy2sTcRRGp5lMkiHQh8mETNNMJk4mk8nTJJOX1Wp9YEvFCIoPXAgVkVArUulKEPwv3LoRXfgAdWEXgroouPKJIG6ysZusAlkff0k3Xjhc7ubwfVdS7UXUTEfQJpxpEbaahNJ1gYdqVgkmywSSJQILBZS4QyBVYba4xIxZQkkWkeM2ciQlMJAPLCCp9mFUu0O6vIhd8DCdKm6xQa7oka8dIWJ7+OcLBBIC3SF0sEaidQandZKgexTZKKNEDfz/C4NWm2JzmeMnVsm6Ve5cuMijrU02zq2RdBv49LwQ5ok6DaLZOhGrgpatEbcrRK0SWqZMMGbim0sghUTdkBDmaku0OssUDrVZW+3y8N4251fOMi+E8jhdwkXRc/hiGaZF3UShiWZXUbS0SJacMBGO/+c3PR4/e0W/3+fL1298//Fzsv/u7XGsew0plkWaNuhtP+DX7z+8eLvDk+evefryDZ92P/Pu/QfCuoU0E98XykadnY+7jGcwGDAcDhmNRpP79KV1pLk0U1oG71SXW1v3uXJzk8s3bgs2uN67y9X1HgEtxdSszj9pRdVk9cSHGQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"DS-webhook\"\n        title=\"DS-webhook\"\n        src=\"/static/0c3a730654d1576212cb8b18aa3b7bb8/e5715/DS-webhook.png\"\n        srcset=\"/static/0c3a730654d1576212cb8b18aa3b7bb8/a6d36/DS-webhook.png 650w,\n/static/0c3a730654d1576212cb8b18aa3b7bb8/e5715/DS-webhook.png 768w,\n/static/0c3a730654d1576212cb8b18aa3b7bb8/81501/DS-webhook.png 2886w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<h2 id=\"benefits-of-webhook-loginradius-integration\" style=\"position:relative;\"><a href=\"#benefits-of-webhook-loginradius-integration\" aria-label=\"benefits of webhook loginradius integration permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Benefits of Webhook LoginRadius Integration</h2>\n<p>Webhook LoginRadius integration allows enterprises to leverage the true potential of instant and real-time notifications. </p>\n<p>In a nutshell, the pre-requested consumer information is passed to the linked applications when an event happens. This removes the need for a manual poll for new data at predefined intervals. </p>\n<p>This helps enhance the overall efficiency of business processes running on data as their primary fuel. </p>\n<h2 id=\"where-to-use-webhook-loginradius-integration\" style=\"position:relative;\"><a href=\"#where-to-use-webhook-loginradius-integration\" aria-label=\"where to use webhook loginradius integration permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Where to Use Webhook LoginRadius Integration?</h2>\n<p>Depending on the various event and data needs, businesses can use webhooks to:</p>\n<ul>\n<li>Know that an event has occurred</li>\n<li>Ensure data is synced across multiple web apps</li>\n<li>Connect two or more apps where an event in one app triggers an event in another app and vice versa </li>\n<li>Customize apps and their functionality based on the needs</li>\n<li>Create tailored marketing campaigns</li>\n</ul>\n<h2 id=\"conclusion\" style=\"position:relative;\"><a href=\"#conclusion\" aria-label=\"conclusion permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Conclusion</h2>\n<p>The modern digital era demands businesses to efficiently manage and leverage data to stay ahead of the curve. </p>\n<p>With LoginRadius integration, enterprises can seamlessly integrate multiple applications, including Webhook that can help collect and sync crucial data in real-time. </p>\n<p>LoginRadius can easily connect customer data to your existing API-driven tools, delivering an incredible experience for your customers and saving you money.</p>\n<p>If you wish to see the future of CIAM in action, <a href=\"https://www.loginradius.com/contact-sales\">reach us</a> for a personalized session. </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 request 1024x310\"\n        title=\"Book a free demo request 1024x310\"\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":"November 24, 2021","updated_date":null,"description":"Businesses can leverage the true potential of Webhook that allows them to build or set up integrations that subscribe to certain events on LoginRadius CIAM. Let’s understand how LoginRadius improves business performance through third-party integrations and helps sync your crucial business data in real-time through Webhook.","title":"How LoginRadius Webhook Allows You to Sync Your Data in Real-Time","tags":["webhook","data security","ciam platform","cx"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.6260162601626016,"src":"/static/3824713943694920a678f3cf8229c230/14b42/webhook-cover.jpg","srcSet":"/static/3824713943694920a678f3cf8229c230/f836f/webhook-cover.jpg 200w,\n/static/3824713943694920a678f3cf8229c230/2244e/webhook-cover.jpg 400w,\n/static/3824713943694920a678f3cf8229c230/14b42/webhook-cover.jpg 800w,\n/static/3824713943694920a678f3cf8229c230/16310/webhook-cover.jpg 1024w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Vishal Sharma","github":null,"avatar":null}}}},{"node":{"excerpt":"Can the biggest shopping days of the year also be the biggest security disaster?  Turns out -- it can be (no surprise there!). Every year…","fields":{"slug":"/identity/online-shopping-tips/"},"html":"<p>Can the biggest shopping days of the year also be the biggest security disaster? </p>\n<p>Turns out -- it can be (no surprise there!).</p>\n<p>Every year, online fraudsters concoct new ways to dupe holiday shoppers out of their money. It only takes one mistake to have your consumers' data stolen and for you to end up in a pit of losses, fines, and miscellaneous costs to revive your business. </p>\n<p>According to <a href=\"https://www.verizon.com/business/resources/reports/dbir/\">Verizon's 2021 Data Breach Investigations Report</a>, cybercriminals mostly target confidential data that retail outlets hold. The numbers go as high as 42% for consumer payment data, 41% for personal data, and 33% for credentials. </p>\n<p>So, <a href=\"https://www.loginradius.com/blog/2020/06/consumer-data-privacy-security/\">protecting your consumers’ data online</a> is an essential part of securing your business at large. Your job is to let them shop with confidence with some of the best online shopping tips (discussed below).</p>\n<p>But first, we have a few stats to share. </p>\n<p>Stay calm. While the holiday season is around the corner, some figures may be alarming, but that shouldn't keep you from encouraging your consumers to shop online. </p>\n<h2 id=\"black-friday--cyber-monday-statistics-that-shows-what-to-expect-in-2023\" style=\"position:relative;\"><a href=\"#black-friday--cyber-monday-statistics-that-shows-what-to-expect-in-2023\" aria-label=\"black friday  cyber monday statistics that shows what to expect in 2023 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Black Friday &#x26; Cyber Monday Statistics that Shows What to Expect In 2023</h2>\n<ul>\n<li>Research from<a href=\"https://www.finder.com/black-friday-statistics\"> Finder</a> reveals that in 2023, a staggering 132 million Americans are set to engage in shopping activities throughout Cyber Week.</li>\n<li>The prevalence of online shopping for Black Friday sales has risen, with an increasing number of individuals recognizing the convenience of shopping from the comfort of their homes. A <a href=\"https://www.driveresearch.com/market-research-company-blog/black-friday-holiday-shopping-statistics/#BF2\">Drive Research study </a>indicates that approximately 68% of people intend to opt for online sales, while 27% plan to shop in-store, marking a 16% decrease from the 2022 figures.</li>\n<li>According to Imperva's \"State of Security Within eCommerce\", <a href=\"https://www.imperva.com/resources/resource-library/white-papers/the-state-of-security-within-e-commerce/\">57% of attacks</a> targeting retail websites were carried out by bots.</li>\n</ul>\n<p>These statistics have significant consequences, especially when your business is built upon trust and consumer confidence. You need to be proactive about addressing all kinds of cybersecurity threats. </p>\n<h2 id=\"the-biggest-online-shopping-cyber-attacks\" style=\"position:relative;\"><a href=\"#the-biggest-online-shopping-cyber-attacks\" aria-label=\"the biggest online shopping cyber attacks permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>The Biggest Online Shopping Cyber Attacks</h2>\n<h3 id=\"ddos-attack\" style=\"position:relative;\"><a href=\"#ddos-attack\" aria-label=\"ddos attack permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>DDoS attack</h3>\n<p>Distributed denial of service or DDoS attack is a malicious attempt where criminals flood a network with an overwhelming traffic volume from multiple sources—that it becomes impossible to deliver service as it usually did. </p>\n<p>DDoS assaults are a common occurrence around the <a href=\"https://www.loginradius.com/blog/2020/04/loginradius-ciam-retail-ecommerce-business/\">online retail industry</a>, mostly because they are easy to deploy, and hackers can bring down a site in a matter of minutes. The damage to the victim is also almost immediate and expensive. </p>\n<h3 id=\"card-fraud\" style=\"position:relative;\"><a href=\"#card-fraud\" aria-label=\"card fraud permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Card fraud</h3>\n<p>In credit card fraud, hackers employ malicious bots to scan for vulnerabilities within online shopping sites to <a href=\"https://www.loginradius.com/blog/2019/09/prevent-credential-stuffing-attacks/\">steal card numbers</a>. Gift card fraud occurs when bots scan for possible gift card numbers within web applications until the valid ones are found. </p>\n<h3 id=\"phishing-scams\" style=\"position:relative;\"><a href=\"#phishing-scams\" aria-label=\"phishing scams permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Phishing scams</h3>\n<p>Phishing is one of the most common types of cyberattacks that consumers encounter when online. These days it is quite convenient for cybercriminals to launch a genuine-looking shopping site and unsuspecting scam buyers to enter their personal and financial details—and that's one way how phishing works.</p>\n<p>Sometimes, hackers also send emails with malicious attachments hoping that the receiver would click them and have malicious infections downloaded to their system. </p>\n<h3 id=\"consumer-journey-hijacking\" style=\"position:relative;\"><a href=\"#consumer-journey-hijacking\" aria-label=\"consumer journey hijacking permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Consumer journey hijacking</h3>\n<p>Consumer journey has become one of the key brand differentiators for enterprises-even surpassing factors like price and product. Consumers expect that their interaction with your brand is as seamless as possible. </p>\n<p>Consumer journey hijacking is a cyberattack where hackers inject unauthorized advertisements (usually as pop-ups or banners) into the consumer's web browser. For example, they may ask the victim to click on the ads with the promise to secure a great deal or redeem a prize they won. </p>\n<h2 id=\"17-online-shopping-tips-for-consumers-to-follow-while-shopping-during-this-holiday-season\" style=\"position:relative;\"><a href=\"#17-online-shopping-tips-for-consumers-to-follow-while-shopping-during-this-holiday-season\" aria-label=\"17 online shopping tips for consumers to follow while shopping during this holiday season permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>17 Online Shopping Tips for Consumers To Follow While Shopping During This Holiday Season</h2>\n<p><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 60.61538461538461%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAMCAYAAABiDJ37AAAACXBIWXMAAAsSAAALEgHS3X78AAAB+0lEQVQoz11T207bUBC0Wnx8TNRQqZHgoahVBSYhiUOLSIpjaC4kJCFUVOFSKkCViApP/f+36ew6sU0f1va57OzsztixQQx/u60h3xqyDtrwdnt4Xe7Cq57A3znW/fT+VpRFbt/Rxc6RRv7AK3dQ3Buh2r/CWq0HI6BaOIKtsEhjAm9vCls/ZU6W62jV8jdlkAFGcCs9lMI+qqN7FD5PlK2eE8B8vYE5/JmGdzBLMFKGpO1txxkDHnrhCIVwiLXGACYcw3ItzATMa13n4op7BN2/SACF0Wp4ijcNUmdbtjbQt899r9Ihsz783S7B+N28TJKjW5ijhyyiXwouBR3Dx3pziuLBdxhWsTWCbR0mwqg4IlKse8LCdB/hxvdwCeA2r/WtoO07WI7FcaniZvsCrR9zbERMYIEUKEjE0rlyLJZCrMQPeHt8h49nT9ic/MH70SOMtE1QZWjFDmzz3f4Yfn0IuxAnVZ/zXAL6vLfSukGp/xuV2V98On/GxvgJroyhOdP7iShkYmgTS8C8dVJfLpRXu9SGWG1d4sP0GaXBHK86c52t5ayluIriB8mMBNDWB0l7Qab6C8YLwYp0QOHLlF4809nZal+7c14wkvbzLUu7FMkK+6V5NfkEnhRd3hEiOvuIgLn28r9gNsPOf39RpBZSe0kxsdrC1HL+D56mYqm5M9ZiAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"alt_text\"\n        title=\"online-shopping-tips-for-consumers-to-follow-while-shopping\"\n        src=\"/static/c75cabaeaeca16df2bef99a6c2f0dda2/e5715/online-shopping-tips-for-consumers-to-follow-while-shopping.png\"\n        srcset=\"/static/c75cabaeaeca16df2bef99a6c2f0dda2/a6d36/online-shopping-tips-for-consumers-to-follow-while-shopping.png 650w,\n/static/c75cabaeaeca16df2bef99a6c2f0dda2/e5715/online-shopping-tips-for-consumers-to-follow-while-shopping.png 768w,\n/static/c75cabaeaeca16df2bef99a6c2f0dda2/2bef9/online-shopping-tips-for-consumers-to-follow-while-shopping.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>Do not let the stress of untangling a case of identity theft or financial fraud ruin your consumers' Black Friday and Cyber Monday shopping. Stay ahead of cybercriminals with the best online tips. Here are the best places to start.</p>\n<h3 id=\"1-use-familiar-websites\" style=\"position:relative;\"><a href=\"#1-use-familiar-websites\" aria-label=\"1 use familiar websites permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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. Use familiar websites.</h3>\n<p>Encourage your consumers to shop from sites that they can trust. When they know the site well, there are fewer chances that they will be drifted to a malicious page and ripped off. Also, ask them to be cautious of misspellings or sites using a different domain, for example, .xyz instead of .com. The offers and sales on these sites may look decorated and enticing, but that's how they lure victims in. </p>\n<h3 id=\"2-say-no-to-public-wifi\" style=\"position:relative;\"><a href=\"#2-say-no-to-public-wifi\" aria-label=\"2 say no to public wifi permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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. Say no to public wifi.</h3>\n<p>Ask your consumers not to use public networks to make online transactions. That’s not how they should do safe shopping online. Freely available wifi hotspots at a coffee shop or in the airport are red flags. There may be hackers spying on them and waiting for the least opportunity to steal your consumer's name, address, and credit card information. </p>\n<h3 id=\"3-an-extra-vpn-security-could-help\" style=\"position:relative;\"><a href=\"#3-an-extra-vpn-security-could-help\" aria-label=\"3 an extra vpn security could help permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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. An extra VPN security could help.</h3>\n<p>If your consumers cannot resist shopping without shipping that hot chocolate, advise them to install a VPN (virtual private network) on their mobile devices, or computers for that matter, before connecting on a public wifi network. VPN creates an encrypted connection between the consumer's device and the VPN server, so any message sent while browsing the internet is safe from hackers. </p>\n<h3 id=\"4-strong-password-hygiene\" style=\"position:relative;\"><a href=\"#4-strong-password-hygiene\" aria-label=\"4 strong password hygiene permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>4. Strong password hygiene.</h3>\n<p>Another online shopping tip is to mandate your consumers to use strong, unique passwords. If the hacker has the password to an account, they can use the stored payment data to rip you off. Here are a few <a href=\"https://www.business2community.com/cybersecurity/password-security-best-practices-in-2020-02282074\">password protection tips</a> to keep consumers' accounts safe. </p>\n<ul>\n<li>Ask them to use long passwords. For example, it can be a complex set of at least eight lowercase and uppercase letters, numbers, and symbols.</li>\n<li>Ask them not to use passwords that are easy to guess, like birthdays, favorite food. Also, dictionary words are a big no. </li>\n<li>Ask them not to use the same password for multiple accounts. </li>\n<li>Ask them not to share their passwords with anyone else.</li>\n<li>Ask them to keep changing their passwords regularly. </li>\n</ul>\n<h3 id=\"5-check-statements-regularly\" style=\"position:relative;\"><a href=\"#5-check-statements-regularly\" aria-label=\"5 check statements regularly permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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. Check statements regularly.</h3>\n<p>Holidays are a season of shopping sprees. Therefore, remind your forgetful consumers to regularly look for fraudulent charges on their credit card, debit card, and other accounts online. When they receive a text message or email about a new charge, ask them to check if they recognize the charge. </p>\n<h3 id=\"6-go-through-the-retailers-security-policy\" style=\"position:relative;\"><a href=\"#6-go-through-the-retailers-security-policy\" aria-label=\"6 go through the retailers security policy permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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. Go through the retailer's security policy.</h3>\n<p>Consumers should be aware of what happens to their data that they leave on a website. Some vendors also create accounts to save consumers' credit card information for future transactions. Therefore, encourage your consumers to find out the retailer's privacy policy. It will help them avoid the hassles of fraud and prevent those impulse buys. Always one of the best online shopping tips. </p>\n<h3 id=\"7-steer-clear-of-holiday-shopping-scams\" style=\"position:relative;\"><a href=\"#7-steer-clear-of-holiday-shopping-scams\" aria-label=\"7 steer clear of holiday shopping scams permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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. Steer clear of holiday shopping scams.</h3>\n<p>We mean <a href=\"https://www.loginradius.com/blog/phishing-for-identity/\">phishing</a> scams. For instance, your consumers may receive emails with tempting offers for the holidays that they cannot say no to. Email from unknown vendors often carries viruses and malware. It is always better to play safe and delete emails from suspicious vendors without opening them. </p>\n<h3 id=\"8-download-apps-from-trusted-sources\" style=\"position:relative;\"><a href=\"#8-download-apps-from-trusted-sources\" aria-label=\"8 download apps from trusted sources permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>8. Download apps from trusted sources.</h3>\n<p>It is crucial that your consumers download applications only from trusted platforms like the App Store, the Google Play Store, Amazon App Store, etc. Most of the applications out there ask consumers for various permissions during installation. Encourage your consumers to read those carefully and only check boxes that make sense to them. They can also read reviews and ratings from existing consumers before making any decision. </p>\n<p><a href=\"https://www.loginradius.com/resource/omnichannel-retailer-customer-experience\"><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,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABbUlEQVQY0z2RO08CURCFNxawbIgxagQK0ERAYB/swnJ57vKGIEgijfFRGDtj1MpKsbEx/hGtTLTyUVhoY2zsbEz8KcfZu2Lx3Zlk5p6cmRF88QocpJUK/AmLsN2YdOOk7iBGS5DkBuYL65jTmvApLYiJKsRYGeJfj+A2W0iyKgxWgGzkCBNarohsuYaAVoM3WnZF6aNfayNS34Tc2oDERhC1LqS4W3eEBTepwLTb6A/6aHY6aBEZ04Sq6whqNrxU95K7WXIVzHSJDgLZLiKshxDlC0aHT8gFncdxqDALhVIJmRzjqLoBJa2TwyoXnDhwCJk9LBbXEC4MMC3X4Vku/a+FC0q0t1g6j5SsQM2QMxrZyOU5AdXmdSGk42B8ha/vH9w+vOD67hE39094+/jE8+s7ZpQGPDSF4B7EQorZ0E2G3nCE1uoa8lYdbYrhbJsay5haYsgPd7F/eontozG2Ds84eycX2Dk+50f0krlfoATGB3kQsskAAAAASUVORK5CYII='); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"WP-omnichannel-ret\"\n        title=\"WP-omnichannel-ret\"\n        src=\"/static/65a54263b59b27c00e863e6b1891c5a6/e5715/WP-omnichannel-ret.png\"\n        srcset=\"/static/65a54263b59b27c00e863e6b1891c5a6/a6d36/WP-omnichannel-ret.png 650w,\n/static/65a54263b59b27c00e863e6b1891c5a6/e5715/WP-omnichannel-ret.png 768w,\n/static/65a54263b59b27c00e863e6b1891c5a6/81501/WP-omnichannel-ret.png 2886w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<h3 id=\"9-read-return-policies\" style=\"position:relative;\"><a href=\"#9-read-return-policies\" aria-label=\"9 read return policies permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>9. Read return policies.</h3>\n<p>Another useful online shopping tip is to encourage your consumers to always go through return policies before hitting \"buy.\" Since they are buying items that are not tried and tested, there are always chances they may not be the right fit as they would at a local store. You consumers should be well aware in advance of how their vendors handle returns. </p>\n<h3 id=\"10-use-credit-cards-instead-of-debit-cards\" style=\"position:relative;\"><a href=\"#10-use-credit-cards-instead-of-debit-cards\" aria-label=\"10 use credit cards instead of debit cards permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>10. Use credit cards instead of debit cards.</h3>\n<p>Wherever possible, ask your consumers to prefer credit cards as their choice of payment over debit. The reason being, consumers can withhold credit card payments from a vendor in case of any dispute. Also, depending on your consumers' country, they need to pay only a small amount of the entire fraudulent charge and mitigate the fraud. </p>\n<p>But with a debit card, the money is deducted from your consumer's bank account. Though it is possible to recoup the fraudulent charges eventually, that's a difficult and a very long shot. </p>\n<h3 id=\"11-dont-respond-to-pop-ups\" style=\"position:relative;\"><a href=\"#11-dont-respond-to-pop-ups\" aria-label=\"11 dont respond to pop ups permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>11. Don't respond to pop-ups.</h3>\n<p>Ask your consumers to ignore all pop-up offers and deals. They should not respond or click on the links. For example, if a pop-up says, \"clean your infected computer,\" ensure that they ignore it. They are all scams. </p>\n<h3 id=\"12-use-secure-websites\" style=\"position:relative;\"><a href=\"#12-use-secure-websites\" aria-label=\"12 use secure websites permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>12. Use secure websites.</h3>\n<p>There is a small icon in the left-hand corner of any website's URL bar. URLs that start with \"HTTPS\" are secure sites, and they encrypt all data that consumers share on the site. It is another best online shopping tip that your consumers exercise caution before providing their financial information on sites without the \"s\". </p>\n<h3 id=\"13-keep-receipts\" style=\"position:relative;\"><a href=\"#13-keep-receipts\" aria-label=\"13 keep receipts permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>13. Keep receipts.</h3>\n<p>When your consumers shop anything online, they receive a sales confirmation after the purchase, mostly in the form of emails. Ask them not to delete these emails until the item has arrived and they are satisfied with the product. It is an important piece of information that they require to call consumer service or return a purchase. </p>\n<h3 id=\"14-dont-accept-virtual-gifts\" style=\"position:relative;\"><a href=\"#14-dont-accept-virtual-gifts\" aria-label=\"14 dont accept virtual gifts permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>14. Don't accept virtual gifts.</h3>\n<p>Fake websites offer free gifts to consumers to entice them into sharing their banking details. Another online shopping tip for consumers is never to accept free gifts online. Virtual gift cards have the highest risk of <a href=\"https://www.loginradius.com/blog/2019/10/cybersecurity-attacks-business/\">cyber fraud</a>. </p>\n<h3 id=\"15-use-an-extra-email-account\" style=\"position:relative;\"><a href=\"#15-use-an-extra-email-account\" aria-label=\"15 use an extra email account permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>15. Use an extra email account.</h3>\n<p>This is an interesting online shopping tip that can save your consumers the hassles of financial or identity fraud. Ask them to use a separate email address for shopping altogether. This way, they can steer clear of compromising their personal information. P.S. Remind them to use passwords for each account.</p>\n<h3 id=\"16-never-leave-devices-unlocked\" style=\"position:relative;\"><a href=\"#16-never-leave-devices-unlocked\" aria-label=\"16 never leave devices unlocked permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>16. Never leave devices unlocked.</h3>\n<p>It is a good practice to keep devices locked at all times. Prying eyes can be anywhere—it only takes seconds for someone to watch over the shoulder and get hold of your consumers' passwords. Add a <a href=\"https://www.loginradius.com/multi-factor-authentication/\">second layer of authentication</a> (MFA), for instance, a PIN or passcode, before letting your consumers in. </p>\n<h3 id=\"17-do-not-overshare\" style=\"position:relative;\"><a href=\"#17-do-not-overshare\" aria-label=\"17 do not overshare permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>17. Do not overshare.</h3>\n<p>No genuine website asks for consumers' Social Security number (SSN) to complete a transaction. So, if they are doing it, they are most certainly phishing attempts. Encourage your consumers to call the consumer service for more details before handing out sensitive information. </p>\n<h2 id=\"how-loginradius-can-help-in-securing-your-data-safe-while-providing-a-delightful-digital-experience\" style=\"position:relative;\"><a href=\"#how-loginradius-can-help-in-securing-your-data-safe-while-providing-a-delightful-digital-experience\" aria-label=\"how loginradius can help in securing your data safe while providing a delightful digital experience permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How LoginRadius Can Help in Securing Your Data Safe While Providing a Delightful Digital Experience</h2>\n<p>As an organization, it is also crucial that you take similar steps to minimize your consumers' cyber liabilities. Using the LoginRadius <a href=\"https://www.loginradius.com/blog/2019/06/customer-identity-and-access-management/\">consumer identity and access management solution</a>, you can provide them the safest and most secure digital experience while looking out to implement the best online shopping tips. </p>\n<p>Here how you get personalized marketing, 360-degree customer profiling, data safety, and <a href=\"https://www.loginradius.com/blog/2020/04/omnichannel-customer-experience/\">omnichannel experience</a> for your consumers. </p>\n<ul>\n<li><strong>Improved registration and login options</strong>: The identity management platform allows consumers to register using <a href=\"https://www.loginradius.com/blog/2020/10/loginradius-launches-passwordless-login-with-magic-link-or-otp/\">Magic Link via Emai</a>l, OTP Login via Email, or OTP Login via Phone. This way, consumers need not remember passwords to log in anymore. </li>\n<li><strong>360-degree view of consumers</strong>: It offers a 360-degree view of consumer demographics, so you can plan your next move based on their behavior and personal preferences while building better relationships.</li>\n<li><strong>Social login</strong>: Social login allows consumers to authenticate with a social media account. It helps your consumers skip the hassles of the registration and end up with a seamless consumer onboarding. </li>\n<li><strong>Single sign-on (SSO)</strong>: It allows consumers to access multiple accounts with a <a href=\"https://www.loginradius.com/blog/2019/05/what-is-single-sign-on/\">single set of credentials</a>, offering ease of authentication and a frictionless omnichannel experience. </li>\n<li><strong>Multi-factor authentication (MFA):</strong> It offers multiple layers of authentication during the login process to ensure that the right consumers log in. </li>\n<li><strong>Security compliance</strong>: LoginRadius adheres to international standards like the E.U.'s GDPR and <a href=\"https://www.loginradius.com/blog/identity/how-loginradius-helps-enterprises-stay-ccpa-compliant-in-2020/\">California's CCPA</a>. Other certifications include PCI DSS, ISO 27001:2013, ISO 27017:2015, ISO/IEC 27018:2019, U.S. Privacy Shield, NIST Cybersecurity Framework, and more. </li>\n</ul>\n<h2 id=\"conclusion\" style=\"position:relative;\"><a href=\"#conclusion\" aria-label=\"conclusion permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Conclusion</h2>\n<p>Safe online shopping tips are essential to providing excellent experiences to both <a href=\"https://www.loginradius.com/industry-retail-and-ecommerce/\">consumers and retailers alike</a>. It is a smart approach to know your immediate threats, so there is no room for mistakes. </p>\n<p>The tips and solutions discussed above can protect your consumers from underlying threats this holiday season. Have a great shopping spree! </p>\n<h2 id=\"faqs\" style=\"position:relative;\"><a href=\"#faqs\" aria-label=\"faqs permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>FAQs</h2>\n<p>Q1. Why is security crucial during Black Friday and Cyber Monday shopping?</p>\n<p>A: These events attract cybercriminals; securing data is vital to prevent scams and breaches.</p>\n<p>Q2. What are common online shopping threats mentioned in the blog?</p>\n<p>A: DDoS attacks, card fraud, phishing scams, and consumer journey hijacking.</p>\n<p>Q3. How can consumers protect themselves while shopping online?</p>\n<p>A: Tips include using trusted sites, avoiding public Wi-Fi, and employing VPNs.</p>\n<p>Q4. What's the role of multi-factor authentication in online shopping security?</p>\n<p>A: It adds an extra layer, ensuring the right users access their accounts.</p>\n<p>Q5. How can businesses enhance data security during these events?</p>\n<p>A: Solutions like LoginRadius offer secure registration, 360-degree consumer views, and multi-factor authentication.</p>\n<p><a href=\"https://www.loginradius.com/book-a-demo/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABdElEQVQY002RO0/CUBzFG6PtbZWHCAmRmBB5P8vDII9SSC0omog4oAEGjZMO6OKEuLjoJ2Fx0cSBwUQnXZxcHPwux38LJA7nNvfec8+5v1tOCCiwpbbhye2BxbYgBMtgIRVioDRRsARGXxZUzLlEHmehBaesQ4rrEMPViYf2DR9nDGKkChbVICVqsMt1WJI1sHCFwhUsUIFohJH49TxECvRUjhDW2mAbB5iP6hB8hUkhiRPN5KIZYJdrsEYrcCSpmQqMm6/m9ylUhSulY7N5ivROB3L9GOlGF3Ktbc4zuz341UPw/uIk0ESbBjoSGlYIx8BfzjSwVmyCEYEUUmCPa3Bnd+hwC75yC95S05SxbolU/iEbOCFCpDexEfIioTNCNd6Tp6IlMnNuGeeDe3z//OLx5RWj5zFGT2O8fXxh/P4Ja6w6vSEFCnTIlW2YiDzhzX7ATFKojDlvjpBPcDF4QPdyiG5/iE7/BmfXd+hd3VKpCoG8fzxWw2+c+yTpAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"book-a-demo-loginradius\"\n        title=\"book-a-demo-loginradius\"\n        src=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png\"\n        srcset=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/a6d36/book-a-demo-loginradius.png 650w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png 768w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/63ff0/book-a-demo-loginradius.png 2887w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"November 24, 2021","updated_date":null,"description":"Many people prefer shopping online these days rather than going to a conventional store. Therefore, securing the data of your customers online is an integral part of protecting the organisation as a whole. Your job is to let them shop with some of the best online shopping tips with confidence.","title":"17 Tips to Avoid Shopping Scams on Black Friday & Cyber Monday","tags":["data protection","cybersecurity","ciam solution","mfa"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.408450704225352,"src":"/static/e4a8c01a110de179f2a7cb45e98dce44/9a31d/17-online-shopping-tips-for-consumer.jpg","srcSet":"/static/e4a8c01a110de179f2a7cb45e98dce44/f836f/17-online-shopping-tips-for-consumer.jpg 200w,\n/static/e4a8c01a110de179f2a7cb45e98dce44/2244e/17-online-shopping-tips-for-consumer.jpg 400w,\n/static/e4a8c01a110de179f2a7cb45e98dce44/9a31d/17-online-shopping-tips-for-consumer.jpg 767w","sizes":"(max-width: 767px) 100vw, 767px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.jpg"}}}},{"node":{"excerpt":"What is a Smart Contract? Smart Contracts 📝 are simple programs stored on a blockchain network. You can say it's like an agreement between…","fields":{"slug":"/engineering/guest-post/ethereum-smart-contract-tutorial/"},"html":"<h2 id=\"what-is-a-smart-contract\" style=\"position:relative;\"><a href=\"#what-is-a-smart-contract\" aria-label=\"what is a smart contract permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What is a Smart Contract?</h2>\n<p><a href=\"https://en.wikipedia.org/wiki/Smart_contract\"><strong>Smart Contracts</strong></a> 📝 are simple programs stored on a blockchain network.</p>\n<p>You can say it's like an agreement between two people in the form of computer code. The transactions in a smart contract are processed by the blockchain and stored as a <strong>42 character hex address</strong> with the prefix <code>\"0x\"</code>). All of which means that they can be sent automatically without needing a third party.</p>\n<p><strong>🤔 Remember:</strong> They're stored in a public database. And once a smart contract is deployed, it cannot be changed.</p>\n<h2 id=\"what-is-solidity\" style=\"position:relative;\"><a href=\"#what-is-solidity\" aria-label=\"what is solidity permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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 Solidity?</h2>\n<p>Solidity is one of the most popular languages used for building smart contracts on Ethereum Blockchain. It's also an object-oriented programming language.</p>\n<h2 id=\"build-your-first-smart-contract\" style=\"position:relative;\"><a href=\"#build-your-first-smart-contract\" aria-label=\"build your first smart contract permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Build Your First Smart Contract</h2>\n<ol>\n<li>Open <strong><code>Remix</code> IDE</strong> from <a href=\"https://remix.ethereum.org/\">here</a>.</li>\n<li>Click on <code>Sure</code> and then <code>Done</code>.</li>\n<li>Under <code>default_workshop</code>, click on <code>create new file</code>.</li>\n<li>Rename it as <code>Hostel.sol</code>.</li>\n</ol>\n<p>Now you're ready to write your first <strong>Smart Contract</strong>. 🤩</p>\n<h3 id=\"contract-code\" style=\"position:relative;\"><a href=\"#contract-code\" aria-label=\"contract code permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Contract Code</h3>\n<ol>\n<li>You have to provide the <code>solidity version</code> in the smart contract:</li>\n</ol>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"0\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">pragma solidity ^</span><span class=\"mtk7\">0.5</span><span class=\"mtk1\">.</span><span class=\"mtk7\">16</span><span class=\"mtk1\">;</span></span></code></pre>\n<ol start=\"2\">\n<li>Now create the main contract named <code>Hostel</code>:</li>\n</ol>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"1\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">contract </span><span class=\"mtk12\">Hostel</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></code></pre>\n<ol start=\"3\">\n<li>Now, inside the <code>contract Hostel{...}</code> follow the steps below.</li>\n<li>Create some variables where the smart contract will store the <a href=\"https://ethereum.stackexchange.com/questions/20874/payable-function-in-solidity\"><strong>payable</strong></a> <code>address</code> (42 char hex string with prefix : <code>\"0x\"</code>) of the <code>Landlord</code> &#x26; the <code>Tenant</code>.</li>\n</ol>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"2\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">    address payable tenant;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    address payable landlord;</span></span></code></pre>\n<ol start=\"5\">\n<li>Create some <a href=\"https://ethereum.stackexchange.com/questions/19380/external-vs-public-best-practices\"><strong>public</strong></a> variables where the smart contract will store some integer values. For this, there's a data type called <code>uint</code> (256-bit unsigned integer)</li>\n</ol>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"3\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">    uint </span><span class=\"mtk4\">public</span><span class=\"mtk1\"> no_of_rooms = </span><span class=\"mtk7\">0</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    uint </span><span class=\"mtk4\">public</span><span class=\"mtk1\"> no_of_agreement = </span><span class=\"mtk7\">0</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    uint </span><span class=\"mtk4\">public</span><span class=\"mtk1\"> no_of_rent = </span><span class=\"mtk7\">0</span><span class=\"mtk1\">;</span></span></code></pre>\n<ol start=\"6\">\n<li>Now, create a <code>structure</code> to store details of each Hostel room like <code>Hostel no.</code>, <code>Hostel name</code>, <code>Hostel address</code>, <code>No of total agreements</code>, <code>Monthly rent</code>, <code>One-time security deposit</code>, <code>Last agreement sign time</code>, <code>Vacancy</code>, <code>Landlord address</code>, and <code>Current Tenant Address</code>.</li>\n</ol>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"4\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">    struct </span><span class=\"mtk12\">Room</span><span class=\"mtk1\">{</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint roomid;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint agreementid;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        string roomname;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        string roomaddress;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint rent_per_month;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint securityDeposit;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint timestamp;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        bool vacant;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        address payable landlord;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        address payable currentTenant;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    }</span></span></code></pre>\n<ol start=\"7\">\n<li><code>map</code> previous <code>structure</code> with a <code>uint</code>(named : <code>roomid</code>).</li>\n</ol>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"5\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">mapping(uint =&gt; </span><span class=\"mtk12\">Room</span><span class=\"mtk1\">) </span><span class=\"mtk4\">public</span><span class=\"mtk1\"> </span><span class=\"mtk12\">Room_by_No</span><span class=\"mtk1\">;</span></span></code></pre>\n<ol start=\"8\">\n<li>Similar to the above, create a <code>structure</code> for each <code>Rental Agreement</code> and map that with a <code>uint</code>(named: <code>agreementid</code>). This will store details like: <code>Hostel no.</code>, <code>Agreement No</code>, <code>Hostel name</code>, <code>Hostel address</code>, <code>Monthly rent</code>, <code>One-time security deposit</code>,<code>Lockin Period</code>, <code>Agreement sign time</code>, <code>Landlord address</code>, and <code>Tenant Address</code>.</li>\n</ol>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"6\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">    struct </span><span class=\"mtk12\">RoomAgreement</span><span class=\"mtk1\">{</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint roomid;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint agreementid;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        string </span><span class=\"mtk12\">Roomname</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        string </span><span class=\"mtk12\">RoomAddresss</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint rent_per_month;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint securityDeposit;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint lockInPeriod;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint timestamp;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        address payable tenantAddress;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        address payable landlordAddress;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    }</span></span></code></pre>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"7\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">mapping(uint =&gt; </span><span class=\"mtk12\">RoomAgreement</span><span class=\"mtk1\">) </span><span class=\"mtk4\">public</span><span class=\"mtk1\"> </span><span class=\"mtk12\">RoomAgreement_by_No</span><span class=\"mtk1\">;</span></span></code></pre>\n<ol start=\"9\">\n<li>Now, create a <code>structure</code> for each <code>Rent</code> payment and map that with a <code>uint</code>. This will store details like: <code>Rent No.</code>, <code>Hostel no.</code>, <code>Agreement No</code>, <code>Hostel name</code>, <code>Hostel address</code>, <code>Monthly rent</code>, <code>Rent payment time</code>, <code>Landlord address</code>, and <code>Tenant Address</code>.</li>\n</ol>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"8\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">    struct </span><span class=\"mtk12\">Rent</span><span class=\"mtk1\">{</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint rentno;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint roomid;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint agreementid;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        string </span><span class=\"mtk12\">Roomname</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        string </span><span class=\"mtk12\">RoomAddresss</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint rent_per_month;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint timestamp;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        address payable tenantAddress;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        address payable landlordAddress;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    }</span></span></code></pre>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"9\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">   mapping(uint =&gt; </span><span class=\"mtk12\">Rent</span><span class=\"mtk1\">) </span><span class=\"mtk4\">public</span><span class=\"mtk1\"> </span><span class=\"mtk12\">Rent_by_No</span><span class=\"mtk1\">;</span></span></code></pre>\n<ol start=\"10\">\n<li>\n<p>Create some <a href=\"https://ethereum.stackexchange.com/questions/48971/what-are-function-modifiers\"><strong>modifiers</strong></a> that will help you verify a few things before running a function.</p>\n<p>Here <code>require(...);</code> means that if the given condition is not satisfied, the function won't execute, and the given string will appear as an error code.</p>\n</li>\n</ol>\n<p>The following will check if the message sender is the landlord.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"10\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">    modifier onlyLandlord(uint </span><span class=\"mtk12\">_index</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk4\">require</span><span class=\"mtk1\">(msg.sender == </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].landlord, </span><span class=\"mtk8\">&quot;Only landlord can access this&quot;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk12\">_</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    }</span></span></code></pre>\n<p>The following will check if the message sender is anyone except the landlord.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"11\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">    modifier notLandLord(uint </span><span class=\"mtk12\">_index</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk4\">require</span><span class=\"mtk1\">(msg.sender != </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].landlord, </span><span class=\"mtk8\">&quot;Only Tenant can access this&quot;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk12\">_</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    }</span></span></code></pre>\n<p>The following will check whether the room is vacant or not.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"12\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">    modifier </span><span class=\"mtk12\">OnlyWhileVacant</span><span class=\"mtk1\">(uint </span><span class=\"mtk12\">_index</span><span class=\"mtk1\">){</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk4\">require</span><span class=\"mtk1\">(</span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].vacant == </span><span class=\"mtk4\">true</span><span class=\"mtk1\">, </span><span class=\"mtk8\">&quot;Room is currently Occupied.&quot;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk12\">_</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    }</span></span></code></pre>\n<p>The following will check whether the tenant has enough <code>Ether</code> in his wallet to pay the rent.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"13\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">    modifier enoughRent(uint </span><span class=\"mtk12\">_index</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk4\">require</span><span class=\"mtk1\">(msg.value &gt;= uint(</span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].rent_per_month), </span><span class=\"mtk8\">&quot;Not enough Ether in your wallet&quot;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk12\">_</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    }</span></span></code></pre>\n<p>The following will check whether the tenant has enough <code>Ether</code> in his wallet to pay a one-time security deposit and one month's rent in advance.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"14\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">    modifier enoughAgreementfee(uint </span><span class=\"mtk12\">_index</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk4\">require</span><span class=\"mtk1\">(msg.value &gt;= uint(uint(</span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].rent_per_month) + uint(</span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].securityDeposit)), </span><span class=\"mtk8\">&quot;Not enough Ether in your wallet&quot;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk12\">_</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    }</span></span></code></pre>\n<p>The following will check whether the tenant's address is the same as who has signed the previous rental agreement.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"15\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">    modifier sameTenant(uint </span><span class=\"mtk12\">_index</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk4\">require</span><span class=\"mtk1\">(msg.sender == </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].currentTenant, </span><span class=\"mtk8\">&quot;No previous agreement found with you & landlord&quot;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk12\">_</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    }</span></span></code></pre>\n<p>The following will check whether any time is left for the agreement to end.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"16\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">    modifier </span><span class=\"mtk12\">AgreementTimesLeft</span><span class=\"mtk1\">(uint </span><span class=\"mtk12\">_index</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint </span><span class=\"mtk12\">_AgreementNo</span><span class=\"mtk1\"> = </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].agreementid;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint time = </span><span class=\"mtk10\">RoomAgreement_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_AgreementNo</span><span class=\"mtk1\">].timestamp + </span><span class=\"mtk10\">RoomAgreement_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_AgreementNo</span><span class=\"mtk1\">].lockInPeriod;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk4\">require</span><span class=\"mtk1\">(now &lt; time, </span><span class=\"mtk8\">&quot;Agreement already Ended&quot;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk12\">_</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    }</span></span></code></pre>\n<p>The following will check whether 365 days have passed after the last agreement has been created.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"17\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">    modifier </span><span class=\"mtk12\">AgreementTimesUp</span><span class=\"mtk1\">(uint </span><span class=\"mtk12\">_index</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint </span><span class=\"mtk12\">_AgreementNo</span><span class=\"mtk1\"> = </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].agreementid;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint time = </span><span class=\"mtk10\">RoomAgreement_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_AgreementNo</span><span class=\"mtk1\">].timestamp + </span><span class=\"mtk10\">RoomAgreement_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_AgreementNo</span><span class=\"mtk1\">].lockInPeriod;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk4\">require</span><span class=\"mtk1\">(now &gt; time, </span><span class=\"mtk8\">&quot;Time is left for contract to end&quot;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk12\">_</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    }</span></span></code></pre>\n<p>The following will check whether 30 days have passed after the last rent payment.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"18\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">    modifier </span><span class=\"mtk12\">RentTimesUp</span><span class=\"mtk1\">(uint </span><span class=\"mtk12\">_index</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint time = </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].timestamp + </span><span class=\"mtk7\">30</span><span class=\"mtk1\"> days;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk4\">require</span><span class=\"mtk1\">(now &gt;= time, </span><span class=\"mtk8\">&quot;Time left to pay Rent&quot;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk12\">_</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    }</span></span></code></pre>\n<ol start=\"11\">\n<li>Now, create some <a href=\"https://docs.soliditylang.org/en/v0.4.24/introduction-to-smart-contracts.html\"><strong>functions</strong></a></li>\n</ol>\n<p>The following function will be used to add Rooms.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"19\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">    function addRoom(string memory </span><span class=\"mtk12\">_roomname</span><span class=\"mtk1\">, string memory </span><span class=\"mtk12\">_roomaddress</span><span class=\"mtk1\">, uint </span><span class=\"mtk12\">_rentcost</span><span class=\"mtk1\">, uint  </span><span class=\"mtk12\">_securitydeposit</span><span class=\"mtk1\">) </span><span class=\"mtk4\">public</span><span class=\"mtk1\"> {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk4\">require</span><span class=\"mtk1\">(msg.sender != address(</span><span class=\"mtk7\">0</span><span class=\"mtk1\">));</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        no_of_rooms ++;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        bool </span><span class=\"mtk12\">_vacancy</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=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[no_of_rooms] = </span><span class=\"mtk12\">Room</span><span class=\"mtk1\">(no_of_rooms,</span><span class=\"mtk7\">0</span><span class=\"mtk1\">,</span><span class=\"mtk12\">_roomname</span><span class=\"mtk1\">,</span><span class=\"mtk12\">_roomaddress</span><span class=\"mtk1\">, </span><span class=\"mtk12\">_rentcost</span><span class=\"mtk1\">,</span><span class=\"mtk12\">_securitydeposit</span><span class=\"mtk1\">,</span><span class=\"mtk7\">0</span><span class=\"mtk1\">,</span><span class=\"mtk12\">_vacancy</span><span class=\"mtk1\">, msg.sender, address(</span><span class=\"mtk7\">0</span><span class=\"mtk1\">)); </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    }</span></span></code></pre>\n<p>Now, create a function to sign the rental agreement for a hostel room between the landlord and a tenant.</p>\n<p>Before creating the <code>signAgreement</code> function, remember the following:</p>\n<ul>\n<li>The function will only execute if the user is <code>Tenant</code>, meaning that the user's address and the landlord's address don't match.</li>\n<li>The function will only execute if the user has enough ether (payable 'ether') in their Ethereum wallet.(Enough ether means = one-time security deposit + 1st month's rent)</li>\n</ul>\n<p>Let's use those modifiers here, so that:</p>\n<ul>\n<li>The function <code>signAgreement</code> will only execute only if the said room is vacant and the tenant has enough ether in their wallet.</li>\n</ul>\n<p>Remember those modifiers in point no.10? Use those modifiers here to execute the following function.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"20\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">    function signAgreement(uint </span><span class=\"mtk12\">_index</span><span class=\"mtk1\">) </span><span class=\"mtk4\">public</span><span class=\"mtk1\"> payable notLandLord(</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">) enoughAgreementfee(</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">) </span><span class=\"mtk12\">OnlyWhileVacant</span><span class=\"mtk1\">(</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">) {</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk4\">require</span><span class=\"mtk1\">(msg.sender != address(</span><span class=\"mtk7\">0</span><span class=\"mtk1\">));</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        address payable </span><span class=\"mtk12\">_landlord</span><span class=\"mtk1\"> = </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].landlord;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint totalfee = </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].rent_per_month + </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].securityDeposit;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk12\">_landlord</span><span class=\"mtk1\">.transfer(totalfee);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        no_of_agreement++;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].currentTenant = msg.sender;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].vacant = </span><span class=\"mtk4\">false</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].timestamp = block.timestamp;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].agreementid = no_of_agreement;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk10\">RoomAgreement_by_No</span><span class=\"mtk1\">[no_of_agreement]=</span><span class=\"mtk12\">RoomAgreement</span><span class=\"mtk1\">(</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">,no_of_agreement,</span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].roomname,</span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].roomaddress,</span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].rent_per_month,</span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].securityDeposit,</span><span class=\"mtk7\">365</span><span class=\"mtk1\"> days,block.timestamp,msg.sender,</span><span class=\"mtk12\">_landlord</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        no_of_rent++;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk10\">Rent_by_No</span><span class=\"mtk1\">[no_of_rent] = </span><span class=\"mtk12\">Rent</span><span class=\"mtk1\">(no_of_rent,</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">,no_of_agreement,</span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].roomname,</span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].roomaddress,</span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].rent_per_month,now,msg.sender,</span><span class=\"mtk12\">_landlord</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    }</span></span></code></pre>\n<p>Now, create a function that the tenant will use to pay the monthly rent to the landlord.</p>\n<p>Before creating the <code>payRent</code> function, remember the following:</p>\n<ul>\n<li>The function will only execute if the user's address and previous tenant's address both are the same, meaning that the user can only pay rent if he/she has signed an agreement with the landlord within the last 365 days.</li>\n<li>The function will only execute if the tenant had paid his/her previous rent more than a month ago.</li>\n<li>The function will only execute if the user has enough ether (payable 'ether') in his/her Ethereum wallet. (enough ether = enough room rent).</li>\n</ul>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"21\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">    function payRent(uint </span><span class=\"mtk12\">_index</span><span class=\"mtk1\">) </span><span class=\"mtk4\">public</span><span class=\"mtk1\"> payable sameTenant(</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">) </span><span class=\"mtk12\">RentTimesUp</span><span class=\"mtk1\">(</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">) enoughRent(</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">){</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk4\">require</span><span class=\"mtk1\">(msg.sender != address(</span><span class=\"mtk7\">0</span><span class=\"mtk1\">));</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        address payable </span><span class=\"mtk12\">_landlord</span><span class=\"mtk1\"> = </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].landlord;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        uint </span><span class=\"mtk12\">_rent</span><span class=\"mtk1\"> = </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].rent_per_month;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk12\">_landlord</span><span class=\"mtk1\">.transfer(</span><span class=\"mtk12\">_rent</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].currentTenant = msg.sender;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].vacant = </span><span class=\"mtk4\">false</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        no_of_rent++;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk10\">Rent_by_No</span><span class=\"mtk1\">[no_of_rent] = </span><span class=\"mtk12\">Rent</span><span class=\"mtk1\">(no_of_rent,</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">,</span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].agreementid,</span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].roomname,</span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].roomaddress,</span><span class=\"mtk12\">_rent</span><span class=\"mtk1\">,now,msg.sender,</span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].landlord);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    }</span></span></code></pre>\n<p>Let's create a function that the landlord will use to mark an agreement complete.</p>\n<p>Before creating <code>agreementCompleted</code> function, remember the following:</p>\n<ul>\n<li>The function will only execute if the user's address and the landlord's address are the same.</li>\n<li>\n<p>The function will only execute if the tenant had signed that agreement more than a year ago.</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"22\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">function agreementCompleted(uint </span><span class=\"mtk12\">_index</span><span class=\"mtk1\">) </span><span class=\"mtk4\">public</span><span class=\"mtk1\"> payable onlyLandlord(</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">) </span><span class=\"mtk12\">AgreementTimesUp</span><span class=\"mtk1\">(</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">){</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk4\">require</span><span class=\"mtk1\">(msg.sender != address(</span><span class=\"mtk7\">0</span><span class=\"mtk1\">));</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk4\">require</span><span class=\"mtk1\">(</span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].vacant == </span><span class=\"mtk4\">false</span><span class=\"mtk1\">, </span><span class=\"mtk8\">&quot;Room is currently Occupied.&quot;</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].vacant = </span><span class=\"mtk4\">true</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    address payable </span><span class=\"mtk12\">_Tenant</span><span class=\"mtk1\"> = </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].currentTenant;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    uint </span><span class=\"mtk12\">_securitydeposit</span><span class=\"mtk1\"> = </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].securityDeposit;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    </span><span class=\"mtk12\">_Tenant</span><span class=\"mtk1\">.transfer(</span><span class=\"mtk12\">_securitydeposit</span><span class=\"mtk1\">);</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">}</span></span></code></pre>\n</li>\n</ul>\n<p>Let's create a function that the landlord will use to terminate an agreement.</p>\n<p>Before creating <code>agreementTerminated</code> function, remember the following:</p>\n<ul>\n<li>The function will only execute if the user's address and the landlord's address are the same.</li>\n<li>The function will only execute if the tenant had signed that agreement less than a year ago.</li>\n</ul>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"ruby\" data-index=\"23\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"><span class=\"mtk1\">    function agreementTerminated(uint </span><span class=\"mtk12\">_index</span><span class=\"mtk1\">) </span><span class=\"mtk4\">public</span><span class=\"mtk1\"> onlyLandlord(</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">) </span><span class=\"mtk12\">AgreementTimesLeft</span><span class=\"mtk1\">(</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">){</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk4\">require</span><span class=\"mtk1\">(msg.sender != address(</span><span class=\"mtk7\">0</span><span class=\"mtk1\">));</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">        </span><span class=\"mtk10\">Room_by_No</span><span class=\"mtk1\">[</span><span class=\"mtk12\">_index</span><span class=\"mtk1\">].vacant = </span><span class=\"mtk4\">true</span><span class=\"mtk1\">;</span></span>\n<span class=\"grvsc-line\"><span class=\"mtk1\">    }</span></span></code></pre>\n<h3 id=\"compile\" style=\"position:relative;\"><a href=\"#compile\" aria-label=\"compile permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Compile</h3>\n<p>Now, click on the <code>Solidity Compile</code> option in the left sidebar.</p>\n<ol>\n<li>Select compiler version <code>0.5.16+</code></li>\n<li>Then click on <code>Compile Hostel.sol</code></li>\n</ol>\n<p>Similar to as follows:</p>\n<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 740px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 194.6153846153846%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAnCAYAAAAPZ2gOAAAACXBIWXMAABYlAAAWJQFJUiTwAAAGVElEQVRIx4VWV29cRRhdhQASDzyRHm/vvfe1t6+9zWun27FT7JgkpFMcYyfGRIASSAABoUhBESDBAwIB4fcdzjd3qxOLh6Mpd+43XzlzZnTuZBPm4jzcwSLs9iS8vnG4PTn4/BMK0vcH8ggEC2rscmdhtSVg49oe7I4U/8urvu5A5zp2v/0EhvQsbOYophrzaDRPo9VeQL4wi3LlGGZmz6HB+fb0ImLxGvSGCEyWOEzmGIymKA2mUanOq7HOGa7CmJiG0zMBc3eBtjCCw2Mh1e/9aO72zTQ2isG8LhgqIhGvwOnOqQmvX0IrwuPN05sq7M4U9MYIjPzBQKNi2Ng1vB2yoS4QLiOVbcDlGYfZmkA40UQqN4NYehqZ/AwiiTp8oSoCkRqC0UnVugMluHxFuLixtDJ2+goqDTo/i+EO1WB2ZGGxJRFNtZjDRdSm5lGpzaHOfqN1Bq3pc2h3zqMzu4TcxCwCoQpCNC5tNF5HMFbXDAaiU1h76xLy8Sz05oTa1ektaOCuDoau4BlAvvXnu7C5xzWDZncBF9sFnCjlcNBIg8yll4ai3DHEgqXSbeayrpCk91Z7ql+4F+YwEqsgOd6ByZGDxRpXxqQoAqHDSFV3KIZpqPq6QKiEdKauCCwTQeYkwjREWACptI1GHc4sq51h20P2udZGzxUPPaSJwTEBizOnPIjGp1TyZ4+uIMlw/cEKglJhhv8iSFFiZIb0JRW6UKSMh5c76BTyOGiI0dPxfsjiodOVUxx1uujNDpDvvfToXN4JLDeLqGTy0JvIw0iVZ7fMdpJFqalFY3rtxFjI0+dPiTbXz2EkVkO2dJQ81HIYosFy9RSqk/MoVU6ynVM8jFNEfCSwhOgPlodQQoj5lm8maoHOR2L7AuScp3f0ikhn28hkp0mTJvPYQibXoaEy3N6Jfjp6kPWyiUdOioTsZ5UzuWb/LHu8IlkiU+Mqf9KXVqNTYYewh0IOx6rIlzoquTIhP/kDRaKkPAgwLIHmUWHkZ9M29VEeukUYnVqlZPdITPJRVKdEDMsJEa/1hvCOJ2SE2MJDqXQvZCGo1ZZSrWygjZPdUBP9aqv57jdpRVj6xHaSez0PJWcSYoJVDZPQ8URDnZo4ySsy31NoIbIURFIlFfbwm0mIPWxQPJSdRBeVR12YhuZ7fTmS1q6Xqj/q4UTfw2i0hhApEotNIUxP48xpjB5aKfNmemAh1yxyHfCKkLGJrYboIIfDHtrkbiFNzK5xjNmzGKPw6kn6g9YUDjO30goOqXEaRkdGwcRv5r6HqihZ9eHVpfvYdeN7vHztMdxbv8C2+RP2334C/cZT7GU7tv4UBvYPrP2IPatPsOvKN3iJt+brx1ZhNoaHDLo0g7uvfQvd+m94ZeNXuD5/BuODv+D54hnxLw5+8iecj/5RY+tnf3P8B3SrP0O3+TteW9iC2RAeClmOHnM4FqzhcKSOQ+Ep7AtOYi+xJ6BhX7f/RqCGvWz3B6cwxrWHow3o/WVYRnJISFHsTL5DQPW2swA2Jtxu1iD9AcIKFoZpJaRQ8v9IlTW1ETHVBNXCRI/xTjaYYgqKTkKfIWh0Sg6O3nDIMiFHT2SrUDpOGTuprtJi+ThxgsrcIInLSl16EAkLk2LSKvkayWH35ZClXGVylK90E+P5WdUXiPa5GI3IWA/yQJATI/PPHT1NbahxfA14fFrrdImMiZzl1djrFxWisPootkHNyyBfFu5hgyIODhqUA3/85E2cXbqD04trWLm4hTt3v8bGna/wznsPcePWA7y//iWu3rqPhfVPsbi0gQWuO7d8ly+MZfXA6vNQDMp5rE3Jk+MSmu03+Xy7iFPzNzE3f4sbXVc4NXcTR45fRWvxBlqdi1y3gs7MZUzkT2i33naDpcpptdtk/TzfMytoti6ocZv9RmuZBi6o/jQN1RtLal2Da7K5owODoyHfwtnzDPnMGq5c+xh3P3iMrXvf4UNic+sx3l19pNp7H/2A5ZVNzC/eZsib20Ie0sMI3zSJZJu3XItq3eS4wcufLU+D9GOJlvouc6l0RyGdmVEK36eNUuwuDw1kvci9QPoDRNScPEJL5SOQh2o+32HuOigUZ9TbXHs5RKt8V5/o0+b/MHzrWbpCLLkfnBQf71rezT1iv+hG672xNU9DQ16zbwjR88Hcfzu8BX0YIYblAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"Compiler\" title=\"Compiler\" src=\"/static/bc558b256541ec86d2c0eb8e80ec9f12/50383/img1.png\" srcset=\"/static/bc558b256541ec86d2c0eb8e80ec9f12/a6d36/img1.png 650w,\n/static/bc558b256541ec86d2c0eb8e80ec9f12/50383/img1.png 740w\" sizes=\"(max-width: 740px) 100vw, 740px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n<h3 id=\"deploy\" style=\"position:relative;\"><a href=\"#deploy\" aria-label=\"deploy permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Deploy</h3>\n<p>Click on the <code>Deploy &#x26; Run Transactions</code> option in the left sidebar.</p>\n<ol>\n<li>Choose <code>Environment</code> > <code>JavaScript VM (London)</code></li>\n<li>Now click on <code>Deploy</code></li>\n</ol>\n<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 740px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 194.6153846153846%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAnCAYAAAAPZ2gOAAAACXBIWXMAABYlAAAWJQFJUiTwAAAFlElEQVRIx41WyXLbRhDlIf+QSmJxAXeAK0AsBAmCOyWS4iIpkizL8qb4YKeiSjm3nFI5pirH3PIx+ZFUqpL/eOluEBRIy8uha2YamDfT3a+7J6Y6cyj9J1BrfeRyDsoVH5VqF6VyB1qpI+ty2Ze1fKvcf+P/yrTOF1zS+cjS/thXqzt88e5PJNwTZJUGFqtnmM6eYDa/Rq9/IvPF8gZ+dy06ni/pn+HoW6zWz2VeKncxGF4hpZiIFfQxkvYSBa0DJW0imWogntBlTCQN+UlJW7QOxnCd2sy3680Yq9X7sK0RCqqHdMZGtT4UqesjEdYdxOsCzgfxyIdFJQSWG9aMEVxvjiL5JKVYqBtjtL0VWu0V3NYSzdYCTfcYljPbjpVacCiP/H+RrMtkm3RDG7FStYeM1oNS8KDQCQywPv0Oq5NbLNe3mC9ekF9fYbF+hZOz15gdP4dpz2A3GXwOzz9DrU4WFtlCCopaHeLp8hg928NB0pJI8Yd01pFTeWTJ5pq0DsZ8oYVc3t0K67cmJws+no2auBh4+DpBPiT6sDkqmWGYUwF9dFATPx4c1GXOEg1c6FcJiuevcP3yJyRzbaRJYZiH6A8v0O2foUW+7A3O0emewu+dkf5cZEDfXfKxVuqKqSqPakdAYw37SPikap5c2SL/LFYvxVeToyfiz6PZDY6XL2j+WvzKuuH4iog9ECAOTqnSDwBVIuU36RbShYA2WskXChXlRHNjUmNDm3AemMf/B9SJmFxvjPD7mzVWPQJOWNCJBkbjUETVfPEl00LdCINEeccgoUhQinSj23kf41YXjxIm2p01rq5/wOXV9zi/fEs0WsJxFyTBmKWo7gPtABrmBO3BGZQ8BSVjoVztU4aMiVtE3tqA8rRH/rkXplQUIAougGWiSbnWE78pZE6ZNjEof9xPq1CYMg/pxYeV+oDoMRdATniH0ovpYphHaFjTHWFKMVWG48eSKfwPC8/LFHGJsm6OiWtr5IlPfILdnIuvdArKPiDr2AUjBqS00zfB4/8rtcE9bbKFNpWvAJBTi9OJ04sjGpXQT9Gytu/LmEY+K264x5tqVLKq9ZGkX4bAmXthmRLuSY47Dx62BeTiysKnGI0JJpPHGFKKeZ0VptNrMvGS/HYpZrOvggMD4Sxh01mfooofAQyCki8NoDtL6M0V9ZlD1GluExdb3lIAAhr1I9ITvUZ6oU0ImCeTM8TDqWVi5VBvsXQsbQPrZgOmZhDpjY8Ses+HHeQoyqWChb/uTPzzq4d//3iKv39b4L9fLPy8sPBl3JIDP8S/LbFDQL5hLmvhdujgx5mLu+MO7uYe3s0cTJ0W4ilLypvyEdkxOYgyVd4CtwTyiT5DrjyWed2cC5U4Qz4fcMPDdLqBDLXTbIZNNGWeIsowVcoUhKjPHky9fUCFNiaJV4k0C23mYkBrbgUMGJSv3ZtFSR8AbojNYOXBNVonb9A5ewvv9A2M49fQ/XNpoTZ1RJfy3G0vRTjnuUtyF2Q+Rkz2t9UmT08SfXwDc3IDZ/oc1eE1VGse5CyVOtuZSr5zf5axGeS0Rin8QFBs1Lnr0SOoRiWtxI8lehjpOtVGeig9ck8R17pIxGvbthDmdTbn7vlwA2hQS+BbuO05GlSJdFo7zSmaziES/iVSlQEU6iH7EQ578w4gf6jTbUzrkHrLUMAZ1GiMhTapgyqBNR6kDDe1927ICgZwW3MCncAiYJP85jSPUCy2Ed809KipYVXnXH7AZIdu0pJamKcayX7hRh7WR+kr5PyStIle0HYJqKj5Ukd5vUMbBuSWKZtIonNVXrO97ZqFAZguKu3nC9wDhvUwbW7NCE2RubKrjxbc996H0YqtfCL5P0fo5TCmt8vFJvXMD+bp50pMo9c79+Ywl3fqW6SKBNHVPyn/A3lb3I+hTik1AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"Deploy\" title=\"Deploy\" src=\"/static/343cc66c27641d6a09263cfdd89f96c6/50383/img2.png\" srcset=\"/static/343cc66c27641d6a09263cfdd89f96c6/a6d36/img2.png 650w,\n/static/343cc66c27641d6a09263cfdd89f96c6/50383/img2.png 740w\" sizes=\"(max-width: 740px) 100vw, 740px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n<p><strong>🎉 Congratulations, your smart contract has been deployed. 🎉</strong></p>\n<h3 id=\"sample-transactions\" style=\"position:relative;\"><a href=\"#sample-transactions\" aria-label=\"sample transactions permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Sample Transactions</h3>\n<p>Remember that whenever a transaction is getting executed, it stores all the details in a unique <code>hash</code> key.</p>\n<p>Now, under <code>Deployed Contract</code> click on <code>> HOSTEL AT ..... (MEMORY)</code></p>\n<ol>\n<li>Click on the <code>V</code> icon (dropdown menu) of <code>addRoom</code> function.</li>\n<li>Fill up the details.</li>\n</ol>\n<p>Similar to as follows:</p>\n<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 740px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 101.07692307692308%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAADY0lEQVQ4y3VUyXLiVhRlmV9I2jbGgBgkxCAkJIEECIMkkACD7XaDux3b2aSrOl1ZZFimF6nKOlVZ5r+ySS/yIyf3PoSCu53FqfvG886dXkZyr/DlxXuUWj6KBQMdM4RpTaEbPlraOYxOQGsBtPZYjHmPLc8te0rzEOVKD209QL7QQeYo/hZfvPsDp9YKxVwbk+AGo9ElxpNrdHsxzsdXCMIbuhyJNZ/2w+kGbn9J66/EXFb6cNw1cmc6MnJtAKnmoUKvnOUNHB038eKogeOTJqGFI7K8dpJtifl+/SSrpWMm4jHfzzS1MXpOhLLsigW3v8DEf4nB8CLBSiiuqQOckgd85jnUmxOy5LLaHEHv+KgqREgxqJL8Wn0o3KgmkGt9SOUuCkUTBcl6iqKFItlSxRH3M2rDQ1kdI1vsoVJ10GgH0K0IbXOGFgXasGPoNNYMSlZvgQ7NLWcJi8a1xojGK9qPUdcmRGwjU1RG+O56ivXQwXHehqIOSaEHhaF6kGnOY2HVp7ZC6pX6iDwYokpgDzJFeYhF30XQdZAt2HTIRZ7cyNNrUrknYvt/qMj93Zg8Y5tnwj4F/u37X5CTHBRLllATzLbwww3MbkwH++Iiq0mxJyKUiExtjsU9UYf15jlsqreK7Igg88bAW6PnLqHpPiQqp517A4EqgV08DIlKHGwFIQdWpk2pwgptoaBAttY4R7uzS0bHijGLv0Y0v8c0uqPHKBG0Z5iRACctVchl8+f3C7wOhniRs8CFzqRVsvwq26bmE2mUEnD2GZoepkgV8oXAHcFouSIRTMaquWy4RFghk0yjNwhnO/jh7U4ZqdwjVajRJ+D51yiUHUiJy6KYE3U8b1CNmUTOD7D7jLYxFY99ppADzFXOqd/HkLPHZPuCZssxnC8fECeYXzyKuWnPnyrkXp4ElyL9h4RcGocKjSSGHEvzADo/SPivbFr059GfVjrIsogbuWd252kM48U9lqtvEJGdRA+YxI9kH1E35lC0meiUNCnSJy7vUVUGSXt5Sa159PNc4afHe/x4tyFs8QPZnx/ewKMGyeb4P0x6svyMy5+2V0nxsL28w18fRvj4q4d/fr/Bx98C/P3BwevVK3yVbT9P+FmrJZnnrtE7IW7XW2yWL7G9uBH2dr2BTW16embgX2/7nJYLqmA7AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"AddRoom\" title=\"AddRoom\" src=\"/static/3bc47cb07ed572c00dd0e0588f8fccea/50383/img3.png\" srcset=\"/static/3bc47cb07ed572c00dd0e0588f8fccea/a6d36/img3.png 650w,\n/static/3bc47cb07ed572c00dd0e0588f8fccea/50383/img3.png 740w\" sizes=\"(max-width: 740px) 100vw, 740px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n<blockquote>\n<p><strong>Note:</strong> You're entering your details in <code>wei</code> not in <code>ether</code> (1 ether = 1000000000000000000 wei)</p>\n</blockquote>\n<ol start=\"3\">\n<li>\n<p>Then click on <code>transact</code></p>\n<p><strong>🎉 Congratulations, you've successfully added your 1st room in the contract. 🎉</strong></p>\n<p>(You can find the same in the terminal also.)</p>\n<p>Now the landlord of the room is your 1st Ether Address. (The one with 99.99 test ether in wallet.)</p>\n</li>\n<li>Change the <code>Account Address</code> from the dropdown menu. (Choose anyone except the one with 99.99 ether)</li>\n</ol>\n<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 740px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 116.15384615384616%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAXCAYAAAALHW+jAAAACXBIWXMAABYlAAAWJQFJUiTwAAAEb0lEQVQ4y22UyXIbVRSGteIJGKoSx7asoTXYltSt1mSp1fPcmiVbNo4pKCjA4DDELFjwBkAVC0IoA96wg0rgBX/OuZKcuIrFX32Hvl+f859zO5XvTfFgcAlJdpHLNqA2PDSbPup1BzXZQl11xZqs2FBp3OA9evJes+XT3EOheET7LrK5JlIPk0u88eQZdjoT5NIK/PAUtjOH6x2jpw3guAsEtHbUTeDRWhAuEcVn0I0xouhM7JX3++jrc6T3VKRKBzpyFQvFUhd7mQa2d2ShnV2FVKexIsTz1VheS8Gj7RpJFiBe4/OpquLQ1yMUyhoy2SZqFHpVdiDXPaFsroXtbfkOvpuui4OvpArgRqnDmoUGeVHa18QCQyznBKa1gG7OYdrHND+mFGdiva9P6aMeFNUX7zZaMfYPDOSlIxFQ6qBKkwMLu1JPfE1tRgiic/LynPw5h+0u4fpnYh7Gj+F4S4IF4j1+drpjHJJld0CGXc4jjPoaHuw0kKMUeYPTyWRb2NtriDTTaXX1pCzYhiy9I57r93ldeJgtGRjrXUS9HrbSTVTIw1ojQLliQu2MkCtp2GYowXfoyeNHBGdtka9bXBguEheNlNL0MT6++g67+S6kfAOtugZbD+HbA7SUPjyLWseIYPVDRN4YSTBB7E+QCI0RuwN4egCr60Bvm0hVZBu9/oja5gjZYh+V5fdwPrtB8tUteh/+jPjLP2B/+ivcy+cYfH0L/+p3eFe/4eij52h+8AvpGeTzn1A9/ZHO/sBFMSFRlXJSBxlKf+/iTxjX/yD49l80Pv8L1vVL6E9fov3kbxhPX8C8fgH7mxfYOr3Fm7MbvEV6e36Dd9YSbXPzxRBnnoGHO3XUq1347gxhcIx+L4LnTOHYE5j6ABGtWcYItjXGfrEJKSOjkFVI8lo1pIp0UyLdIr+oD6ltatRGcXyK6eQCJh3mcULy3Dl8b47AX9B8if1yV9x99j3/mlKK6sH0FsgU+AUV1UofPh0KwxO0qeE9gsTREpY5huvMBNS2JigVO8jnGNi8U56UKh8akEo9FEjZNTAiAEfCkNn0PTFmWEApsxVaL0ZBar3Sa1C6yzbdhqmAMrByqAmgRz726W/DERnkH4M42iQ5o/VEHC4W2kIbsERKValtWp0QUrF7B+SUGKbRwRVwCIP8ZE9XH0pQLnUEREAFsCkiXf2+yD9OOZOpE7BPKR6LFDm10fBdURDXnorIOVLeYw9FZIUVTMq3Vimzh0X6Qa5SrqN22EPgUdv4c2jdEMPklKKcicjYS24hyxyJCCWOSlqBJOl/gHkCqpUuRtEC0+ESWtvBMKSKe9SL1HuhvyqKTVBOlQEb7zbFWQO1VaVzCnpyG/NojJPBDJHhYxpRqs4QcTBDHB6vmpy8LFPKG+C9Km+Aefqr7Odq8BQF53GMi0GCmWni8WiCkZsgMBOKdCaAHGWp2L7fhzTm+T1gJV/BuFHBJ+MQV4shzh0N7ychLsYUrRUhptTZX+5HuWaIiyAammFr8H9dzBVIG9tfBQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"Change Address\" title=\"Change Address\" src=\"/static/eb47d2dd91d0b7a616503cf0fab97c17/50383/img4.png\" srcset=\"/static/eb47d2dd91d0b7a616503cf0fab97c17/a6d36/img4.png 650w,\n/static/eb47d2dd91d0b7a616503cf0fab97c17/50383/img4.png 740w\" sizes=\"(max-width: 740px) 100vw, 740px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n<ol start=\"5\">\n<li>Add the total amount you have previously chosen as (rent cost + security deposit)</li>\n<li>And then from the dropdown <code>wei</code>, choose <code>ether</code></li>\n</ol>\n<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 740px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 118.92307692307693%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAYCAYAAAD6S912AAAACXBIWXMAABYlAAAWJQFJUiTwAAAD80lEQVQ4y3VU2Y7jVBDNC9/Aosnizp44jpM4duI4sbN2Oquz9TTdUU/PDCAWoUEg8YCExBOMNE888zH8BRKCfzlUVex0Mi0eSnV9fe+pqnOqbiRvL6H09yiUu8hkGtDKHsp6FyXNhVrqkPcCc8Vr5cd/ZVrz2WzOln9puh/5cPMDPvj+DyTMBTLJOparB0ymt5jO9uj21rS+w2J5D9dbyR6vff8Bg8EOS/8FVnReLXnoD26RTFmI5KojKASWK3agXNQRTxiIxatIKAata7J3kTTlm9fhd7g+/c8+olf6sMwhsnlHIujVAfTKAJXaiGwoe9FYRcA5EHu+HAY4DcQWqRhD2O0ZcoW2RGCgVtuH7SzRbC3EGvYcdWty9JreJ+4G4nWqsFB0kUo3DiWrWhepQhfJLAFSBJvAVpvP4a8/E5stXmLhvyZuX2O9/YK+Hwh0CqtJ4I0pHHdDSVxShW0Bjaj6EPf+HI7hIKaYpFSTIjXkZypN6/Rhzfv8zT6TayGTtQNryf6x5ETWxZeTJjbdNj5JWFRKD2XiME8i1eoTORyN6ojFqsRlVfg85ZJ9uBZRvN4GN/ffIZ6yKTOTQK7g9XboeBvh0e2SJx6dji/G+8wrn1NL3IMOBXdJg0OXRBqtOTbbV8iRyrzBxC/8V8LdeLIX3qbzB8yWL4U/5vXyak/BViIIA2lEm0YicZaRvOriY4Wyy7VFpYLqiuJ5jnjSfwklsKDvQlXDFjqWXDdHePfVCpetDqKKhar038G4Nxk8RwqKLxyCvt/UoSkXBFhUO3iz7mNoe3gWr6PjrvHp/ls8v/0Gu5uvia8l0bA4Git7CsQgXIkSAtbMMZpEvJI5TApzUauPUTPGkmWp3CPrH41LPc3qSYZahbu9fyyHAbjZw5Y45Sjkk9uHWycsO9wXDnl8rOYE2WD0eAq4LaqUIWfKPlzzRLBovcE12kQNf7PxHc5eVK5bY/SHa+p+RwAZzHZ86TM+eDQas5p5Re9eF5PZC7pzI2cMc0J3fGkhASyo9DDmnOPjkKLRSgdjlUo3nhifiQclMkWhPapMEbkXswGHenUoo8fGM/34dIVvI10WAOuJIMJhkV7bfNDMfKFmXBJHO3qh1zRycwxGz2kUtzSCW+FSJdG04OliY+64XBZTRu8MkCIU9RGa7k6sXCeBOlu0va2AVimYqvWOQCXxPegkDAc5A+SSU/Q4OLoJVzfQLunoaFV4tC5lDUTjRlCe9V7/nX8LILdCmsarnDfx5xsTf//i4p/f7/DXrzP8+7OFH2cWPoqRYMn62didWyhKkGGGAPMZEz8tTLy9buDtXR+/3bh4d21hZZt4ljCR/J8JORXmP+0uC5Xy+qz1AAAAAElFTkSuQmCC'); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"Change Value\" title=\"Change Value\" src=\"/static/d5fd5d1f68f4e5d37d78edf675a163a2/50383/img5.png\" srcset=\"/static/d5fd5d1f68f4e5d37d78edf675a163a2/a6d36/img5.png 650w,\n/static/d5fd5d1f68f4e5d37d78edf675a163a2/50383/img5.png 740w\" sizes=\"(max-width: 740px) 100vw, 740px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n<ol start=\"7\">\n<li>\n<p>Scroll down and click on <code>signAgreement</code>, enter <code>1</code>, and press <code>signAgreement</code></p>\n<p>You can check the same by entering <code>RoomAgreementNo</code> : <code>1</code></p>\n</li>\n</ol>\n<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 740px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 194.3076923076923%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAnCAYAAAAPZ2gOAAAACXBIWXMAABYlAAAWJQFJUiTwAAAE70lEQVRIx41WyW7bVhT1ph9RIEVia54siRI1kiKp0ZYlW0o8JY4TI01XATqiaIN21UXRrtoCXfZfT+955KVpm0GyuLhv4Dvvjudxp9w/xu70GuX6GPl8D/uNAI3mGLW6j+q+h/16IOKjZsY+6rJf25e9mmfGlEJxIGsBcnJ+5/Ptt/js+//wuL9FbreF1eoKi/k5Dg8uMHKPcbA4x3r9EiPvBMujF1gfX+P45BXGk1OjKZWqJ/NL7GU62Ck259jtHKNYdpHJ9VC0DlC2l7GU7CPkqwHyhYHIEDnRheIwHpt1mefy/RCw0Zyg152bjwq1AM5Xv+Hp+3+x+uEvbH/6BwvR7aO3cIbH6PTXIit0epHIuCtrdvcIjdbCGLTTaM0wcFcoiYW5ooOmf4729Aq9xSv0D1/Dnr1Exz9Dw5qhKnFOk4rEr1gZhYA1CXq2EmCv4Ir5fQNcl48sAbDkMnrQbM3jQx+SksTRAJbrU9xs1wi6Lp5kB+Zg3Zqj3TuCLS61xR0Kx5Z9YA4XSm4MkhQD+KTo42bex2ng4tHeQEpFSoPWyeGGWEZNaapuL8xYLX4AOPK3uP7yRzzJSeaknsq1ELDVOTSHFZDS7i6N5h5jl2qhLR+dbF5J7Bxk8+KyZJpAPEzNw93B2uhWZ2kyS1Cu8WKWjIYga2IoFj3KDJExSaGFQewyQeg2hWu8gGNeRgkvOTRjWpzJCqDVnuHvd1uceB6+yPRNDPeb09hdBao1pF6dE/RF9DJKMgQGsCy+v12NMRl4eJwloPRucxbfTIt0bIraZH4Jm1Ugwjl1DNjqLOBMzrCXdyKXfWONuklNCzkejrbouxvUm7M7+9QMVVTYZJbA9HIuH9ZhaNVtAjRe1D1pQYJyni85ck7qUs6WKl6YlLp0gjNam8VcZGHSKs00reZeUlLLpmXP4Y835jYFVCAVKypkXmo6JdK0qlz17wISgKRw6/LYALL1CES3GbuBuDkKTuFPz+H4z8ycrjPrrEleaAA5IHox4XKYlLBUGDcCDL2nBpjaFWA3eGayW2tMTYh47iFglBS6yVsH7glcAfMm5/AnoWWj8SmC6QUmixcIZhdmLdVCTUpBssYQZAS8KDGqRUV+v0zISGqZyba2XmyhLGYFyLn8DuM3v2Ly5hcEN+8xvP4ZlhCuHXWF1b4rLTtcZ3dl0gC91++x+uZPrL/+w8js3e9oH9ygF3UG6f6+EJTdlZqUkpRBTTabvLmzNMnR1tICvl9/XHvociLLyoftBCdS061k3RlwFa3DNEAe1FZTVlEqC78dpVqa+ZiF2naWfRiTrrIOLy1I3D8ZMH4/Es+AzhnXW5bxPw7YsOYxeRoCjSxTtlZSZXvy+ztscx+Qb4oepGtqIdeUXNkZKobOpJ/ZpplsN91ClghjROGH9eivQRmba7qvkt7LhdteNv8t0WunY2WdsM83RnTtkyykZWohNQtcn8/7vybpSUmwjdZh8gnQZBCUtJX655Be2GEd2hHJJoE1GZwrc5tCryazXHnYKfomh66HVKVhUDqrCrtrSNiSH0yKeQLEGpbDeHaJqZDpeP5c6F9+k8dnmMiYMj24MnN+GxOs1Z7j8OgiJlhu8FYtarrNWqN0Bqs4MfqWmB6POibKMl2cpLrMkqCFnljhCfW78qfmjDZwvI3Mn5l5p7c073qp4mB3r43/Ac0kC8Qp6J4RAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"Agreement Details\" title=\"Agreement Details\" src=\"/static/2e78f99488e2d4b996bf69e041b3f2a9/50383/img6.png\" srcset=\"/static/2e78f99488e2d4b996bf69e041b3f2a9/a6d36/img6.png 650w,\n/static/2e78f99488e2d4b996bf69e041b3f2a9/50383/img6.png 740w\" sizes=\"(max-width: 740px) 100vw, 740px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n<p><strong>🎉 Congratulations, you've successfully signed your 1st agreement. 🎉</strong></p>\n<p>All your transactions are shown in the <code>terminal</code>.</p>\n<span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 52.307692307692314%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAYAAAC0VX7mAAAACXBIWXMAABYlAAAWJQFJUiTwAAABTUlEQVQoz41Su3LCMBD0lwTrYVt+AZMBDMZgEXcU1GnSpcr/95e9sxUzCZmh2DnpJO2t9i5y+YnyAijPVNaeUnckhz2vy7qf4JHryKaHh0g46i3ZZE+RyVvKcNm5jjKQ8aGxzR/w5REgAGRt96RBpMyO9OZKOjuCsGjJuqkKLiVSsRWk2RzH9eFu3Yo6IcS7xfBBqvQUcZUMzHzJ5aNKVqT0Btg+BSF9WZNSGyhcdlSsPa1WA5UV/Ko8SDshDwUyF2IofJK1ROwtYnz7Ir0cWGHz40kyGczf4cqx+k/lg3z8KlE8dBU6XPbo9lnAyu59G/0N3h7mPEcIMbAs9u+kix4KQZhjNKr6It8tMD6z0rlZv39wf2aw182NNKyJjMFI8GhMD1iJxhg825CARXrE+DQgtDshCqaHZswNGRsRGhVyIZ/irYIIdf0kXb/RN+QnL80nDgFfAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"Terminal\" title=\"Terminal\" src=\"/static/7ebf72a72c72bbb334e0d52d8ce3cbf8/e5715/img7.png\" srcset=\"/static/7ebf72a72c72bbb334e0d52d8ce3cbf8/a6d36/img7.png 650w,\n/static/7ebf72a72c72bbb334e0d52d8ce3cbf8/e5715/img7.png 768w,\n/static/7ebf72a72c72bbb334e0d52d8ce3cbf8/c27e7/img7.png 2144w\" sizes=\"(max-width: 768px) 100vw, 768px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n<p>Now, you can cross verify this by checking your <code>ether</code> account address.</p>\n<h2 id=\"advantages-of-smart-contracts\" style=\"position:relative;\"><a href=\"#advantages-of-smart-contracts\" aria-label=\"advantages of smart contracts permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Advantages of Smart Contracts</h2>\n<p>Now you may ask, \"what's the use of smart contracts when there are several centralized methods?\"</p>\n<p>Let me explain some advantages of smart contracts over centralized systems:</p>\n<ol>\n<li>Here data cannot be changed or tampered with. So, it is almost impossible for malicious actors to manipulate data.</li>\n<li>It's completely decentralized.</li>\n<li>Unlike any centralized payment wallet, you don't have to pay any commission percentages to a middle man to transact.</li>\n</ol>\n<h3 id=\"storage--others\" style=\"position:relative;\"><a href=\"#storage--others\" aria-label=\"storage  others permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Storage &#x26; Others</h3>\n<p>You may also ask \"how are all the transactions recorded?\"</p>\n<p>You have to remember that smart contracts store data in a block of the blockchain, and all transactions are stored with a unique <code>hash</code> key.</p>\n<p>In Remix IDE, you can download the complete transactions history as a JSON file. For that, follow these steps:</p>\n<ol>\n<li>Click <code>Deploy &#x26; Run Transaction</code></li>\n<li>Then, expand the <code>Transactions Recorded (..) V</code> dropdown menu.</li>\n<li>Then Click on the <code>Save</code> icon.</li>\n<li>Press <code>ok</code>.</li>\n</ol>\n<h3 id=\"gas-fee\" style=\"position:relative;\"><a href=\"#gas-fee\" aria-label=\"gas fee permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Gas Fee</h3>\n<p>You may have noticed that whenever a transaction is executed, a few <code>wei</code> is getting deducted from your ether wallet.</p>\n<p>It's called <em>gas fee</em>, which is the payment made by users to compensate for the computing energy required to process and validate transactions.</p>\n<p>As more Ethereum miners come up in near future, the <code>gas fee</code> will decrease in an inverse relation.</p>\n<h3 id=\"future-possibilities\" style=\"position:relative;\"><a href=\"#future-possibilities\" aria-label=\"future possibilities permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Future Possibilities</h3>\n<p>After this, if you want to build a fullstack website using React, you can use this smart contract as a backend.</p>\n<p>For that you need to install/download: </p>\n<p><strong>Frontend:</strong></p>\n<ol>\n<li><a href=\"https://nodejs.org/en/\">Node.js</a></li>\n</ol>\n<p><strong>Backend:</strong></p>\n<ol>\n<li><a href=\"https://www.npmjs.com/package/web3\">web3.js</a></li>\n<li><a href=\"https://www.trufflesuite.com/docs/truffle/getting-started/installation\">Truffle</a></li>\n</ol>\n<p><strong>Testing:</strong></p>\n<ol>\n<li><a href=\"https://www.trufflesuite.com/ganache\">Ganache</a></li>\n<li><a href=\"https://metamask.io/\">Metamask</a></li>\n</ol>\n<p>Just follow the <a href=\"https://web3js.readthedocs.io/en/v1.5.2/\">official documentation</a> of Web3.js to connect your smart contract with your React app.</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>You've successfully understood what Solidity is and how smart contracts work. And you've successfully built and deployed a perfectly working smart contract (where a tenant can pay rent in ether (ETH) directly to the landlord's wallet without paying a single wei to a middle man).</p>\n<p>To download the complete code used in this tutorial, click <a href=\"https://github.com/LoginRadius/engineering-blog-samples/tree/master/Solidity/decentralised-pg-booking-system-using-ethereum-smart-contract\">here</a>.</p>\n<p>Want to quickly add user login and signup functionality to your React apps? <a href=\"https://www.loginradius.com/authentication/\">Use LoginRadius for free.</a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n  .dark-default-dark {\n    background-color: #1E1E1E;\n    color: #D4D4D4;\n  }\n  .dark-default-dark .mtk1 { color: #D4D4D4; }\n  .dark-default-dark .mtk7 { color: #B5CEA8; }\n  .dark-default-dark .mtk12 { color: #9CDCFE; }\n  .dark-default-dark .mtk4 { color: #569CD6; }\n  .dark-default-dark .mtk10 { color: #4EC9B0; }\n  .dark-default-dark .mtk8 { color: #CE9178; }\n</style>","frontmatter":{"date":"November 24, 2021","updated_date":null,"description":"Smart contracts are an exciting way to build decentralized applications (dapps) on a blockchain. This tutorial helps you learn and build your first smart contract using Solidity on Ethereum blockchain.","title":"Build Your First Smart Contract with Ethereum & Solidity","tags":["Blockchain","Ethereum","Solidity"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/32b53a158fcbe237c5223007d8b14857/ee604/coverimage.png","srcSet":"/static/32b53a158fcbe237c5223007d8b14857/69585/coverimage.png 200w,\n/static/32b53a158fcbe237c5223007d8b14857/497c6/coverimage.png 400w,\n/static/32b53a158fcbe237c5223007d8b14857/ee604/coverimage.png 800w,\n/static/32b53a158fcbe237c5223007d8b14857/f3583/coverimage.png 1200w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Aritra Belel","github":"belelaritra","avatar":null}}}},{"node":{"excerpt":"JSON (JavaScript Object Notation) is a text-based, language-independent format that is easily understandable by humans and machines. JOSE…","fields":{"slug":"/engineering/guest-post/what-are-jwt-jws-jwe-jwk-jwa/"},"html":"<p>JSON (JavaScript Object Notation) is a text-based, language-independent format that is easily understandable by humans and machines.</p>\n<p>JOSE (Javascript Object Signing and Encryption) is a framework used to facilitate the secure transfer of claims between any two parties. Its specifications provide a general approach to encryption of any content, not necessarily in JSON. However, it is built on JSON for easy use in web applications. Let's explore some of these specifications.</p>\n<h2 id=\"jwt--json-web-token\" style=\"position:relative;\"><a href=\"#jwt--json-web-token\" aria-label=\"jwt  json web token permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>JWT — JSON Web Token</h2>\n<p><a href=\"https://www.loginradius.com/blog/engineering/guest-post/jwt-authentication-best-practices-and-when-to-use/\">JWT</a> is a standard mechanism used for authentication. It is compact and URL-safe to represent the claims to be transferred between two parties. Claims are a set of key/value pairs that provide a target system with information about a client to apply an appropriate level of access control to its resources. Claim names could be Registered (IANA), Public, or Private. Some registered claim names are:</p>\n<ul>\n<li>\"iss\": Issuer claim — identifies the issuer of the claim</li>\n<li>\"sub\": Subject claim — identifying the subject of a claim</li>\n<li>\"jti\": JWT ID — Uniquely identify a claim</li>\n</ul>\n<h3 id=\"structure\" style=\"position:relative;\"><a href=\"#structure\" aria-label=\"structure permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Structure</h3>\n<p>JWT is mainly composed of three parts: header, payload, and signature that are Base64 URL-encoded.</p>\n<ul>\n<li>The header is used to identify the algorithm used to generate a signature.</li>\n<li>The payload consists of the claims and signature (secret key) used to validate the token.</li>\n<li>The structure of sending the information could be Serialized or Deserialized. In the Serialized form, JWT is represented as a string containing the header, payload, and signature separated by dots.</li>\n</ul>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"0\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">[header].[payload].[signature]</span></code></pre>\n<p>Here's a simple JWT example.</p>\n<p>JSON Web Token:</p>\n<p><code>eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6MTIzNDU2Nzg5LCJuYW1lIjoiSm9zZXBoIn0.OpOSSw7e485LOP5PrzScxHb7SR6sAOMRckfFwi4rp7o</code></p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"1\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">header:</span>\n<span class=\"grvsc-line\">{</span>\n<span class=\"grvsc-line\">  &quot;alg&quot; : &quot;HS256&quot;,                      Header</span>\n<span class=\"grvsc-line\">                            ---------------------------------&gt;  eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9</span>\n<span class=\"grvsc-line\">  &quot;typ&quot; : &quot;JWT&quot;</span>\n<span class=\"grvsc-line\">}</span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\">Payload:</span>\n<span class=\"grvsc-line\">{</span>\n<span class=\"grvsc-line\">  &quot;id&quot; : 123456789,                     Payload</span>\n<span class=\"grvsc-line\">                            ---------------------------------&gt;  eyJpZCI6MTIzNDU2Nzg5LCJuYW1lIjoiSm9zZXBoIn0</span>\n<span class=\"grvsc-line\">  &quot;name&quot; : &quot;Joseph&quot;</span>\n<span class=\"grvsc-line\">}</span>\n<span class=\"grvsc-line\">                                                Signature</span>\n<span class=\"grvsc-line\">OpOSSw7e485LOP5PrzScxHb7SR6sAOMRckfFwi4rp7o  ----------------&gt;  OpOSSw7e485LOP5PrzScxHb7SR6sAOMRckfFwi4rp7o</span></code></pre>\n<p>This shows the decoded JSON Web Token. In the deserialized form, JWT contains only the header and the payload as plain JSON objects.</p>\n<p>JWT is implemented using JWS or JWE. Learn more about JWT <a href=\"https://jwt.io/\">here</a></p>\n<h2 id=\"jws--json-web-signature\" style=\"position:relative;\"><a href=\"#jws--json-web-signature\" aria-label=\"jws  json web signature permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>JWS — JSON Web Signature</h2>\n<p>JWS is used to represent content secured with digital signatures or Hash-based Message Authentication Codes (HMACs) with the help of JSON data structures. It cryptographically secures a JWS Header and JWS Payload with a JWS Signature. The encoded strings of these three are concatenated using dots similar to JWT. The identifiers and algorithms used are specified in the JSON Web Algorithms specification.</p>\n<p>The JWS Header MUST contain an alg parameter, as it uses the algorithm to encode the JWS Header and the JWS Payload to produce the JWS Signature. Some of the commonly used algorithms to sign the JWS Header and Payload are:</p>\n<ul>\n<li>HMAC using SHA-256 or SHA-512 hash algorithms (HS256, HS512)</li>\n<li>RSA using SHA-256 or SHA-512 hash algorithms (RS256, RS512)</li>\n</ul>\n<p>JWS example:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"2\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9 ----------------&gt; JWS Header</span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\">eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ --------------&gt; JWS Payload</span></code></pre>\n<p>It has an Encoded JWS Header followed by an Encoded JWS Payload separated by a '.'. This is the JWS Signing input which, on signing with the HMAC SHA-256 algorithm and base64url encoding, gives the Encoded JWS Signature value:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"3\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk</span></code></pre>\n<p>On concatenation:</p>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"4\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">eyJ0eXAiOiJKV1QiLA0KICJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqb2UiLA0KICJleHAiOjEzMDA4MTkzODAsDQogImh0dHA6Ly9leGFtcGxlLmNvbS9pc19yb290Ijp0cnVlfQ.dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk</span></code></pre>\n<p>Learn more about JWS <a href=\"https://openid.net/specs/draft-jones-json-web-signature-04.html\">here</a></p>\n<h2 id=\"jwe--json-web-encryption\" style=\"position:relative;\"><a href=\"#jwe--json-web-encryption\" aria-label=\"jwe  json web encryption permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>JWE — JSON Web Encryption</h2>\n<p>JSON Web Encryption enables encrypting a token so that only the intended recipient can read it. It standardizes the way to represent the encoded data in a JSON data structure. Representation of the encrypted payload may be by JWE compact serialization or JWE JSON serialization.</p>\n<h3 id=\"structure-1\" style=\"position:relative;\"><a href=\"#structure-1\" aria-label=\"structure 1 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Structure</h3>\n<p>The JWE compact serialization form has five main components:</p>\n<ol>\n<li>JOSE header</li>\n<li>JWE Encrypted Key</li>\n<li>JWE initialization vector</li>\n<li>JWE Ciphertext</li>\n<li>JWE Authentication Tag</li>\n</ol>\n<p>All these components are base64url-encoded and are concatenated using dots (<code>.</code>).</p>\n<ul>\n<li>\n<p>The JOSE Header, the first element of the token, is the same as the headers of the previously mentioned JWT and JWS.</p>\n<p>JWE has additional elements to the Header — <code>enc</code> and <code>zip</code>.</p>\n<p><code>enc</code> defines the <em>content encryption algorithm</em> while the <code>alg</code> element defines the encryption algorithm for the <em>Content Encryption Key (CEK)</em>.</p>\n<p><code>zip</code> provides a compression algorithm if token compression is needed.</p>\n</li>\n<li>During the encryption process, the issuer generates a random key, which is 256-bits in size, that is used to encrypt the message. This is placed in the JWE Encrypted key section.</li>\n<li>Some encryption algorithms require an initialization vector, which is a randomly generated number that is used along with a secret key to encrypt data. This prevents repeated encryption of the same data using the same secret key. The recipient requires this initialization vector to decrypt the message, and hence, is placed in the JWE token.</li>\n<li>The fourth section of the token is the JWE ciphertext that is computed by encrypting the plaintext JSON payload. It uses the algorithm mentioned in the header's <code>enc</code> element.</li>\n<li>The JWE Authentication Tag is the last part of the JWE Token generated along with the ciphertext. It ensures the integrity of the ciphertext.</li>\n</ul>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"5\"><code class=\"grvsc-code\"><span class=\"grvsc-line\"> &quot;header&quot;:</span>\n<span class=\"grvsc-line\">{</span>\n<span class=\"grvsc-line\">    &quot;alg&quot; : &quot;RSA-OAEP&quot;,                --------------------&gt; For content encryption key</span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\">    &quot;enc&quot; : &quot;A256GCM&quot;                  --------------------&gt; For content encryption algorithm</span>\n<span class=\"grvsc-line\">},</span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"> &quot;encrypted_key&quot; : &quot;qtF60gW8O8cXKiYyDsBPX8OL0GQfhOxwGWUmYtHOds7FJWTNoSFnv5E6A_Bgn_2W&quot;</span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\">&quot;iv&quot; : &quot;HRhA5nn8HLsvYf8F-BzQew&quot;,       --------------------&gt; initialization vector</span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\">&quot;ciphertext&quot; : &quot;ai5j5Kk43skqPLwR0Cu1ZIyWOTUpLFKCN5cuZzxHdp0eXQjYLGpj8jYvU8yTu9rwZQeN9EY0_81hQHXEzMQgfCsRm0HXjcEwXInywYcVLUls8Yik&quot;,</span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\">&quot;tag&quot; : &quot;thh69dp0Pz73kycQ&quot;             --------------------&gt; Authentication tag</span>\n<span class=\"grvsc-line\">}</span></code></pre>\n<p>Learn more about JWE <a href=\"https://datatracker.ietf.org/doc/html/draft-jones-json-web-encryption\">here</a></p>\n<h2 id=\"jwk--json-web-key\" style=\"position:relative;\"><a href=\"#jwk--json-web-key\" aria-label=\"jwk  json web key permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>JWK — JSON Web Key</h2>\n<p>JWK is a JSON structure representing a set of public keys as a JSON object using the Elliptic Curve or RSA algorithms. Public key representations can help verify the signature with the corresponding private key.</p>\n<h3 id=\"structure-2\" style=\"position:relative;\"><a href=\"#structure-2\" aria-label=\"structure 2 permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Structure</h3>\n<p>JWK consists of a JWK Container Object and an array of JWK Key Objects.</p>\n<ul>\n<li>The JWK Container Object is a JSON object that contains a specific member that is an array. This member is a required element in the Container Object.</li>\n<li>The JWK Key Objects are stored within the array of the JWK Container object. They have a set of members that is common to all key types. As mentioned before, JWK Key objects can use Elliptic Curve or RSA algorithms. To do so, the <code>alg</code> field must hold <code>EC</code> or <code>RSA</code>, respectively. Here is an example of a JWK using RSA:</li>\n</ul>\n<pre class=\"grvsc-container dark-default-dark\" data-language=\"\" data-index=\"6\"><code class=\"grvsc-code\"><span class=\"grvsc-line\">{</span>\n<span class=\"grvsc-line\">&quot;alg&quot;:&quot;RSA&quot;,</span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\">&quot;mod&quot;: &quot;0vx7agoebGcQSuuPiLJXZptN9nndrQmbXEps2aiAFbWhM78LhWx4cbbfAAtVT86zwu1RK7aPFFxuhDR1L6tSoc_BJECPebWKRXjBZCiFV4n3oknjhMs</span>\n<span class=\"grvsc-line\">tn64tZ_2W-5JsGY4Hc5n9yBXArwl93lqt7_RN5w6Cf0h4QyQ5v-65YGjQR0_FDW2QvzqY368QQMicAtaSqzs8KJZgnYb9c7d0zgdAZHzu6qMQvRL5hajrn1n91CbOpbI</span>\n<span class=\"grvsc-line\">SD08qNLyrdkt-bFTWhAI4vMQFh6WeZu0fM4lFd2NcRwr3XPksINHaQ-G_xBniIqbw0Ls1jF44-csFCur-kEgU8awapJzKnqDKgw&quot;,</span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\">&quot;exp&quot;:&quot;AQAB&quot;,</span>\n<span class=\"grvsc-line\"></span>\n<span class=\"grvsc-line\">&quot;kid&quot;:&quot;2011-04-29&quot;</span>\n<span class=\"grvsc-line\">}</span></code></pre>\n<p>It provides a Key ID for matching.</p>\n<h2 id=\"jwa--json-web-algorithms\" style=\"position:relative;\"><a href=\"#jwa--json-web-algorithms\" aria-label=\"jwa  json web algorithms permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>JWA — JSON Web Algorithms</h2>\n<p>The JWA specification focuses mainly on enumerating the algorithms necessary for JWS, JWK AND JWE. It also describes the operations that are specific to these algorithms and key types.</p>\n<p><strong>Algorithms for JWS:</strong> These algorithms are used to sign the contents of the JWS Header and the JWS Payload</p>\n<figure>\n  <span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 45.07692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAJCAIAAAC9o5sfAAAACXBIWXMAABJ0AAASdAHeZh94AAABYklEQVQoz0VRy3KEIBD0/78rl8Rbcti4iKCAiA/EFV+7YqW1tipdluVAT3fPGMVfn9/fP5zxZVmkEOkJKgpRFAWlNEnubdcex2G77uNCHMfTPL9er2maorzIe+dwjdpaCyrQddZ2tm3apmmez2fYdz95zplSJTzA3Pd9nucoJaRpT+0QdiklIYTSNGMZY4zcATIvC27hc0+SPM/RhuYQAlQiIQrnBtRwMMZIpSpjqgqPRlmW5TAMoHrvhRBQR0ww37EJwVQdtCGppEwpzbKMIyLLaMaSJDGmDgHOHkEY59u2/TvrUkP1uKDU2dw0UMPQ2JGt6xpjw2RdV63B1ba3sAH5bMYlRg8XSl0yxvveIeoDGB/OOaiAAEMsEmegofntjKPlWgmgdcV53tt+9H44cTa7wXk/YU6oQDKcq8XrQJZISYXY64bvFSu53X6xF30By0NSpdQ4+nEcc87xq9YLCIKTP+8W9OFzvfFkAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"JWS algorithms\" title=\"JWS algorithms\" src=\"/static/59304762300dd863a8ceddb2ca893b4b/e5715/JWS_algo.png\" srcset=\"/static/59304762300dd863a8ceddb2ca893b4b/a6d36/JWS_algo.png 650w,\n/static/59304762300dd863a8ceddb2ca893b4b/e5715/JWS_algo.png 768w,\n/static/59304762300dd863a8ceddb2ca893b4b/23266/JWS_algo.png 923w\" sizes=\"(max-width: 768px) 100vw, 768px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n  <figcaption align=\"center\">Source: <a href=\"https://tools.ietf.org/id/draft-ietf-jose-json-web-algorithms-10.html\">ietf-jose-json-web-algorithms</a></figcaption>\n</figure>\n<p><strong>Algorithms for JWE</strong> These algorithms encrypt the Content Encryption Key (CEK) and produce the JWE Encrypted Key</p>\n<figure>\n  <span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 51.53846153846153%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAKCAIAAAA7N+mxAAAACXBIWXMAABJ0AAASdAHeZh94AAABjUlEQVQoz2VR23aDIBD0/3+tfeppmmgSAshFwRvaCIJJO6SP3Yd1XXd2dsbi/e1NCBG3LXi/rityjGld9xifP/8ihMA5U1I55xhlhZRiHMfgAyGUc8FrXtea0kHU/TAMfd93HVJvrQ3Bg4IyprXGIkppMY7D/X73ayhLRYiVUmmtsLHROaRSUiCho4dh3rboJrC65/OHMVZgu/c+xUjI5Xq9YqzJOKQGIGMMSmNaaychvq39np3rus6vnnMO8HhfV2i+AEsIRtu2xa3GWCChCMfP8zxNYByheVnmaZxijJkZorZtAzk0ZDYpGeP4QK6krmvgcVqXAxaM2IIOpKHImuHwn40vCGf0hkfTGjgERGtyQIO1RimNDubnZd73PZ+N65Z5htu3Gxe1guEAwzLY1jRNtqB1UnqlBxDg2ryxbZdlycy4GcxbiB8f9PAlD1/seDx9HsrD57GqqrIqT8dTVV3O5zOlDLofjwdoAYGoIqWECu/d64eCrR+cMcm5mGLaU8L2hAqk24ax5yv+wL+X/ipQl3BZNQAAAABJRU5ErkJggg=='); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"JWE algorithms\" title=\"JWE algorithms\" src=\"/static/41748e3c88f2a5504335f64ed916a05c/e5715/JWE_algo.png\" srcset=\"/static/41748e3c88f2a5504335f64ed916a05c/a6d36/JWE_algo.png 650w,\n/static/41748e3c88f2a5504335f64ed916a05c/e5715/JWE_algo.png 768w,\n/static/41748e3c88f2a5504335f64ed916a05c/e0885/JWE_algo.png 918w\" sizes=\"(max-width: 768px) 100vw, 768px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n  <figcaption align=\"center\">Source: <a href=\"https://tools.ietf.org/id/draft-ietf-jose-json-web-algorithms-10.html\">ietf-jose-json-web-algorithms</a> </figcaption>\n</figure>\n<p><strong>Algorithms for JWK:</strong> JWA specifies a set of algorithm families to be used for the public keys represented by JWK</p>\n<figure>\n  <span class=\"gatsby-resp-image-wrapper\" style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \">\n      <span class=\"gatsby-resp-image-background-image\" style=\"padding-bottom: 18.153846153846153%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAECAIAAAABPYjBAAAACXBIWXMAABJ0AAASdAHeZh94AAAAvUlEQVQI1yVO0Q6DIBDz///MBzOTzZkFJ8tkmDhAkCFygO6y9eFy6bW9Fk3TXNt2nmcpxb3rBsZyjgAbQAwBth+89zHGjpCyLKuqOp1qt64hhMIsBgByzsYYzkcplRAg5Ka1dG49jmPfd7ziMrChruvL+dxTigzyRYoJU1NKUrwpHRn7PJ/m8WCc88Va55y1dvUeBdM0EUIYe9mPxbfoKv7ZOLE5uZG+x1yqlFqw0oIwSio0owBTxA9a67/lCyFN3+7p71lbAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"></span>\n  <img class=\"gatsby-resp-image-image\" alt=\"JWK algo\" title=\"JWK algo\" src=\"/static/1a4fdfb901193d11ded56baade0feaa7/e5715/JWK_algo.png\" srcset=\"/static/1a4fdfb901193d11ded56baade0feaa7/a6d36/JWK_algo.png 650w,\n/static/1a4fdfb901193d11ded56baade0feaa7/e5715/JWK_algo.png 768w,\n/static/1a4fdfb901193d11ded56baade0feaa7/6da96/JWK_algo.png 922w\" sizes=\"(max-width: 768px) 100vw, 768px\" style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\" loading=\"lazy\">\n    </span>\n  <figcaption align=\"center\">Source: <a href=\"https://tools.ietf.org/id/draft-ietf-jose-json-web-algorithms-10.html\">ietf-jose-json-web-algorithms</a> </figcaption>\n</figure>\n<p>Learn more about JWA <a href=\"https://datatracker.ietf.org/doc/html/draft-ietf-jose-json-web-algorithms-40\">here</a>.</p>\n<h2 id=\"conclusion\" style=\"position:relative;\"><a href=\"#conclusion\" aria-label=\"conclusion permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Conclusion</h2>\n<p>The IETF JSON Object Signing and Encryption (JOSE) working group was chartered to develop a secure object format based on JSON and simplify adding object-based security features to internet applications.</p>\n<p>The basic requirements for these object formats are confidentiality and integrity mechanisms encoded in JSON. JWT, JWS, JWE, JWK, and JWA are the JOSE working group items intended to describe these object formats.</p>\n<p>The JOSE specifications have many use cases and are sought out for integrity protection, encryption, security tokens, OAuth, web cryptography, etc. Check out <a href=\"https://datatracker.ietf.org/doc/rfc7165/\">this site</a> to know more about JOSE use cases.</p>\n<p>Want to learn how to use JWT for authentication in your apps? Check out this informational <a href=\"https://www.loginradius.com/blog/engineering/guest-post/jwt-authentication-best-practices-and-when-to-use/\">JWT authentication guide</a>.</p>\n<p><strong>References:</strong></p>\n<ul>\n<li><a href=\"https://tools.ietf.org/\">IETF</a></li>\n<li><a href=\"https://openid.net/\">OpenID</a></li>\n</ul>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n  .dark-default-dark {\n    background-color: #1E1E1E;\n    color: #D4D4D4;\n  }\n</style>","frontmatter":{"date":"November 24, 2021","updated_date":null,"description":"Learn about the JOSE framework and its specifications, including JSON Web Token (JWT), JSON Web Signature (JWS), JSON Web Encryption (JWE), JSON Web Key (JWK), and JSON Web Algorithms (JWA). For easier reference, bookmark this article.","title":"What are JWT, JWS, JWE, JWK, and JWA?","tags":["JSON","Encryption"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/77dde0fdc2f90c1277d228bc32c367d2/ee604/coverImage.png","srcSet":"/static/77dde0fdc2f90c1277d228bc32c367d2/69585/coverImage.png 200w,\n/static/77dde0fdc2f90c1277d228bc32c367d2/497c6/coverImage.png 400w,\n/static/77dde0fdc2f90c1277d228bc32c367d2/ee604/coverImage.png 800w,\n/static/77dde0fdc2f90c1277d228bc32c367d2/f3583/coverImage.png 1200w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Yashesvinee V","github":"Yashesvinee","avatar":null}}}},{"node":{"excerpt":"Identity is used by customer identity and access management platforms to generate a single, durable picture of customers, spanning various…","fields":{"slug":"/growth/ciam-opportunity-for-cmos/"},"html":"<p>Identity is used by customer identity and access management platforms to generate a single, durable picture of customers, spanning various department silos within a firm. These platforms leverage data to develop profiles that enable CMOs to communicate more effectively and efficiently with their consumers. They also provide the chance to launch new <a href=\"https://www.loginradius.com/blog/identity/loginradius-roi-enterprises-infographic/\">revenue-generating initiatives</a> based on this customer data.</p>\n<p>Historically, organizations depended on conventional identity and access management solutions, frequently cobbled together from various technologies. This strategy resulted in cumbersome \"product suites\" that were unnecessarily complicated and riddled with redundancy and compatibility difficulties. These solutions sometimes required years to develop and completely integrate, putting a crimp in potentially revenue-generating programs aimed at streamlining and speeding up sales. </p>\n<p>Niche CIAM players developed efficient solutions to certain business-related concerns, but without an overarching identity solution, CMOs had no means of meaningfully growing sales or seeing any significant ROI by using these identity solutions.</p>\n<p>CMOs can deliver more efficient, secure, and relevant services and goods if they have a detailed grasp of who their customers are and what they require.</p>\n<p><strong>CMOs are responsible for a variety of tasks, including:</strong></p>\n<ul>\n<li>CMOs' primary tasks</li>\n<li>Putting marketing strategy and campaigns into action to increase client adoption and sales</li>\n<li>Creating a market for products, goods, and services</li>\n<li>Providing great client service</li>\n<li>Customer lifecycle execution - from prospect to customer</li>\n<li>Creating the best digital and in-person experiences for different consumer groups</li>\n</ul>\n<h2 id=\"what-exactly-is-ciam\" style=\"position:relative;\"><a href=\"#what-exactly-is-ciam\" aria-label=\"what exactly is ciam permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What Exactly is CIAM</h2>\n<p>Organizations may use customer identity and access management (CIAM) to securely record and maintain customer identity and profile data, as well as regulate customer access to applications and services.</p>\n<p>Customer registration, self-service account management, <a href=\"https://www.loginradius.com/consent-management/\">consent and preference management</a>, Single Sign-on (SSO), Multi Factor Authentication (MFA), access management, directory services, and data access governance are some common elements of CIAM solutions. The top CIAM systems guarantee a safe, seamless customer experience at extreme size and performance, regardless of whatever channels customers choose to connect with a business (web, mobile, etc.).</p>\n<h2 id=\"the-benefits-of-consumer-iam\" style=\"position:relative;\"><a href=\"#the-benefits-of-consumer-iam\" aria-label=\"the benefits of consumer iam permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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 Benefits of Consumer IAM</h2>\n<p>A contemporary consumer identity management platform collects and manages customer identification and profile data while also safeguarding network access to software, devices, and other services. This is why major corporate <a href=\"https://www.loginradius.com/blog/identity/consumer-identity-management-cmo-ciso-cio/\">CMOs, CISOs, and CIOs consider CIAM</a> for marketing a business enabler.</p>\n<p>CIAM is the solution that directs your interactions with customers. Security, information, and marketing professionals in the C-suite push for CIAM solutions that are smooth and consistent across different devices and touchpoints.</p>\n<p>Other characteristics they search for include:</p>\n<h3 id=\"1-a-unified-consumer-view\" style=\"position:relative;\"><a href=\"#1-a-unified-consumer-view\" aria-label=\"1 a unified consumer view permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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. A unified consumer view</h3>\n<p>The <a href=\"https://www.loginradius.com/blog/identity/customer-identity-and-access-management/\">CIAM platform</a> should not create data silos between repositories and departments. It should instead provide a unified, comprehensive view of customer identities and activities on its platform. For example, you should be able to develop a detailed profile of each consumer that includes information such as purchase histories, use, purchasing trends, and more.</p>\n<h3 id=\"2-consumer-experience-through-several-channels\" style=\"position:relative;\"><a href=\"#2-consumer-experience-through-several-channels\" aria-label=\"2 consumer experience through several channels permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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. Consumer experience through several channels</h3>\n<p>It entails a legitimate registration procedure that can be conducted and finished on numerous devices, as well as the establishment of credentials for login and authentication, which also works across different channels.</p>\n<h3 id=\"3-enhanced-security\" style=\"position:relative;\"><a href=\"#3-enhanced-security\" aria-label=\"3 enhanced 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>#3. Enhanced security</h3>\n<p>The advancement of 2FA/MFA (multi-factor authentication) with features like biometrics, geolocation, face recognition, and so on has resulted in higher degrees of protection. These characteristics make it simpler to spot abnormalities and strange actions in a less time-consuming manner.</p>\n<p><a href=\"https://www.loginradius.com/resource/ebook/buyers-guide-to-multi-factor-authentication/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABkklEQVQY0zWQyy9jYRjGTwQ9vYlQpTrViJ7T0lZIpeq0TqN1mWSmBAuKxCVCIqQrEqEiqUjM7GYjwcaKjQUWkxmJhZmNlZ2NZP6V33znHBZPvuR7n/e5vJJdzeBS01SVT4me/eViYpfVVp363ApSewG3msMu5gZPDmk4onk8qUkau/PYY8PIkSyykkY25gKSQXQoGt6dH/gq9ywnF0koWRKfUsj+EdzhvCBqlqDgOeMjBIZmiQ7P4EhOYYuPiv13Q/FKspLBKRLUrVWQisdIsRmkYJ6GwCS1vgKukG65C7IzohPo/4K/7zNNvaP4E2MEU19pEGnld1FT0Kji3fpO1/4lkaUT/EMlGmNFatwaro5B7OGMSa7t0MzltoECASFkoEWIm5U/BK3KabxrRyjb56jFQ5rT63jC0zg9WepEfVenjuTrYbP8jde3f9z8fOTq9hfXd795en7h4c8z9fGcaWgJGpXEcatVnepQBptIbQsZ/4M4whaqgkn6x5fY2DthvlRmbmvfxMp2hYXSgWlqE8H+AywzymSbMN5UAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"EB-GD-to-MFA\"\n        title=\"EB-GD-to-MFA\"\n        src=\"/static/5093fa5ddf26d3a3ec38a96c3e0387e6/e5715/EB-GD-to-MFA.png\"\n        srcset=\"/static/5093fa5ddf26d3a3ec38a96c3e0387e6/a6d36/EB-GD-to-MFA.png 650w,\n/static/5093fa5ddf26d3a3ec38a96c3e0387e6/e5715/EB-GD-to-MFA.png 768w,\n/static/5093fa5ddf26d3a3ec38a96c3e0387e6/81501/EB-GD-to-MFA.png 2886w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<h3 id=\"4-privacy-and-regulatory-compliance\" style=\"position:relative;\"><a href=\"#4-privacy-and-regulatory-compliance\" aria-label=\"4 privacy and regulatory 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>#4. Privacy and regulatory compliance</h3>\n<p>As rules like the GDPR and CCPA gain traction, data privacy has become an essential component of a consumer identity management system. As a result, when executives seek one, they ensure that the platform gives customers control over their data and allows them to revoke any authorization depending on their preferences.</p>\n<h2 id=\"ciam-for-marketing\" style=\"position:relative;\"><a href=\"#ciam-for-marketing\" aria-label=\"ciam for marketing permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>CIAM for Marketing</h2>\n<p>Rapid technology breakthroughs in the CIAM market, such as the use of artificial intelligence and blockchain technology for access security and user authentication, are expected to provide various profitable chances to CIAM industry players in the coming years. Furthermore, the expanding budget for IT departments in small and medium-sized businesses, as well as the increased use of cloud computing management, are likely to support the performance of the CIAM market. However, the expansion of the global CIAM market is projected to be restricted by the risk associated with identity and access management technologies.</p>\n<p>Finally, a CIAM product should include the following features:</p>\n<ul>\n<li>Onboarding and verification of users</li>\n<li>Management of users and attributes</li>\n<li>Adaptive and strong authentication</li>\n<li>Management of privacy and consent</li>\n<li>Services for self-care by customers</li>\n<li>Compatibility with business apps and tools</li>\n<li>Analytics and the detection of fraud</li>\n</ul>\n<h2 id=\"the-bottom-line\" style=\"position:relative;\"><a href=\"#the-bottom-line\" aria-label=\"the bottom line permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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 Bottom Line</h2>\n<p>The goal of digital transformation is to <a href=\"https://www.loginradius.com/customer-experience-solutions/\">improve the customer experience</a>. Customers today, who are becoming more intelligent, see digital interactions as the primary means of interacting with products and services. They demand deeper online connections be provided simply, securely, and effortlessly. CIAM is critical in connecting apps and APIs to clients.</p>\n<p>Consumer behavior and aspirations have never been static. A consumer identity management solution may be a valuable strategic asset for CMOs to utilize in their department. </p>\n<p><a href=\"https://www.loginradius.com/book-a-demo/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABdElEQVQY002RO0/CUBzFG6PtbZWHCAmRmBB5P8vDII9SSC0omog4oAEGjZMO6OKEuLjoJ2Fx0cSBwUQnXZxcHPwux38LJA7nNvfec8+5v1tOCCiwpbbhye2BxbYgBMtgIRVioDRRsARGXxZUzLlEHmehBaesQ4rrEMPViYf2DR9nDGKkChbVICVqsMt1WJI1sHCFwhUsUIFohJH49TxECvRUjhDW2mAbB5iP6hB8hUkhiRPN5KIZYJdrsEYrcCSpmQqMm6/m9ylUhSulY7N5ivROB3L9GOlGF3Ktbc4zuz341UPw/uIk0ESbBjoSGlYIx8BfzjSwVmyCEYEUUmCPa3Bnd+hwC75yC95S05SxbolU/iEbOCFCpDexEfIioTNCNd6Tp6IlMnNuGeeDe3z//OLx5RWj5zFGT2O8fXxh/P4Ja6w6vSEFCnTIlW2YiDzhzX7ATFKojDlvjpBPcDF4QPdyiG5/iE7/BmfXd+hd3VKpCoG8fzxWw2+c+yTpAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"book-a-demo-loginradius\"\n        title=\"book-a-demo-loginradius\"\n        src=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png\"\n        srcset=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/a6d36/book-a-demo-loginradius.png 650w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png 768w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/63ff0/book-a-demo-loginradius.png 2887w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"November 22, 2021","updated_date":null,"description":"CMOs can deliver more efficient, secure, and relevant services and goods if they have a detailed grasp of who their customers are and what they require. Learn how a CIAM solution may be a valuable strategic asset for CMOs to utilize in their department.","title":"Why CMOs should care about CIAM","tags":["data security","ciam solution","cx","mfa"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.9607843137254901,"src":"/static/2de510b16f811f6d0b772c0c37f4793e/14b42/cmo-ciam.jpg","srcSet":"/static/2de510b16f811f6d0b772c0c37f4793e/f836f/cmo-ciam.jpg 200w,\n/static/2de510b16f811f6d0b772c0c37f4793e/2244e/cmo-ciam.jpg 400w,\n/static/2de510b16f811f6d0b772c0c37f4793e/14b42/cmo-ciam.jpg 800w,\n/static/2de510b16f811f6d0b772c0c37f4793e/16310/cmo-ciam.jpg 1024w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.jpg"}}}},{"node":{"excerpt":"Introduction For organizations today, maintaining an array of productive networking tools is all about easy access. Enterprises often…","fields":{"slug":"/identity/federated-identity-management-vs-sso/"},"html":"<h2 id=\"introduction\" style=\"position:relative;\"><a href=\"#introduction\" aria-label=\"introduction permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Introduction</h2>\n<p>For organizations today, maintaining an array of productive networking tools is all about easy access. Enterprises often introduce new applications that support their production and help them implement their business strategies successfully. However, every time an application or tool gets implemented, the end-users are forced to create new credentials for access.</p>\n<p>As a result, employees and customers end up with too many passwords to remember. Unfortunately, remembering all the different credentials is easier said than done. More than <a href=\"https://www.techrepublic.com/article/25-of-employees-admit-that-they-use-the-same-password-for-everything/\">60% of employees</a> use the same password for their work and personal applications, leading to greater vulnerability to data breaches. And about 13% of users reuse passwords on all their accounts regularly. In fact, compromised passwords are accountable for 81% of hacking-related breaches. </p>\n<p>Enterprises need to use methods to maximize the use of digital identities for multiple users. And tools like <a href=\"https://www.loginradius.com/blog/identity/what-is-single-sign-on/\">single sign-on (SSO)</a> and federated identity management (FIM) seem to be the go-to methods for most organizations. However, most companies do not understand the differences between these two methods. And the implications they may have on the overall company security.</p>\n<p>What is SSO, how is it different from FIM, and what are the benefits of both methods? Let's find out all the aspects associated with federated identity management vs SSO. </p>\n<h2 id=\"what-is-single-sign-on\" style=\"position:relative;\"><a href=\"#what-is-single-sign-on\" aria-label=\"what is single sign on permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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 Single Sign-On?</h2>\n<p>Since the early days of the internet, using a single digital identity for multiple logins was considered a risk from cybersecurity's perspective. And it is indeed. However, logging in to different web applications one by one is time-consuming, inconvenient, and disrupts the workflow. The solution to this dilemma lies with SSO. </p>\n<p>A <a href=\"https://www.loginradius.com/single-sign-on/\">single sign-on</a> or SSO is an authentication scheme that allows users to access multiple web applications securely through a single set of credentials. For example, it's what lets you browse your Gmail account in one tab and use Youtube in another tab on your browser. </p>\n<p>It also allows web services like online banking to grant access to various sections within the same account. Typically, your savings and general account are very distinct and require separate login credentials. However, with SSO, when you click on another section of your account, the site re-authenticates you with the credentials you used during the initial login.</p>\n<p>In enterprises, it lets employees access various business applications like HR functions, financial records, and more with only one login credential. </p>\n<h2 id=\"how-single-sign-on-works\" style=\"position:relative;\"><a href=\"#how-single-sign-on-works\" aria-label=\"how single sign on works permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How Single Sign-On Works?</h2>\n<p>SSO is a <a href=\"https://www.loginradius.com/blog/identity/pros-cons-token-authentication/\">token-based system</a>, which means users are assigned a token for identification instead of a password. Let's say you go to an application you want to use; you will receive a security token that contains all your information (like your email address, username, etc.). Then, an Identity Provider compares this token to the credentials you provide during login and grants your authentication.</p>\n<h2 id=\"benefits-of-single-sign-on\" style=\"position:relative;\"><a href=\"#benefits-of-single-sign-on\" aria-label=\"benefits of single sign on permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Benefits of Single Sign-On</h2>\n<h3 id=\"1-reduces-costs-and-password-resets\" style=\"position:relative;\"><a href=\"#1-reduces-costs-and-password-resets\" aria-label=\"1 reduces costs and password resets permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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. Reduces costs and password resets</h3>\n<p>It eliminates the need for frequent password resets and reduces customer care calls, lowering IT costs.</p>\n<h3 id=\"2-streamlines-production\" style=\"position:relative;\"><a href=\"#2-streamlines-production\" aria-label=\"2 streamlines production permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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. Streamlines production</h3>\n<p>It eliminates the need for employees to remember multiple passwords and can cut down the time it takes to access the resources they need to do their jobs securely.</p>\n<h3 id=\"3-enhanced-customer-experience\" style=\"position:relative;\"><a href=\"#3-enhanced-customer-experience\" aria-label=\"3 enhanced customer experience permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>3. Enhanced customer experience</h3>\n<p>It allows customers to access all the services and products an organization offers through a single login, removing the vexation of logging in multiple times.</p>\n<h3 id=\"4-reliable-security\" style=\"position:relative;\"><a href=\"#4-reliable-security\" aria-label=\"4 reliable 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>4. Reliable security</h3>\n<p>Most SSO platforms now have built-in security integrations with thousands of software applications. And, one password can grant you access to all of them.</p>\n<h2 id=\"challenges-in-single-sign-on-sso\" style=\"position:relative;\"><a href=\"#challenges-in-single-sign-on-sso\" aria-label=\"challenges in 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>Challenges in Single Sign-On (SSO)</h2>\n<h3 id=\"1-integration-complexity\" style=\"position:relative;\"><a href=\"#1-integration-complexity\" aria-label=\"1 integration complexity permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>1. Integration Complexity</h3>\n<p>Implementing SSO across heterogeneous IT environments with diverse applications and systems can be challenging. Ensuring seamless integration and compatibility with existing infrastructure requires careful planning and coordination.</p>\n<h3 id=\"2-user-experience\" style=\"position:relative;\"><a href=\"#2-user-experience\" aria-label=\"2 user experience permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>2. User Experience</h3>\n<p>While SSO aims to enhance user experience by simplifying authentication processes, issues such as session management, logout procedures, and cross-domain authentication can impact usability. Ensuring a seamless and intuitive user experience is crucial to maximize the benefits of SSO.</p>\n<h3 id=\"3-security-concerns\" style=\"position:relative;\"><a href=\"#3-security-concerns\" aria-label=\"3 security concerns permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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. Security Concerns</h3>\n<p>SSO introduces potential security risks, as compromising the user's single sign-on credentials can grant unauthorized access to multiple applications and systems. Implementing robust authentication mechanisms, such as multi-factor authentication (MFA) and encryption, is essential to mitigate security threats.</p>\n<h3 id=\"4-vendor-lock-in\" style=\"position:relative;\"><a href=\"#4-vendor-lock-in\" aria-label=\"4 vendor lock in permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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. Vendor Lock-in</h3>\n<p>Depending on third-party SSO solutions can lead to vendor lock-in, limiting flexibility and scalability. Organizations must evaluate vendor dependencies and consider interoperability with other identity management solutions to avoid potential vendor lock-in issues.</p>\n<h3 id=\"5-identity-lifecycle-management\" style=\"position:relative;\"><a href=\"#5-identity-lifecycle-management\" aria-label=\"5 identity lifecycle management permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>5. Identity Lifecycle Management</h3>\n<p>Managing the lifecycle of user identities, including provisioning, deprovisioning, and access management, can be complex in SSO environments. Ensuring timely updates and synchronization of user attributes across all connected systems is essential to maintain data accuracy and security.</p>\n<h2 id=\"what-is-federated-identity-management-fim\" style=\"position:relative;\"><a href=\"#what-is-federated-identity-management-fim\" aria-label=\"what is federated identity management fim permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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 Federated Identity Management (FIM)?</h2>\n<p>When we talk about federated identity vs SSO, it’s crucial to understand what each individual system is about. <a href=\"https://www.loginradius.com/blog/identity/what-is-federated-identity-management/\">Federated Identity Management</a> (Identity Federation) is a system that allows users from different enterprises (domains) to use the same digital identity to access all their applications and networks. </p>\n<p>Through FIM, an enterprise maintains its unique management system. It is interlinked with other enterprises through a third service (the identity provider) that stores the credentials. The identity provider or identity broker also offers the trust mechanism required for FIM to work. </p>\n<h2 id=\"how-does-federated-identity-management-work\" style=\"position:relative;\"><a href=\"#how-does-federated-identity-management-work\" aria-label=\"how does federated identity management work permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>How Does Federated Identity Management Work?</h2>\n<p>While we explore sso vs federation, let’s quickly understand how federated identity management works. <a href=\"https://www.loginradius.com/federated-sso/\">Federated identity management</a> (FIM) is a system that enables the use of a single digital identity across multiple domains and organizations. The process begins when a user attempts to access a resource from a service provider. </p>\n<p>The service provider then sends a request to the user's identity provider, which authenticates the user's identity and provides the service provider with the necessary credentials to grant access to the requested resource. </p>\n<p>This process is known as identity federation and allows users to access resources from multiple organizations without the need for separate login credentials for each organization. The FIM system uses industry-standard protocols like <a href=\"https://www.loginradius.com/glossary/saml/\">SAML</a>, OAuth, and OpenID Connect to establish trust and securely exchange identity information between the identity provider and service provider.</p>\n<p><a href=\"https://www.loginradius.com/resource/federated-identity-management-datasheet\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABoUlEQVQY002Pz2vTcByGM9OmSfFHqeuaNmvSrM3SpunquqbJVqeHuQ0GQxwM2UXZRKRMBZEeRPDsXzJP28V5mAdhHhT/gakMZZ7cWett8vitP8AXHj6XDw/vK2lOB608LYhIlkOSpbYgQLOn0KxJVLOBMlpHMWrEdRfFapDyL3GuWCde8JF1B/m8JTCR06NImjPDgBGnybDpkjIczuRdCs1lrGCV02MhccMT0hpKzkW1m+SDBdxwjkR1FtkUYiGL/S9MlCLsiWnC2TnqwUUsL2JipYe/dI+s10HOV8lUQkHA8HgTvdJiZHDHL/wmbftknQZa1kZSxVxVzLX8CG8yoiqotBeZWdmk9+gpfmcJKeuiiXkxMVk1quheG6PWJucFpIo1TqULKBnrb0MhjBVbbO284Pj4KwfvP3D46TNHR1/48f0bl6/dQMo4SGdNur0nHHw8ZHt3j63t5zzb2eX1m3e8fLVPMlcSP/ofoWxOsbf/lkH6/T4/T074l/nVdaT0GEOZMq0rV7nz8DFrt+9z/dZdwSY3uw9Y2+iSEA2HUjl+ASPr1UetRulHAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"DS-fim\"\n        title=\"DS-fim\"\n        src=\"/static/ef0c27dd7f9672e1684d62550b85a3ba/e5715/DS-fim.png\"\n        srcset=\"/static/ef0c27dd7f9672e1684d62550b85a3ba/a6d36/DS-fim.png 650w,\n/static/ef0c27dd7f9672e1684d62550b85a3ba/e5715/DS-fim.png 768w,\n/static/ef0c27dd7f9672e1684d62550b85a3ba/81501/DS-fim.png 2886w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<h2 id=\"benefits-of-federated-identity-management\" style=\"position:relative;\"><a href=\"#benefits-of-federated-identity-management\" aria-label=\"benefits of federated identity management permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Benefits of Federated Identity Management</h2>\n<p>Federated identity management (FIM) offers several benefits to both users and organizations. For users, FIM provides a seamless experience across multiple domains and services, eliminating the need to remember and manage multiple usernames and passwords. </p>\n<p>FIM improves security by centralizing identity management and reducing the number of identity stores that need to be maintained. Organizations benefit from FIM by reducing the complexity and cost associated with managing multiple identities and credentials. </p>\n<p>FIM also enhances security by implementing consistent authentication and authorization policies across all domains and services, reducing the risk of unauthorized access and data breaches. </p>\n<p>Furthermore, FIM supports compliance by providing organizations with the ability to enforce regulatory requirements and audit access to sensitive resources.</p>\n<h2 id=\"challenges-in-federated-identity-management\" style=\"position:relative;\"><a href=\"#challenges-in-federated-identity-management\" aria-label=\"challenges in federated identity management permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Challenges in Federated Identity Management</h2>\n<h3 id=\"1-interoperability\" style=\"position:relative;\"><a href=\"#1-interoperability\" aria-label=\"1 interoperability permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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. Interoperability</h3>\n<p>Federated Identity Management (FIM) involves establishing trust between multiple identity providers across different organizations. Achieving interoperability between these disparate systems can be challenging, requiring standardized protocols and careful coordination.</p>\n<h3 id=\"2-security-risks\" style=\"position:relative;\"><a href=\"#2-security-risks\" aria-label=\"2 security risks permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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. Security Risks</h3>\n<p>FIM introduces potential security risks, as it involves sharing user identity information across organizational boundaries. Ensuring the secure transmission and storage of sensitive authentication data is crucial to mitigate the risk of data breaches and unauthorized access.</p>\n<h3 id=\"3-trust-establishment\" style=\"position:relative;\"><a href=\"#3-trust-establishment\" aria-label=\"3 trust establishment permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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. Trust Establishment</h3>\n<p>Establishing trust relationships between identity providers (IdPs) and service providers (SPs) requires mutual agreements and verification mechanisms. Building and maintaining trust can be complex, particularly in multi-party federations involving diverse stakeholders.</p>\n<h3 id=\"4-identity-mapping\" style=\"position:relative;\"><a href=\"#4-identity-mapping\" aria-label=\"4 identity mapping permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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. Identity Mapping</h3>\n<p>Mapping user identities across federated domains can be challenging, especially when dealing with different naming conventions, attribute formats, and data schemas. Ensuring accurate identity mapping is essential to maintain seamless user access across federated environments.</p>\n<h3 id=\"5-policy-enforcement\" style=\"position:relative;\"><a href=\"#5-policy-enforcement\" aria-label=\"5 policy enforcement permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 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. Policy Enforcement</h3>\n<p>Enforcing access control policies and authorization rules across federated domains can be complex, particularly when dealing with diverse regulatory requirements and organizational policies. Establishing consistent policy enforcement mechanisms is essential to ensure compliance and mitigate security risks.</p>\n<h2 id=\"federated-identity-management-vs-sso\" style=\"position:relative;\"><a href=\"#federated-identity-management-vs-sso\" aria-label=\"federated identity management vs 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>Federated Identity Management vs. SSO</h2>\n<p>While discussing sso vs federated identity, SSO and FIM are used together, they do not mean the same thing. While single sign-on is an important component of FIM, it is not the same as FIM. The main difference between Identity Federation and SSO or federated login vs SSO lies in the range of access.</p>\n<p>SSO allows users to use a single set of credentials to access multiple systems within a single organization (a single domain). On the other hand, FIM lets users access systems across federated organizations. They can access the applications, programs, and networks of all members within the federated group.</p>\n<p>If we follow the above bank example, customers can access various external banking services like loan applications or ordering checks seamlessly through a single login with FIM.</p>\n<h2 id=\"in-conclusion\" style=\"position:relative;\"><a href=\"#in-conclusion\" aria-label=\"in 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>In Conclusion</h2>\n<p>Expanding digital identity management can boost an organization's work efficiency by reducing authentication time for all programs and applications. As we discuss federated authentication vs sso, Using SSO or FIM have their benefits, along with the associated security and financial incentives. </p>\n<p>As you advance towards improving customer and employee support, these protocols can help you streamline password creation and <a href=\"https://www.loginradius.com/authentication/\">user authentication</a>.</p>\n<h2 id=\"faqs\" style=\"position:relative;\"><a href=\"#faqs\" aria-label=\"faqs permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>FAQs</h2>\n<p><strong>1. What is an example of a federated SSO?</strong></p>\n<p>An example is when a user logs into a third-party application (like Google) using their credentials from another identity provider (like Facebook).</p>\n<p><strong>2. What is federated SSO a mechanism?</strong></p>\n<p>Federated SSO is a mechanism allowing users to access multiple applications using a single set of credentials, authenticated across different organizations or domains.</p>\n<p><strong>3. Is identity federation the same as SSO?</strong></p>\n<p>No, identity federation is broader, involving the establishment of trust relationships between different identity providers, while SSO focuses on seamless access to multiple applications with one set of credentials.</p>\n<p><strong>4. What is federation identity management?</strong></p>\n<p>Federation identity management is a system allowing users from different organizations or domains to access shared resources using a single digital identity, managed through mutual trust agreements.</p>\n<p><strong>5. What is identity federation in AWS?</strong></p>\n<p>Identity federation in AWS enables users to access AWS resources securely using their existing identity credentials from external identity providers, such as Active Directory or SAML-based systems.</p>\n<p><a href=\"https://www.loginradius.com/book-a-demo/\"><span\n      class=\"gatsby-resp-image-wrapper\"\n      style=\"position: relative; display: block; margin-left: auto; margin-right: auto; max-width: 768px; \"\n    >\n      <span\n    class=\"gatsby-resp-image-background-image\"\n    style=\"padding-bottom: 30.307692307692307%; position: relative; bottom: 0; left: 0; background-image: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAGCAYAAADDl76dAAAACXBIWXMAAAsSAAALEgHS3X78AAABdElEQVQY002RO0/CUBzFG6PtbZWHCAmRmBB5P8vDII9SSC0omog4oAEGjZMO6OKEuLjoJ2Fx0cSBwUQnXZxcHPwux38LJA7nNvfec8+5v1tOCCiwpbbhye2BxbYgBMtgIRVioDRRsARGXxZUzLlEHmehBaesQ4rrEMPViYf2DR9nDGKkChbVICVqsMt1WJI1sHCFwhUsUIFohJH49TxECvRUjhDW2mAbB5iP6hB8hUkhiRPN5KIZYJdrsEYrcCSpmQqMm6/m9ylUhSulY7N5ivROB3L9GOlGF3Ktbc4zuz341UPw/uIk0ESbBjoSGlYIx8BfzjSwVmyCEYEUUmCPa3Bnd+hwC75yC95S05SxbolU/iEbOCFCpDexEfIioTNCNd6Tp6IlMnNuGeeDe3z//OLx5RWj5zFGT2O8fXxh/P4Ja6w6vSEFCnTIlW2YiDzhzX7ATFKojDlvjpBPcDF4QPdyiG5/iE7/BmfXd+hd3VKpCoG8fzxWw2+c+yTpAAAAAElFTkSuQmCC'); background-size: cover; display: block;\"\n  ></span>\n  <img\n        class=\"gatsby-resp-image-image\"\n        alt=\"book-a-demo-loginradius\"\n        title=\"book-a-demo-loginradius\"\n        src=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png\"\n        srcset=\"/static/fcc4c4b5dc38cc4528f99d09480f4eb2/a6d36/book-a-demo-loginradius.png 650w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/e5715/book-a-demo-loginradius.png 768w,\n/static/fcc4c4b5dc38cc4528f99d09480f4eb2/63ff0/book-a-demo-loginradius.png 2887w\"\n        sizes=\"(max-width: 768px) 100vw, 768px\"\n        style=\"width:100%;height:100%;margin:0;vertical-align:middle;position:absolute;top:0;left:0;\"\n        loading=\"lazy\"\n      />\n    </span></a></p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"November 22, 2021","updated_date":null,"description":"Enterprises need to use methods to maximize the use of digital identities for multiple users. Although SSO and FIM are used together, they do not mean the same thing. The main difference between Identity Federation and SSO lies in the range of access.","title":"Federated Identity Management vs. SSO: What's The Difference?","tags":["federated identity management","sso","data security"],"pinned":null,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.5037593984962405,"src":"/static/d0c6f2a6a299a0c2f53d7540cc65087e/33aa5/sso-vs-fim.jpg","srcSet":"/static/d0c6f2a6a299a0c2f53d7540cc65087e/f836f/sso-vs-fim.jpg 200w,\n/static/d0c6f2a6a299a0c2f53d7540cc65087e/2244e/sso-vs-fim.jpg 400w,\n/static/d0c6f2a6a299a0c2f53d7540cc65087e/33aa5/sso-vs-fim.jpg 768w","sizes":"(max-width: 768px) 100vw, 768px"}}},"author":{"id":"Kundan Singh","github":null,"avatar":null}}}}]},"markdownRemark":{"excerpt":"Identity is evolving, and developers are at the forefront of this transformation. Every day brings a new learning—adapting to new standards…","fields":{"slug":"/identity/developer-first-identity-provider-loginradius/"},"html":"<p>Identity is evolving, and developers are at the forefront of this transformation. Every day brings a new learning—adapting to new standards and refining approaches to building secure, seamless experiences.</p>\n<p>We’re here to support developers on that journey. We know how important simplicity, efficiency, and well-structured documentation are when working with identity and access management solutions. That’s why we’ve redesigned the <a href=\"https://www.loginradius.com/\">LoginRadius website</a>—to be faster, more intuitive, and developer-first in every way.</p>\n<p>The goal? Having them spend less time searching and more time building.</p>\n<h2 id=\"whats-new-and-improved-on-the-loginradius-website\" style=\"position:relative;\"><a href=\"#whats-new-and-improved-on-the-loginradius-website\" aria-label=\"whats new and improved on the loginradius website permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>What’s New and Improved on the LoginRadius Website?</h2>\n<p>LoginRadius’ vision is to give developers a product that simplifies identity management so they can focus on building, deploying, and scaling their applications. To enhance this experience, we’ve spent the last few months redesigning our interface— making navigation more intuitive and reassuring that essential resources are easily accessible.</p>\n<p>Here’s a closer look at what’s new and why it’s important:</p>\n<h3 id=\"a-developer-friendly-dark-theme\" style=\"position:relative;\"><a href=\"#a-developer-friendly-dark-theme\" aria-label=\"a developer friendly dark theme permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>A Developer-Friendly Dark Theme</h3>\n<p><img src=\"/f46881583c7518a93bb24e94c32320de/a-developer-friendly-dark-theme.webp\" alt=\"This image shows how LoginRadius offers several authentication methods like traditional login, social login, passwordless login, passkeys and more in a dark mode.\">    </p>\n<p>Developers spend long hours working in dark-themed IDEs and terminals, so we’ve designed the LoginRadius experience to be developer-friendly and align with that preference.</p>\n<p>The new dark mode reduces eye strain, enhances readability, and provides a seamless transition between a coding environment and our platform. Our new design features a clean, modern aesthetic with a consistent color scheme and Barlow typography, ensuring better readability. High-quality graphics and icons are thoughtfully placed to enhance the content without adding visual clutter.</p>\n<p>So, whether you’re navigating our API docs or configuring authentication into your system, our improved interface will make those extended development hours more comfortable and efficient.</p>\n<h3 id=\"clear-categorization-for-loginradius-capabilities\" style=\"position:relative;\"><a href=\"#clear-categorization-for-loginradius-capabilities\" aria-label=\"clear categorization for loginradius capabilities permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Clear Categorization for LoginRadius Capabilities</h3>\n<p><img src=\"/e5358b82be414940f3fb146013845933/capabilities.webp\" alt=\"This image shows a breakdown of all the LoginRadius CIAM capabilities, including authentication, security, UX, scalability and multi-brand management.\"></p>\n<p>We’ve restructured our website to provide a straightforward breakdown of our customer identity and access management platform capabilities, helping you quickly find what you need:</p>\n<ul>\n<li>Authentication: Easily understand <a href=\"https://www.loginradius.com/blog/identity/authentication-option-for-your-product/\">how to choose the right login method</a>, from traditional passwords and OTPs to social login, federated SSO, and passkeys with few lines of code.</li>\n<li>Security: Implement no-code security features like bot detection, IP throttling, breached password alerts, DDoS protection, and adaptive MFA to safeguard user accounts.</li>\n<li>User Experience: Leverage AI builder, hosted pages, and drag-and-drop workflows to create smooth, branded sign-up and login experiences.</li>\n<li>High Performance &#x26; Scalability: Confidently scale with sub-100ms API response times, 100% uptime, 240K+ RPS, and 28+ global data center regions.</li>\n<li>Multi-Brand Management: Efficiently manage multiple identity apps, choosing isolated or shared data stores based on your brand’s unique needs.</li>\n</ul>\n<p>This structured layout ensures you can quickly understand each capability and how it integrates into your identity ecosystem.</p>\n<h3 id=\"developer-first-navigation\" style=\"position:relative;\"><a href=\"#developer-first-navigation\" aria-label=\"developer first navigation permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Developer-First Navigation</h3>\n<p><img src=\"/a8c155c2b6faf3d5f4b4de4e2b14d763/developers-menu.webp\" alt=\"This image shows the LoginRadius menu bar, highlighting the developer dropdown.\">   </p>\n<p>We’ve been analyzing developer workflows to identify how you access key resources. That’s why we redesigned our navigation with one goal in mind: to reduce clicks and make essential resources readily available.</p>\n<p>The new LoginRadius structure puts APIs, SDKs, and integration guides right at the menu bar under the Developers dropdown so you can get started faster. Our Products, Solutions, and Customer Services are also clearly categorized, helping development teams quickly find the right tools and make informed decisions.</p>\n<h3 id=\"quick-understanding-of-integration-benefits\" style=\"position:relative;\"><a href=\"#quick-understanding-of-integration-benefits\" aria-label=\"quick understanding of integration benefits permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Quick Understanding of Integration Benefits</h3>\n<p><img src=\"/b2f9a964a2da0ea83e2f8596b833bba7/we-support-your-tech-stack.webp\" alt=\"This image shows a list of popular programming languages and frameworks offered by LoginRadius.\"></p>\n<p>Developers now have a clear view of the tech stack available with LoginRadius, designed to support diverse business needs.</p>\n<p>Our platform offers pre-built SDKs for Node.js, Python, Java, and more, making CIAM integration seamless across popular programming languages and frameworks.</p>\n<h2 id=\"over-to-you-now\" style=\"position:relative;\"><a href=\"#over-to-you-now\" aria-label=\"over to you now permalink\" class=\"anchor before\"><svg aria-hidden=\"true\" focusable=\"false\" height=\"16\" version=\"1.1\" viewBox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" d=\"M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z\"></path></svg></a>Over to You Now!</h2>\n<p>Check out our <a href=\"https://www.loginradius.com/\">revamped LoginRadius website</a> and see how the improved experience makes it easier to build, scale, and secure your applications.</p>\n<p>Do not forget to explore the improved navigation and API documentation, and get started with our free trial today. We’re excited to see what you’ll build with LoginRadius!</p>\n<style class=\"grvsc-styles\">\n  .grvsc-container {\n    overflow: auto;\n    -webkit-overflow-scrolling: touch;\n    padding-top: 1rem;\n    padding-top: var(--grvsc-padding-top, var(--grvsc-padding-v, 1rem));\n    padding-bottom: 1rem;\n    padding-bottom: var(--grvsc-padding-bottom, var(--grvsc-padding-v, 1rem));\n    border-radius: 8px;\n    border-radius: var(--grvsc-border-radius, 8px);\n    font-feature-settings: normal;\n  }\n  \n  .grvsc-code {\n    display: inline-block;\n    min-width: 100%;\n  }\n  \n  .grvsc-line {\n    display: inline-block;\n    box-sizing: border-box;\n    width: 100%;\n    padding-left: 1.5rem;\n    padding-left: var(--grvsc-padding-left, var(--grvsc-padding-h, 1.5rem));\n    padding-right: 1.5rem;\n    padding-right: var(--grvsc-padding-right, var(--grvsc-padding-h, 1.5rem));\n  }\n  \n  .grvsc-line-highlighted {\n    background-color: var(--grvsc-line-highlighted-background-color, transparent);\n    box-shadow: inset var(--grvsc-line-highlighted-border-width, 4px) 0 0 0 var(--grvsc-line-highlighted-border-color, transparent);\n  }\n  \n</style>","frontmatter":{"date":"February 21, 2025","updated_date":null,"description":"LoginRadius’ vision is to give developers a product that simplifies identity management so they can focus on building, deploying, and scaling their applications. To enhance this experience, we’ve redesigned our website interface, making navigation more intuitive and reassuring that essential resources are easily accessible.","title":"Revamped & Ready: Introducing the New Developer-First LoginRadius Website","tags":["Developer tools","API","Identity Management","User Authentication"],"pinned":true,"coverImage":{"childImageSharp":{"fluid":{"aspectRatio":1.7857142857142858,"src":"/static/80b4e4fbe176a10a327d273504607f32/58556/hero-section.webp","srcSet":"/static/80b4e4fbe176a10a327d273504607f32/61e93/hero-section.webp 200w,\n/static/80b4e4fbe176a10a327d273504607f32/1f5c5/hero-section.webp 400w,\n/static/80b4e4fbe176a10a327d273504607f32/58556/hero-section.webp 800w,\n/static/80b4e4fbe176a10a327d273504607f32/99238/hero-section.webp 1200w,\n/static/80b4e4fbe176a10a327d273504607f32/7c22d/hero-section.webp 1600w,\n/static/80b4e4fbe176a10a327d273504607f32/1258b/hero-section.webp 2732w","sizes":"(max-width: 800px) 100vw, 800px"}}},"author":{"id":"Rakesh Soni","github":"oyesoni","avatar":"rakesh-soni.jpg"}}}},"pageContext":{"limit":6,"skip":342,"currentPage":58,"type":"///","numPages":161,"pinned":"ee8a4479-3471-53b1-bf62-d0d8dc3faaeb"}},"staticQueryHashes":["1171199041","1384082988","2100481360","23180105","528864852"]}