Live Chat Icon For mobile
Live Chat Icon
Popular Categories.NET  (143).NET Core  (23)Angular  (39)ASP.NET  (47)ASP.NET Core  (53)ASP.NET MVC  (84)Azure  (27)Blazor  (50)DocIO  (18)Essential JS 2  (65)Essential Studio  (159)Flutter  (53)JavaScript  (135)Microsoft  (96)PDF  (48)React  (29)Succinctly series  (118)Syncfusion  (403)TypeScript  (30)Uno Platform  (2)UWP  (4)Vue  (25)Webinar  (14)Windows Forms  (52)WPF  (92)Xamarin  (106)XlsIO  (20)Other CategoriesBarcode  (4)BI  (29)Bold BI  (3)Build conference  (6)Business intelligence  (53)Button  (4)C#  (100)Chart  (40)Cloud  (8)Company  (445)Dashboard  (4)Data Science  (3)Data Validation  (2)DataGrid  (31)Development  (235)Doc  (7)eBook  (89)Enterprise  (22)Entity Framework  (5)Essential Tools  (14)Excel  (14)Extensions  (7)File Manager  (3)Gantt  (6)Gauge  (4)Git  (3)Grid  (25)HTML  (8)Installer  (1)Knockout  (2)LINQPad  (1)Linux  (1)M-Commerce  (1)Metro Studio  (11)Mobile  (141)Mobile MVC  (9)OLAP server  (1)Orubase  (12)Partners  (20)PDF viewer  (15)Performance  (2)PHP  (1)PivotGrid  (4)Predictive Analytics  (6)Report Server  (3)Reporting  (10)Reporting / Back Office  (11)Rich Text Editor  (5)Road Map  (9)Scheduler  (15)SfDataGrid  (7)Silverlight  (21)Sneak Peek  (12)Solution Services  (2)Spreadsheet  (2)SQL  (4)Stock Chart  (1)Surface  (4)Tablets  (5)Theme  (9)Tips and Tricks  (18)UI  (66)Uncategorized  (68)Unix  (2)User interface  (49)Visual State Manager  (1)Visual Studio  (12)Visual Studio Code  (7)Web  (101)What's new  (62)Windows 8  (19)Windows App  (1)Windows Phone  (15)Windows Phone 7  (9)WinRT  (26)
Share on twitter
Share on facebook
Share on linkedin

Easy Steps to Integrate ASOS in ASP.NET Core API

ASOS (AspNet.Security.OpenIdConnect.Server) is an advanced OAuth2 for ASP.NET Core 1.x and 2.x. In this article, we explain the integration process of ASOS, corresponding to client_credentials and password grant types, to enable:

Token-based authentication

Token-based authentication is the process of creating a token and attaching it with a HTTP request, which will be made to access an API. If a valid token is attached, then the request will be allowed. If an invalid token is attached, then the request will be rejected.

This is the type of authentication that will work while calling with client_credentials grant type.

Prerequisites

  • Client ID for API
  • Client secret ID for API

Startup.cs configure services

services.AddAuthentication().AddOpenIdConnectServer(options =>
{
    options.AllowInsecureHttp = true;
    options.AccessTokenLifetime = TimeSpan.FromMinutes(60); //Provide token expiry here.
    options.TokenEndpointPath = "/token"; //Provide token end point path here.
    options.Provider.OnValidateTokenRequest = context =>
    {
        //["ClientCredentials:ClientId"] denotes your API client id in the format of string.
        //["ClientCredentials:ClientSecret"] denotes your API client secret id in the format of string.
        if (context.ClientId == ["ClientCredentials:ClientId"] && context.ClientSecret == ["ClientCredentials:ClientSecret"])
        {
            context.Validate();
        }
        else
        {
            context.Reject(
                        error: OpenIdConnectConstants.Errors.InvalidClient,
                        description: "Invalid Client details");
        }
        return Task.CompletedTask;
    };
});
services.AddAuthentication(OAuthValidationDefaults.AuthenticationScheme).AddOAuthValidation();

User-based authentication

This type of authentication will work while calling with a password of grant type.

Prerequisites

You should have user login credentials to allow users to access a particular API request.

Startup.cs configure services

options.Provider.OnHandleTokenRequest = context =>
{
    if (!string.IsNullOrEmpty(context.Request.Username) && !string.IsNullOrEmpty(context.Request.Password) && context.Request.IsPasswordGrantType())
    {
        bool loginValidation = GetLoginvalidation(context.Request.Username, context.Request.Password);
        if (!loginValidation)
        {
            context.Reject(
            error: OpenIdConnectConstants.Errors.InvalidGrant,
            description: loginValidation);

            return Task.CompletedTask;
        }
        else 
        {
            // If user information is correct, you can do customized changes like adding in claims in this block based on your requirement.
        }
    }
};

Additional points to be considered

  • Add UseAuthentication() to make the previous authentication work. Add this above app.UseMvc() in the configure method in startup.cs.
  • The controller of each request should have the authorized filter to authorize each request.
[Authorize]
public JsonResult Login()
{
  return;
}

Conclusion

In this blog, we have seen the integration process of ASOS in ASP.NET Core API to enable token-based authentication and user-based authentication.

Syncfusion provides 70+ ASP.NET Core UI controls such as DataGrid, Charts, and Scheduler. You can use them to speed up your application development.

If you have any questions, please let us know in the comments section below. You can contact us through our support forum, Direct-Trac, or Feedback Portal. We are waiting to hear your feedback!

Tags:

Share this post:

Share on twitter
Share on facebook
Share on linkedin

Comments (2)

Hi Priyanka, Why OpenIdConnectServer isn’t available for .net core 3.1 ?. Actually i’m trying to migrate one of project to core 3.1 and i’m stuck here. This is the code which i want to add in startup.cs =>
OAuthOptions = new OAuthAuthorizationServerOptions
{
TokenEndpointPath = new PathString(“/Token”),
Provider = new AppOAuthProvider(PublicClientId),
AuthorizeEndpointPath = new PathString(“/Account/ExternalLogin”),
AccessTokenExpireTimeSpan = TimeSpan.FromHours(4),
AllowInsecureHttp = true //Don’t do this in production ONLY FOR DEVELOPING: ALLOW INSECURE HTTP!

};

It would be very helpful if you share some solution to overcome this problem. Thanks in advance.

Hi Sagar,

Please install the middleware named AspNet.Security.OpenIdConnect.Server in your .NET Core 3.1 project.
Once installed you can use same code mentioned in this blog.

If you face any issue after this middleware installation, please share us the error details.
Please let us know if any concern.

Regards,
Priyanka S.

Leave a comment

Popular Now

Be the first to get updates

Subscribe RSS feed
Scroll To Top