ASP.NET Core的身份认证框架IdentityServer4--(1)服务配置
2017-12-14 13:40
1836 查看
官网文档地址:点我点我
创建一个名为
创建一个名为
然后选择“空白”选项。
注:这里创建空的应用程序是为了后面方便引入UI界面
接下来,使用nuget添加
或者,也可以使用软件包管理器控制台通过运行以下命令来添加依赖项
在
在
在
扩展的
在
运行项目并在浏览器中访问:
准备
创建一个名为IdentityServer的ASP.NET Core Web Api 项目,端口5000
创建一个名为
Api的ASP.NET Core Web Api 项目,端口5001
创建一个名为
Web的应用程序,端口5002
基本配置
首先创建一个新的ASP.NET Core项目。然后选择“空白”选项。
注:这里创建空的应用程序是为了后面方便引入UI界面
接下来,使用nuget添加
IdentityServer4包
或者,也可以使用软件包管理器控制台通过运行以下命令来添加依赖项
Install-Package IdentityServer4
在
IdentityServer中使用通常的模式来配置和添加服务到ASP.NET Core Host
在
ConfigureServices中,所有的服务必须配置并且依赖注入到系统中。
在
Configure中,中间件被添加到HTTP管道中。
public void ConfigureServices(IServiceCollection services) { //配置身份服务器与内存中的存储,密钥,客户端和资源 services.AddIdentityServer().AddDeveloperSigningCredential(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } //添加到HTTP管道中。 app.UseIdentityServer(); app.Run(async (context) => { await context.Response.WriteAsync("Hello World!"); }); }
AddIdentityServer方法在依赖注入系统中注册IdentityServer,它还会注册一个基于内存存储的运行时状态,这对于开发场景非常有用,对于生产场景,您需要一个持久化或共享存储,如数据库或缓存。
扩展的
AddDeveloperSigningCredential用于签署令牌创建临时密钥。
修改hosting
修改启动端口,打开Properties下的launchSettings.json修改applicationUrl中的端口改为5000,注:这里修改启动端口是为了方便调试
使用客户端凭证保护API
在这种情况下,我们将定义一个API和一个想要访问它的客户端。客户端将在IdentityServer上请求访问令牌,并使用它来访问API。
在
IdentityServer项目中新建个
Config.cs类,并添加以下代码:
public static IEnumerable<ApiResource> GetApiResources() { return new List<ApiResource> { new ApiResource("api1", "My API") }; }
定义客户端
定义一个可以访问这个API的客户端。对于这种情况,客户端将不具有交互式用户,并将使用IdentityServer的所有客户端密钥进行身份验证。在
Config.cs中添加如下代码:
public static IEnumerable<Client> GetClients() { return new List<Client> { new Client { ClientId = "client", //没有交互式用户,使用clientid / secret进行身份验证 AllowedGrantTypes = GrantTypes.ClientCredentials, //秘密认证 ClientSecrets = { new Secret("secret".Sha256()) }, //客户端可以访问的范围 AllowedScopes = {"api1"} } }; }
注册IdentityServer服务
要配置IdentityServer以便使用定义好的访问控制,您需要向该
ConfigureServices方法添加代码。您可以使用方便的扩展方法 ,将相关的存储和数据添加到DI系统中:
public void ConfigureServices(IServiceCollection services) { //配置身份服务器与内存中的存储,密钥,客户端和资源 services.AddIdentityServer() .AddDeveloperSigningCredential() .AddInMemoryApiResources(Config.GetApiResources()) .AddInMemoryClients(Config.GetClients()); }
运行项目并在浏览器中访问:
http://localhost:5000/.well-known/openid-configuration,可以看到所有的文档。这将被您的客户端和API用于下载必要的配置数据。
相关文章推荐
- ASP.NET Core的身份认证框架IdentityServer4--(3)令牌服务配置访问控制跟UI添加
- ASP.NET Core的身份认证框架IdentityServer4--(2)API跟WEB端配置
- ASP.NET Core身份认证服务框架IdentityServer4(2)-整体介绍
- ASP.NET Core的身份认证框架IdentityServer4(1)-特性一览
- ASP.NET Core的身份认证框架IdentityServer4(9)-使用OpenID Connect添加用户认证
- ASP.NET Core的身份认证框架IdentityServer4(5)- 包和构建
- ASP.NET Core的身份认证框架IdentityServer4--(4)添加第三方快捷登录
- ASP.NET Core的身份认证框架IdentityServer4(8)- 使用密码认证方式控制API访问
- ASP.NET Core的身份认证框架IdentityServer4(6)- 开始
- ASP.NET Core的身份认证框架IdentityServer4(7)- 使用客户端证书控制API访问
- ASP.NET Core的身份认证框架IdentityServer4(3)-术语的解释
- ASP.NET Core的身份认证框架IdentityServer4(3)-术语的解释
- ASP.NET Core的身份认证框架IdentityServer4(7)- 使用客户端证书控制API访问
- ASP.NET Core的身份认证框架IdentityServer4(7)- 使用客户端证书控制API访问
- ASP.NET Core的身份认证框架IdentityServer4(4)- 支持的规范
- IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API
- IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API
- IdentityServer4 ASP.NET Core的OpenID Connect OAuth 2.0框架学习保护API
- (10)学习笔记 ) ASP.NET CORE微服务 Micro-Service ---- Ocelot+Identity Server
- 菜鸟入门【ASP.NET Core】6:配置的热更新、配置的框架设计