我在 MVC 应用程序中非常年轻
我想创建一个为外部 MVC 应用程序提供标识的网络服务。
将 ASP.NET 核心标识公开为服务的好处:
-
实际的应用代码要简单得多,并且与其标识问题分离
-
对已建立的身份验证标准和模式的支持简化了安全问题并建立了信任
-
标识服务可以存在于单独的进程中
-
跨多个应用重复使用用户身份
这可能吗?我能做到的任何想法?
这是可能的。
这就是我们的做法。
我们使用 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 的详细说明