mini-software / MiniAuth

[Beta Status]Plugin Identity Auth System in ONE Line of Code for your project (Like Swagger)
https://www.nuget.org/packages/MiniAuth
Apache License 2.0
29 stars 7 forks source link

Support identity openapi standard #189

Open shps951023 opened 2 weeks ago

shps951023 commented 2 weeks ago

login

https://github.com/dotnet/aspnetcore/blob/main/src/Identity/Core/src/IdentityApiEndpointRouteBuilderExtensions.cs

Image

Image

{
  "tokenType": "Bearer",
  "accessToken": "CfDJ8JQ6UejBIoRIkUpEJR_892dspJ-O86oy40XNFLGLz60aayDqXmN_iBJbCi-XHSdECCl0wNlmk_z7jauKDhubjbvnzLIR3i5B4tJW81eLnGgeTlyMtKyeFi7Cuhtctsw2cgyyCdf18V46yYGtLfYMPdupbrJSyBFMhSpRwUjOPs1k-0CisA3i3wlv9G0wNj4n8S1LXQYzxiF5RqjAye_kqgfHtmJy3KY4_-PVTjaLyBT52v1a34ZLvWlcV_oHd32mgg9RRk_T_CSWCag2wL1XYlEP2MHQ61uOdpE_z-LkuxgOCpoubelPiaWLUZhyQySi256TyjW6DcDOOvqsrhu0-gkUWeykJKD0S80Q4bRXJxUgqFUFz_2u5M0ZnwxC4Q7BGrfCe5r9Yck8HbrbB7yddEBRUDeaVdMPSrt8ckhvZb55DwG1gmvri4L0ElbpUlrfS5srr6vDc-k6ERvwF00f4lS6g6ZC900xJuXTsdATVzWXUpnsYhLZhJNP89PNy0QFwF8F_x7vxHZzEDDP5QTOh1pP4hem3C4ubIIqiA23Hf-HjtuHvLMq7CuMpOpW9RnGucu8ut3hLyi6eWwa9wopoeVsRinbM8NvfnPtFfzAghxi9MaEPT57oFw3UlDgU8ASb4TXzx2AwRYeq0rrbq6YCnp9ZNmTZJzH8DaLkJE8flz9Wqk-ekjlsmK3MDx7qgdcnxuXTbs0k2c-P0XKL4WzgW8",
  "expiresIn": 3600,
  "refreshToken": "CfDJ8JQ6UejBIoRIkUpEJR_892eLslb7k4rBSVMLeyiE_Rc_fU3afrhLQpjI_m8PKfVbwK7PBjvY-_5gc_87F--SyHdiVaTAVbzwinMN9asPc4XLNuiPM6YsUBI1k6syOYaMRkhlkgJbFZ_YWEyeIcPxXzfVSqbWQE4rjhINhGFVWZz2qUlHjuBxQ6o5XcxUNOaKOHiyPleorR_keLdSXI8sY7706e10xqAhwVnhcJ_YLZItRdWAhYXPHrK2q994BiseITejRouNHhs4qfrgDI1JPnyIR8fWnrXoONBH3s0R94nqgr6AB2YIe6QvyFtiIOnI7_Q8ZuGlVs5OqMgHqYHPAWRehoJ9JlyQ4ZuqxBqLEDcu4H0YJT8WwfcO9k1-_2b7grgCzF5GX1D4_-juJu91pYuXR7QuQNcGPVIPVkLdVQMy18m-J87zGqhcL2xi3UC8cigvp6gvpKiU2ideIvPZtmYsJSulb1DTnh5FyfdJGt4nwuJiZYl7NJqxQIE-yyJPqse3c3t1nKCU9AUEFiNRLq5friuvNBCiZ_ich_bRIrbeJBHr-qHOQRzQqDXp62UrryVVVdE30I8YRsD9FmcLhKMxJofiez_ASFZvtWMzsD3DLKS5_he9oGW2ncQlGbBwoqVzB3-ft__WskSm0VurOeBsSw99cS0VbZ3VMRGs8VRkFnPuGukw-Yj4Rkx0JRm4OwAOvikl80w-9hccdNSBfpA"
}

Image

shps951023 commented 2 weeks ago

Register

{
  "type": "https://tools.ietf.org/html/rfc9110#section-15.5.1",
  "title": "One or more validation errors occurred.",
  "status": 400,
  "errors": {
    "DuplicateUserName": [
      "Username 'example@example.com' is already taken."
    ]
  }
}
shps951023 commented 2 weeks ago
    private static IdentityBuilder AddIdentityApiEndpoints<TUser, TContext>(IServiceCollection services)
        where TUser : class, new()
        where TContext : DbContext
    {
        return services.AddDbContext<TContext>((sp, options) => options.UseSqlite(sp.GetRequiredService<SqliteConnection>()))
            .AddIdentityApiEndpoints<TUser>().AddEntityFrameworkStores<TContext>();
    }
shps951023 commented 2 weeks ago
    public static IdentityBuilder AddIdentityApiEndpoints<TUser>(this IServiceCollection services, Action<IdentityOptions> configure)
        where TUser : class, new()
    {
        ArgumentNullException.ThrowIfNull(services);
        ArgumentNullException.ThrowIfNull(configure);

        services
            .AddAuthentication(IdentityConstants.BearerAndApplicationScheme)
            .AddScheme<AuthenticationSchemeOptions, CompositeIdentityHandler>(IdentityConstants.BearerAndApplicationScheme, null, compositeOptions =>
            {
                compositeOptions.ForwardDefault = IdentityConstants.BearerScheme;
                compositeOptions.ForwardAuthenticate = IdentityConstants.BearerAndApplicationScheme;
            })
            .AddBearerToken(IdentityConstants.BearerScheme)
            .AddIdentityCookies();

        return services.AddIdentityCore<TUser>(configure)
            .AddApiEndpoints();
    }