IdentityServer4-6 - 开始

IdentityServer4 开始

IdentityServer4 安装和概述

启动一个新的IdentityServer项目有两种基本方法:

  • 从头开始
  • 从Visual Studio中的ASP.NET身份模板开始

如果从头开始,我们提供了一些文档、项目帮助和内存存储支持,所以你从一开始就不必担心持久化。

如果您从ASP.NET Identity开始,我们提供了一种简单的方法来整合。

quickstart为各种常见的身份服务器场景提供了一步一步的指导。 他们从绝对的从基础开始,然后变得更加复杂 , 建议您按顺序进行操作。

每个quickstart都有一个参考解决方案 , 您可以在quickstarts文件夹中的IdentityServer4.Samples repo中找到代码。

基本安装

创建并且启动IdentityServer。

创建一个新的ASP.NET项目

然后选择空项目

接下来通过nuget添加IdentityServer4的包

你也可以通过程序包管理控制台执行以下命令:

1
Install-Package IdentityServer4

IdentityServer使用通常的模式来配置和添加服务到ASP.NET Core Host

在ConfigureServices中,所有必须的服务被配置并且添加到依赖注入系统中

在Configure中,中间件被添加到HTTP管道中

修改你的Startup.cs:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddIdentityServer()
.AddDeveloperSigningCredential();
}

public void Configure(IApplicationBuilder app, ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole(LogLevel.Debug);
app.UseDeveloperExceptionPage();

app.UseIdentityServer();
}
}

AddIdentityServer方法在依赖注入系统中注册IdentityServer,它还会注册一个基于内存存储的运行时状态,这对于开发场景非常有用,对于生产场景,您需要一个持久化或共享存储,如数据库或缓存。请查看使用EntityFramework Core实现的存储

UseDeveloperExceptionPage扩展在每次启动时,为令牌签名创建了一个临时密钥。在生成环境需要一个持久化的密钥。详细请点击

修改hosting

默认情况下,Visual Studio使用IIS Express来托管您的Web项目。 这是非常好的,除了你将无法看到实时日志输出到控制台。

IdentityServer广泛使用日志记录,而UI中的“可见”错误消息或返回给客户端是故意模糊的。

建议在控制台主机中运行IdentityServer。 您可以通过在Visual Studio中切换启动配置文件来执行此操作。 您也不需要每次启动IdentityServer时启动浏览器 ,您也可以关闭浏览器:

当您切换到self-hosting时,Web服务器端口默认为5000.您可以在上面的启动配置文件对话框中配置,也可以在Program.cs中进行配置,我们在quickstart中为IdentityServer Host使用以下配置:

1
2
3
4
5
6
7
8
9
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}

public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();

建议为IIS Express和自我托管配置相同的端口。 这样,您可以在两者之间进行切换,而无需修改客户端中的任何配置。

做到这一步,你会发现并不能运行。这边文章很基础,只是说明如何建立一个是使用IdentityServer4的项目,第一个可以运行的IdentityServer4项目请看我下篇文章。

所有的Demo都会根据官方的QuickStart项目来,但是官方的QiuckStart都是.net core 1.1的比较老了,我使用的是.net core 2.0,IdentityServer4是用的是目前支持.net core 2.0最新版本