Использование OAuth-провайдеров ASP.NET без удостоверения ASP.NET - PullRequest
0 голосов
/ 28 мая 2019

Мой проект использует членство asp.net (не Identity), я пытаюсь реализовать OAuth на основе шагов, перечисленных в этой ссылке

Во время тестирования кода он создалтаблицы идентификаторов в моей базе данных (AspNetUsers, AspNetUserRoles, AspNetRoles ...)

Я не хочу использовать эти таблицы, я хочу использовать их с таблицами членства (aspnet_Users, aspnet_Membership ...)

public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
{
    var applicationUserManager = context.OwinContext.GetUserManager<ApplicationUserManager>();
    //while executing this line, the identity tables are created
    var applicationUser = await applicationUserManager.FindAsync(context.UserName, context.Password);
    if (applicationUser == null)
    {
        context.SetError("invalid_grant", "The user name or password is incorrect.");
        return;
    }

    var claimsIdentityOAuth =
            await applicationUser.GenerateUserIdentityAsync(applicationUserManager,
                OAuthDefaults.AuthenticationType);
    var claimsIdentityCookie = await applicationUser.GenerateUserIdentityAsync(applicationUserManager,
    CookieAuthenticationDefaults.AuthenticationType);
    var properties = CreateProperties(applicationUser.UserName);
    var authenticationTicket = new AuthenticationTicket(claimsIdentityOAuth, properties);
    context.Validated(authenticationTicket);
    context.Request.Context.Authentication.SignIn(claimsIdentityCookie);
}

Как использовать OAuth с членством asp.net?

1 Ответ

1 голос
/ 28 мая 2019

Вы можете сделать это, но вам нужна пользовательская реализация Identity таблиц, а затем составить карту для желаемых таблиц, используя Entity Framework Code First

Пользовательские поставщики хранилища для удостоверения ASP.NET

 protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
        modelBuilder.Entity<IdentityUser>().ToTable("YouUserTableMembership");
        modelBuilder.Entity<ApplicationUser>().ToTable("YouUserTableMembership");

        modelBuilder.Entity<IdentityRole>().ToTable("role");
        modelBuilder.Entity<IdentityUserRole>().ToTable("YouUserRoleTableMembership");
        modelBuilder.Entity<IdentityUserClaim>().ToTable("YouUserClaimTableMembership");
        modelBuilder.Entity<IdentityUserLogin>().ToTable("YouUserLoginTableMembership");
    }
...