将ASP.NET Core Identity设置为服务

时间:2017-07-18 08:27:35

标签: asp.net-mvc asp.net-core asp.net-identity

我非常年轻的MVC应用程序

我想创建一个向外部MVC应用程序提供身份的Web服务。

将ASP.NET Core Identity公开为服务的好处:

  • 实际的应用代码更简单,与其身份问题脱钩

  • 支持已建立的身份验证标准和模式可简化安全问题并建立信任

  • 身份服务可以存在于单独的流程中

  • 在多个应用中重复使用用户身份

这可能吗?我能做到的任何想法吗?

1 个答案:

答案 0 :(得分:1)

这是可能的。

这就是我们这样做的方式。

我们使用IdentityServer4为客户端生成JWT令牌。我们创建了一个简单的MVC项目,该项目具有以下简单的启动文件,可以为您提供一个想法。

public void ConfigureServices(IServiceCollection services)
    {
        services.AddIdentityServer()
        .AddSigningCredential(new X509Certificate2(Path.Combine(".", "cert", "token-cert.pfx"), "cert-password"))
        .AddInMemoryApiResources(Config.GetApiResources())
        .AddClientStore<CustomClientStore>();

        string connectionString = Configuration.GetConnectionString("DefaultConnection");
        // a data service to fetch user data from database
        services.AddTransient<IUserDataMapper>(s => new UserDataMapper(connectionString));
    }

    // 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();
        loggerFactory.AddDebug();

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
        }

        app.UseIdentityServer();

        app.Run(async (context) =>
        {
            await context.Response.WriteAsync("ACME Auth Token API v1.0");
        });
    }

您可以在https://identityserver4.readthedocs.io/en/release/quickstarts/1_client_credentials.html#defining-the-api

找到IdentityServer4的详细说明