{"id":20014,"date":"2022-01-06T09:48:25","date_gmt":"2022-01-06T09:48:25","guid":{"rendered":"https:\/\/www.aceinfoway.com\/blog\/?p=20014"},"modified":"2022-06-06T13:38:08","modified_gmt":"2022-06-06T13:38:08","slug":"asp-net-core-authentication-for-spas","status":"publish","type":"post","link":"https:\/\/www.aceinfoway.com\/blog\/asp-net-core-authentication-for-spas","title":{"rendered":"ASP.NET Core Authentication and Authorization for Single Page Apps (SPAs)"},"content":{"rendered":"<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_37 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction\">\r\n<div class=\"ez-toc-title-container\">\r\n<p class=\"ez-toc-title\">Table of Contents<\/p>\r\n<span class=\"ez-toc-title-toggle\"><\/span><\/div>\r\n<nav><ul class='ez-toc-list ez-toc-list-level-1' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.aceinfoway.com\/blog\/asp-net-core-authentication-for-spas\/#Overview_of_ASPNET_Core_Authentication\" title=\"Overview of ASP.NET Core Authentication\">Overview of ASP.NET Core Authentication<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.aceinfoway.com\/blog\/asp-net-core-authentication-for-spas\/#ASPNET_Core_Authentication_and_Authorization_for_Angular_based_SPAs\" title=\"ASP.NET Core Authentication and Authorization for Angular based SPAs\">ASP.NET Core Authentication and Authorization for Angular based SPAs<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.aceinfoway.com\/blog\/asp-net-core-authentication-for-spas\/#Take-Aways\" title=\"Take-Aways\">Take-Aways<\/a><\/li><\/ul><\/nav><\/div>\r\n<div  class=\"fusion-fullwidth fullwidth-box nonhundred-percent-fullwidth\"  style='background-color: rgba(255,255,255,0);background-position: center center;background-repeat: no-repeat;padding-top:20px;padding-right:30px;padding-bottom:20px;padding-left:30px;'><div class=\"fusion-builder-row fusion-row \"><div  class=\"fusion-layout-column fusion_builder_column fusion_builder_column_1_1  fusion-one-full fusion-column-first fusion-column-last wireframe-post-single 1_1\"  style='margin-top:0px;margin-bottom:20px;'>\n\t\t\t<div class=\"fusion-column-wrapper\" style=\"background-position:left top;background-repeat:no-repeat;-webkit-background-size:cover;-moz-background-size:cover;-o-background-size:cover;background-size:cover;\"  data-bg-url=\"\">\n\t\t\t\t<p>Change is inevitable, the only thing that remains static is users&#8217; approach to finding a solution that is more efficient and economical. The same goes for applications, which have evolved a lot in the course of recent years, starting from the <strong>Multi-Page Application (MPA)<\/strong> to a faster and extremely responsive <strong>Single Page Applications (SPAs)<\/strong>. To amplify market reach and meet customer needs, the companies are focusing on providing solutions that enhance the user experience.<\/p>\n<p><strong>Application Security<\/strong>, being one of the major points of concern in <strong>SPAs<\/strong> as well as a contributing factor in the user experience, should be handled carefully. In this highly techno-friendly world, the SPAs are no more limited to mobile devices and computers &#8211; it has reached television and IoT-based gadgets as well, requiring them to be more versatile, efficient, and fast. Hence, controlling and maintaining the security of the application brings about a significantly more mind-boggling programming condition with these many moving pieces, requiring you to take care of the various security factors like authentication and authorization at the client end.<\/p>\n<p><strong>Peruser Digest:<\/strong><\/p>\n<ul>\n<li><strong>Authentication \u2014<\/strong>\u00a0the process of determining whether a user is the same who actually they claim to be.<\/li>\n<li><strong>Authorization\u00a0\u2014<\/strong>\u00a0the process of determining what resources are accessible to the given user, and at what level.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Overview_of_ASPNET_Core_Authentication\"><\/span>Overview of ASP.NET Core Authentication<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Authentication is the process of determining the identity of the user. Moreover, it is the process of determining whether a user has access to a resource. In ASP.NET Core, authentication is handled by the authentication service, IAuthenticationService, which is used by the authentication middleware. The authentication service uses registered authentication handlers to perform authentication-related tasks. Examples of actions related to authentication include:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Authenticating a user.<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Responding when an unauthorized user tries to access a restricted resource.<\/span><\/li>\n<\/ul>\n<p>Considering the versatility of SPAs and security requirements, Microsoft has come up with a revolutionary idea of shifting the Authorization and Authentication control to the backend i.e. .net itself by adding the authentication parameter(similar to the Web Apps project templates) to the project template of Angular as well as React, as introduced in ASP.NET Core 3.0.<\/p>\n<p>According to <a href=\"https:\/\/docs.microsoft.com\/en-us\/aspnet\/core\/security\/authentication\/identity-api-authorization?view=aspnetcore-3.1\" target=\"_blank\" rel=\"noopener\">Microsoft<\/a>, <strong>\u201c<\/strong><em>The ASP.NET Core 3.1 and later templates offer authentication in Single Page Apps (SPAs) using the support for API authorization. ASP.NET Core Identity for authenticating and storing users is combined with Duende Identity Server for implementing OpenID Connect.<\/em><strong>\u201d<\/strong><\/p>\n<p><strong>Peruser Digest:<\/strong><\/p>\n<ul>\n<li><strong>Identity\u00a0\u2014<\/strong>\u00a0Identity, a membership system for authentication and authorization of the user, is closely related to the UI of the ASP.NET application and manages the attributes related to the user.<\/li>\n<li><strong>OIDC\u00a0\u2014 \u00a0<\/strong>OIDC refers to OpenID Connect, which is an identity and authentication protocol layer built and placed above the OAuth protocol that allows apps to verify the user identity.<\/li>\n<li><strong>OAuth\u00a0\u2014\u00a0<\/strong>OAuth, an open standard for authorization, provides secure access to the app, empowering to act on the behalf of the user.<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"ASPNET_Core_Authentication_and_Authorization_for_Angular_based_SPAs\"><\/span><strong>ASP.NET Core Authentication and Authorization for Angular based SPAs<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p>Let\u2019s say you are developing a SPA based on Angular, you will find the support for the authentication and API authorization within the Angular module itself, which is present in the API authorization directory.<\/p>\n<h3>Elements of the Angular Module<\/h3>\n<p>The Angular Module, responsible for the authentication and authorization process, defines the routes associated with those parts of the application accountable for the authentication. The module expounds the elements like <strong>the login menu component, the Authorise guard, the Authorise interceptor <\/strong>as well as various <strong>Authorise services <\/strong>for using other parts of the app.<\/p>\n<ul>\n<li><strong>Login Menu Components:<\/strong> handles the Login and Logout flow.<\/li>\n<li><strong>AuthorizeGuard:<\/strong> authenticates the user before visiting the route.<\/li>\n<li><strong>AuthorizeInterceptor:<\/strong> attaches the access token after the authentication is done by the Authorise guard.<\/li>\n<li><strong>AuthorizeService:<\/strong> interacts with the other parts of the application and exposes the user information with them.<\/li>\n<\/ul>\n<p>This was a brief introduction to the Angular Module, let\u2019s proceed further with check out the steps to implement this in your SPA.<\/p>\n<h3><strong>How to implement ASP.NET Core Authentication and Authorization in Angular-based SPAs?<\/strong><\/h3>\n<p>The Authentication and Authorization in the Angular-based SPAs can be implemented in the following steps.<\/p>\n<p style=\"padding-left: 30px;\"><strong>1)<\/strong> Add <b>&lt;Authorize&gt;\u00a0<\/b>attribute to the newly created controller, in order to require authorization for the new API.<\/p>\n<p style=\"padding-left: 30px;\"><span style=\"font-weight: 400;\"><strong>2)<\/strong> Customize the\u00a0 API authentication handler i.e. <\/span><b>JWT(JSON Web Token)<\/b><span style=\"font-weight: 400;\"> Handler by configuring\u00a0<b>&lt;JwtBearerOptions&gt;<\/b>\u00a0<\/span><span style=\"font-weight: 400;\">the instance.<\/span><\/p>\n<p style=\"padding-left: 30px;\">The JWT(JSON Web Token) handler creates events through JwtBearerEvents, that facilitate control over the authentication process and the instruction AddIdentityServerJwt registers its own event handlers in order to aid the API authorization. To include it into your application, you customize it and can incorporate the required logic into the existing event handler.<\/p>\n<div class=\"code_contain\" style=\"padding-left: 30px;\"><code>services.AddAuthentication()<br \/>\n.AddIdentityServerJwt();<br \/>\nservices.Configure(<br \/>\nIdentityServerJwtConstants.IdentityServerJwtBearerScheme,<br \/>\noptions =&gt;<br \/>\n{<br \/>\n...<br \/>\n});<br \/>\n<\/code><\/div>\n<p style=\"padding-left: 30px;\"><strong>Source:\u00a0<\/strong><a href=\"https:\/\/docs.microsoft.com\/en-us\/aspnet\/core\/security\/authentication\/identity-api-authorization?view=aspnetcore-3.1\" target=\"_blank\" rel=\"noopener\">Microsoft<\/a><\/p>\n<p style=\"padding-left: 30px;\"><strong>3)<\/strong> Guard the client-side route through the <strong>AuthorizeGuard<\/strong>, hence preventing the unauthentic users from accessing the route. When the route is protected, <strong>AuthorizeInterceptor<\/strong> authenticates the API request by automatically attaching the token to the HTTP request<\/p>\n<p style=\"padding-left: 30px;\"><strong>4)\u00a0<\/strong>Now you can start with the production of your application, by providing the database for storing the user details and the access grants, as well as an SSL certificate as the application, can run only when the certificate is configured on the portal.<\/p>\n<p>Not only this but there are also various alternatives to configure your applications in the portal such as you can directly add the application to the list of the Client and resources through app settings or configure it through the code as well by overloading the AddApiAuthorization function.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Take-Aways\"><\/span>Take-Aways<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><span style=\"font-weight: 400;\">The API authorization in ASP.NET Core is highly dependent on the <\/span><a href=\"https:\/\/identityserver.io\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">IdentityServer<\/span><\/a><span style=\"font-weight: 400;\">, an identity and access control solution for ASP.NET projects, that includes <\/span><b>SSO (Single Sign-on), API authorization, identity management<\/b><span style=\"font-weight: 400;\">, and <\/span><b>API security<\/b><span style=\"font-weight: 400;\">. Even if you want to follow the latest <\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/dotnet\/core\/compatibility\/aspnetcore\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400;\">change introduced by Microsoft<\/span><\/a><span style=\"font-weight: 400;\">, you need to get acquainted with the IdentityServer and then follow the process mentioned above in this post.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">And that\u2019s it! Hence, if you are developing a Single Page Application (SPA) based on ASP.NET Core 3, it is advisable to have an expert team on your side to consult and create a software development project successfully.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">However, if the process seems arduous, <\/span><a href=\"https:\/\/www.aceinfoway.com\/dotnet\" target=\"_blank\" rel=\"noopener\"><b>Hire our experts and get the Custom ASP.NET Development Services<\/b><\/a><span style=\"font-weight: 400;\">, and leave the hassle up to them.<\/span><\/p>\n<div class=\"blog_bottom_banner\"><a href=\"https:\/\/www.aceinfoway.com\/Contact-Us\" target=\"_blank\" rel=\"noopener\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-20016 size-full\" src=\"https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core_cta.jpg\" alt=\"Authentication and authorization for SPAs through ASP.NET Core_cta\" width=\"836\" height=\"273\" \/><\/a><\/div>\n<div class=\"fusion-clearfix\"><\/div>\n\n\t\t\t<\/div>\n\t\t<\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":769419,"featured_media":20015,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[649,646],"tags":[389,388,390,391,392],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.10 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\r\n<title>ASP.NET Core Authentication and Authorization for SPAs<\/title>\r\n<meta name=\"description\" content=\"ASP.NET Core authentication and API authorization for Single page apps (SPAs) \u2014 Follow the easiest process mentioned in this article and go ahead.\" \/>\r\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\r\n<link rel=\"canonical\" href=\"https:\/\/www.aceinfoway.com\/blog\/asp-net-core-authentication-for-spas\" \/>\r\n<meta property=\"og:locale\" content=\"en_US\" \/>\r\n<meta property=\"og:type\" content=\"article\" \/>\r\n<meta property=\"og:title\" content=\"ASP.NET Core Authentication and Authorization for SPAs\" \/>\r\n<meta property=\"og:description\" content=\"ASP.NET Core authentication and API authorization for Single page apps (SPAs) \u2014 Follow the easiest process mentioned in this article and go ahead.\" \/>\r\n<meta property=\"og:url\" content=\"https:\/\/www.aceinfoway.com\/blog\/asp-net-core-authentication-for-spas\" \/>\r\n<meta property=\"og:site_name\" content=\"Ace Infoway\" \/>\r\n<meta property=\"article:published_time\" content=\"2022-01-06T09:48:25+00:00\" \/>\r\n<meta property=\"article:modified_time\" content=\"2022-06-06T13:38:08+00:00\" \/>\r\n<meta property=\"og:image\" content=\"https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core.jpg\" \/>\r\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\r\n\t<meta property=\"og:image:height\" content=\"524\" \/>\r\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\r\n<meta name=\"author\" content=\"Vipul Patel\" \/>\r\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\r\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Vipul Patel\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\r\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.aceinfoway.com\/blog\/asp-net-core-authentication-for-spas\",\"url\":\"https:\/\/www.aceinfoway.com\/blog\/asp-net-core-authentication-for-spas\",\"name\":\"ASP.NET Core Authentication and Authorization for SPAs\",\"isPartOf\":{\"@id\":\"https:\/\/www.aceinfoway.com\/blog\/#website\"},\"datePublished\":\"2022-01-06T09:48:25+00:00\",\"dateModified\":\"2022-06-06T13:38:08+00:00\",\"author\":{\"@id\":\"https:\/\/www.aceinfoway.com\/blog\/#\/schema\/person\/d8ac0c9df1e05d018b93b759e766c551\"},\"description\":\"ASP.NET Core authentication and API authorization for Single page apps (SPAs) \u2014 Follow the easiest process mentioned in this article and go ahead.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.aceinfoway.com\/blog\/asp-net-core-authentication-for-spas#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.aceinfoway.com\/blog\/asp-net-core-authentication-for-spas\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.aceinfoway.com\/blog\/asp-net-core-authentication-for-spas#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.aceinfoway.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ASP.NET Core Authentication and Authorization for Single Page Apps (SPAs)\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.aceinfoway.com\/blog\/#website\",\"url\":\"https:\/\/www.aceinfoway.com\/blog\/\",\"name\":\"Ace Infoway\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.aceinfoway.com\/blog\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.aceinfoway.com\/blog\/#\/schema\/person\/d8ac0c9df1e05d018b93b759e766c551\",\"name\":\"Vipul Patel\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.aceinfoway.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f2d72931f141a85b2e53b3a0c67b5dea?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f2d72931f141a85b2e53b3a0c67b5dea?s=96&d=mm&r=g\",\"caption\":\"Vipul Patel\"},\"description\":\"Vipul is a passionate techie and loves to get involved in high pace projects which involves creating business optimized applications, business processes, and strategies to maximize business growth with a clear focus on expertise in SaaS domain.\"}]}<\/script>\r\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"ASP.NET Core Authentication and Authorization for SPAs","description":"ASP.NET Core authentication and API authorization for Single page apps (SPAs) \u2014 Follow the easiest process mentioned in this article and go ahead.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.aceinfoway.com\/blog\/asp-net-core-authentication-for-spas","og_locale":"en_US","og_type":"article","og_title":"ASP.NET Core Authentication and Authorization for SPAs","og_description":"ASP.NET Core authentication and API authorization for Single page apps (SPAs) \u2014 Follow the easiest process mentioned in this article and go ahead.","og_url":"https:\/\/www.aceinfoway.com\/blog\/asp-net-core-authentication-for-spas","og_site_name":"Ace Infoway","article_published_time":"2022-01-06T09:48:25+00:00","article_modified_time":"2022-06-06T13:38:08+00:00","og_image":[{"width":1024,"height":524,"url":"https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core.jpg","type":"image\/jpeg"}],"author":"Vipul Patel","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Vipul Patel","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.aceinfoway.com\/blog\/asp-net-core-authentication-for-spas","url":"https:\/\/www.aceinfoway.com\/blog\/asp-net-core-authentication-for-spas","name":"ASP.NET Core Authentication and Authorization for SPAs","isPartOf":{"@id":"https:\/\/www.aceinfoway.com\/blog\/#website"},"datePublished":"2022-01-06T09:48:25+00:00","dateModified":"2022-06-06T13:38:08+00:00","author":{"@id":"https:\/\/www.aceinfoway.com\/blog\/#\/schema\/person\/d8ac0c9df1e05d018b93b759e766c551"},"description":"ASP.NET Core authentication and API authorization for Single page apps (SPAs) \u2014 Follow the easiest process mentioned in this article and go ahead.","breadcrumb":{"@id":"https:\/\/www.aceinfoway.com\/blog\/asp-net-core-authentication-for-spas#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.aceinfoway.com\/blog\/asp-net-core-authentication-for-spas"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.aceinfoway.com\/blog\/asp-net-core-authentication-for-spas#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.aceinfoway.com\/blog\/"},{"@type":"ListItem","position":2,"name":"ASP.NET Core Authentication and Authorization for Single Page Apps (SPAs)"}]},{"@type":"WebSite","@id":"https:\/\/www.aceinfoway.com\/blog\/#website","url":"https:\/\/www.aceinfoway.com\/blog\/","name":"Ace Infoway","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.aceinfoway.com\/blog\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.aceinfoway.com\/blog\/#\/schema\/person\/d8ac0c9df1e05d018b93b759e766c551","name":"Vipul Patel","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.aceinfoway.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/f2d72931f141a85b2e53b3a0c67b5dea?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f2d72931f141a85b2e53b3a0c67b5dea?s=96&d=mm&r=g","caption":"Vipul Patel"},"description":"Vipul is a passionate techie and loves to get involved in high pace projects which involves creating business optimized applications, business processes, and strategies to maximize business growth with a clear focus on expertise in SaaS domain."}]}},"rttpg_featured_image_url":{"full":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core.jpg",1024,524,false],"landscape":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core.jpg",1024,524,false],"portraits":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core.jpg",1024,524,false],"thumbnail":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core-150x150.jpg",150,150,true],"medium":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core-300x154.jpg",300,154,true],"large":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core-1024x524.jpg",1024,524,true],"1536x1536":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core.jpg",1024,524,false],"2048x2048":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core.jpg",1024,524,false],"blog-large":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core-669x272.jpg",669,272,true],"blog-medium":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core-320x202.jpg",320,202,true],"portfolio-full":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core-940x400.jpg",940,400,true],"portfolio-one":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core-540x272.jpg",540,272,true],"portfolio-two":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core-460x295.jpg",460,295,true],"portfolio-three":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core-300x214.jpg",300,214,true],"portfolio-five":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core-177x142.jpg",177,142,true],"recent-posts":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core-700x441.jpg",700,441,true],"recent-works-thumbnail":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core-66x66.jpg",66,66,true],"200":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core-200x102.jpg",200,102,true],"400":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core-400x205.jpg",400,205,true],"600":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core-600x307.jpg",600,307,true],"800":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core-800x409.jpg",800,409,true],"1200":["https:\/\/www.aceinfoway.com\/blog\/wp-content\/uploads\/2020\/06\/Authentication-and-authorization-for-SPAs-through-ASP.NET-Core.jpg",1024,524,false]},"rttpg_author":{"display_name":"Vipul Patel","author_link":"https:\/\/www.aceinfoway.com\/blog\/author\/vipul-umretiya"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/www.aceinfoway.com\/blog\/web-app-development\" rel=\"category tag\">Web App Development<\/a> <a href=\"https:\/\/www.aceinfoway.com\/blog\/web-development\" rel=\"category tag\">Web Development<\/a>","rttpg_excerpt":null,"_links":{"self":[{"href":"https:\/\/www.aceinfoway.com\/blog\/wp-json\/wp\/v2\/posts\/20014"}],"collection":[{"href":"https:\/\/www.aceinfoway.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.aceinfoway.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.aceinfoway.com\/blog\/wp-json\/wp\/v2\/users\/769419"}],"replies":[{"embeddable":true,"href":"https:\/\/www.aceinfoway.com\/blog\/wp-json\/wp\/v2\/comments?post=20014"}],"version-history":[{"count":14,"href":"https:\/\/www.aceinfoway.com\/blog\/wp-json\/wp\/v2\/posts\/20014\/revisions"}],"predecessor-version":[{"id":22000,"href":"https:\/\/www.aceinfoway.com\/blog\/wp-json\/wp\/v2\/posts\/20014\/revisions\/22000"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.aceinfoway.com\/blog\/wp-json\/wp\/v2\/media\/20015"}],"wp:attachment":[{"href":"https:\/\/www.aceinfoway.com\/blog\/wp-json\/wp\/v2\/media?parent=20014"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.aceinfoway.com\/blog\/wp-json\/wp\/v2\/categories?post=20014"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.aceinfoway.com\/blog\/wp-json\/wp\/v2\/tags?post=20014"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}