Поддерживает ли OpenIddict 2.0.0 RC3 Final таблицу AspNetUsers?

Я следил за видеоруководством по веб-ссылке ниже и получаю следующую ошибку при переходе к https://localhost:5001/connect/token:

сбой: Microsoft.AspNetCore.Server.Kestrel[13] Идентификатор подключения «0HLFGA04R3IV9», идентификатор запроса «0HLFGA04R3IV9: 00000001»: приложение выдало необработанное исключение. System.Data.SqlClient.SqlException (0x80131904): недопустимое имя объекта «OpenIddictApplications».

Насколько я могу судить, новый OpenIdDict не поддерживает таблицу AspNetUsers, созданную при миграции. Это правильно?

В этом уроке автор использует таблицу AspNetUsers. Примечание: автор использует OpenIddict 1.0. и я использую 2.0 RC3. Я не могу заставить мой образец проекта TodoList использовать таблицу AspNetusers. Можно ли заставить OpenIddict 2.0 использовать таблицу AspNetUsers? Если да, то как?

https://www.youtube.com/watch?v=GIQqIz1Gpvo&index=4&list=PLu4Bq53iqJJAo1RF0TY4Q5qCG7n9AqSZf

Startup.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.EntityFrameworkCore;
using TodoListAPI.Data;
using JsonApiDotNetCore.Extensions;
using Microsoft.AspNetCore.Cors;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.AspNetCore.Identity;
using OpenIddict.Abstractions;
using OpenIddict.Core;
using OpenIddict.EntityFrameworkCore.Models;
using OpenIddict.Validation;
using TodoListAPI.Models;
using AspNet.Security.OpenIdConnect.Primitives;
using Microsoft.IdentityModel.Tokens;

//// Some code here

public void ConfigureServices(IServiceCollection services)
{
    // Add framework services.
    services.AddMvc();

    services.AddCors(options => 
    {
        options.AddPolicy("AllowSpecificOrigins",
        builder =>
        {
            builder.WithOrigins("http://localhost:4200");
        });

        //options.AddPolicy("AllowAllOrigins",
        //builder =>
        //{
        //    builder.AllowAnyOrigin();
        //});
    });

    services.AddDbContext<AppDbContext>(opt => 
        {
            opt.UseSqlServer(this.GetConnectionString());
            opt.UseOpenIddict();
        });

    services.AddIdentity<ApplicationUser, IdentityRole>()
        .AddEntityFrameworkStores<AppDbContext>()
        .AddDefaultTokenProviders();

    services.AddOpenIddict()
        .AddCore(opt =>
        {
            opt.UseEntityFrameworkCore()
                .UseDbContext<AppDbContext>();
        })
        .AddServer(options =>
        {
            options.UseMvc();
            options.EnableTokenEndpoint("/connect/token");
            options.AllowPasswordFlow();
            options.AllowRefreshTokenFlow();
            options.DisableHttpsRequirement();
            options.AcceptAnonymousClients();
            // options.AllowAuthorizationCodeFlow();
        })
        .AddValidation()
        ;

    services.AddAuthentication(options => {
        options.DefaultScheme = OpenIddictValidationDefaults.AuthenticationScheme;
    });

    services.Configure<IdentityOptions>(options =>
    {
        options.ClaimsIdentity.UserNameClaimType = OpenIdConnectConstants.Claims.Name;
        options.ClaimsIdentity.UserIdClaimType = OpenIdConnectConstants.Claims.Subject;
        options.ClaimsIdentity.RoleClaimType = OpenIdConnectConstants.Claims.Role;
    });

    services.AddJsonApi<AppDbContext>(opt => opt.Namespace = "api/v1");
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
    loggerFactory.AddConsole(Configuration.GetSection("Logging"));
    loggerFactory.AddDebug();

    // Shows UseCors with CorsPolicyBuilder.
    //app.UseCors(builder => builder.WithOrigins("http://localhost:4200")); 
    app.UseCors("AllowSpecificOrigins");

    //app.UseIdentity();
    //app.UseOpenIddict();
    //app.useoauth

    app.UseAuthentication();
    app.UseMvcWithDefaultRoute();
    app.UseJsonApi();
}

person J Weezy    schedule 23.07.2018    source источник


Ответы (1)


Нашел ответ: https://stackoverflow.com/a/46329242/4630376

Оказывается, для OpenIddict требуются оба набора таблиц: таблицы ASP и OpenIddict.

person J Weezy    schedule 23.07.2018
comment
Правильно: OpenIddict полностью не связан с Identity и поэтому использует отдельные таблицы. - person Kévin Chalet; 24.07.2018