官网文档地址:点我点我

项目实例源码地址

准备

创建一个名为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类,并添加以下代码:

/// <summary>
/// 定义api信息
/// </summary>
/// <returns></returns>
public static IEnumerable<ApiResource> GetApiResources()
{
return new List<ApiResource>
{
new ApiResource("api1", "My API")
};
}
psApiResource类为IdentityServer中的实体类,这里引用IdentityServer4.Models命名空间即可。

定义客户端

定义一个可以访问这个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())//添加api资源
.AddInMemoryClients(Config.GetClients());//添加客户端
}

运行项目并在浏览器中访问:http://localhost:5000/.well-known/openid-configuration,可以看到所有的文档。这将被您的客户端和API用于下载必要的配置数据。

  

ASP.NET Core的身份认证框架IdentityServer4--(1)服务配置的更多相关文章

  1. ASP.NET Core的身份认证框架IdentityServer4--(3)令牌服务配置访问控制跟UI添加

    使用密码保护API OAuth 2.0 资源所有者密码授权允许一个客户端发送用户名和密码到IdentityServer并获得一个表示该用户的可以用于访问api的Token. 该规范建议仅对" ...

  2. ASP.NET Core的身份认证框架IdentityServer4(7)- 使用客户端证书控制API访问

    前言 今天(2017-9-8,写于9.8,今天才发布)一口气连续把最后几篇IdentityServer4相关理论全部翻译完了,终于可以进入写代码的过程了,比较累.目前官方的文档和Demo以及一些相关组 ...

  3. ASP.NET Core的身份认证框架IdentityServer4(1)-特性一览

    IdentityServer4是ASP.NET Core的一个包含OpenID和OAuth 2.0协议的框架.OpenID和OAuth 的区别请看 https://www.zhihu.com/ques ...

  4. ASP.NET Core的身份认证框架IdentityServer4(6)- 开始

    安装和概述 启动一个新的IdentityServer项目有两种基本方法: 从头开始 从Visual Studio中的ASP.NET身份模板开始 如果从头开始,我们提供了一些文档.项目帮助和内存存储支持 ...

  5. ASP.NET Core的身份认证框架IdentityServer4(5)- 包和构建

    包和构建 IdentityServer有许多nuget包 IdentityServer4 nuget | github 包含IdentityServer核心对象模型,服务和中间件. 仅支持内存配置和用 ...

  6. ASP.NET Core的身份认证框架IdentityServer4(9)-使用OpenID Connect添加用户认证

    OpenID Connect OpenID Connect 1.0是OAuth 2.0协议之上的一个简单的身份层. 它允许客户端基于授权服务器执行的身份验证来验证最终用户的身份,以及以可互操作和类似R ...

  7. ASP.NET Core的身份认证框架IdentityServer4(3)-术语的解释

    IdentityServer4 术语 IdentityServer4的规范.文档和对象模型使用了一些你应该了解的术语. 身份认证服务器(IdentityServer) IdentityServer是一 ...

  8. ASP.NET Core的身份认证框架IdentityServer4(8)- 使用密码认证方式控制API访问

    前言 本文及IdentityServer这个系列使用的都是基于.net core 2.0的.上一篇博文在API项目中我使用了icrosoft.AspNetCore.Authentication.Jwt ...

  9. ASP.NET Core的身份认证框架IdentityServer4(4)- 支持的规范

    IdentityServer实现以下规范: OpenID Connect OpenID Connect Core 1.0 (spec) OpenID Connect Discovery 1.0 (sp ...

  10. ASP.NET Core的身份认证框架IdentityServer4--入门

    ASP.NET Core的身份认证框架IdentityServer4--入门 2018年08月11日 10:09:00 qq_42606051 阅读数 4002   https://blog.csdn ...

随机推荐

  1. Hyperledger Fabric Read-Write set semantics——读写集

    Read-Write set semantics(读写集) 本文讨论了关于读写集当前实现的细节. Transaction simulation and read-write set(事务模拟和读写集) ...

  2. mysql 查看索引使用情况

    show status like 'Handler_read%'; Handler_read_key  代表着一个行被索引值读取的次数,值很低表明索引不经常用到,增加索引对性能改善不高. Handle ...

  3. mysql-关联查询

    MySQL关联查询的三种写法: SELECT * FROM film JOIN film_actor ON (film.film_id = film_actor.film_id);SELECT * F ...

  4. 判断具有某个属性js、jQuery

    if(!rr.classList.contains('invalid')){ updateCount(i,-1);//更新tab数量 } /*if(!$(rr).hasClass('invalid') ...

  5. java8大基本数据类型

    基本类型 字节数 位数 最大值 最小值 byte 1byte 8bit 2^7 - 1 -2^7 short 2byte 16bit 2^15 - 1 -2^15 int 4byte 32bit 2^ ...

  6. java -cp用法

    原文出处:http://blog.csdn.net/zhuying_linux/article/details/7714194.感谢作者的分享 java -cp classpath Specify a ...

  7. maven插件本地化安装

    mvn install:install-file -Dfile="D:\maven\repository\com\tc\itfarm-api\1.0.0-SNAPSHOT\itfarm-ap ...

  8. 在Tomcat中采用基于表单的安全验证

    .概述   (1)基于表单的验证 基于From的安全认证可以通过TomcatServer对Form表单中所提供的数据进行验证,基于表单的验证使系统开发者可以自定义用户的登陆页面和报错页面.这种验证方法 ...

  9. SQL Server 2005的服务器角色(public)的问题

    SQL Server 默认会有9个服务器角色,而且这些角色是不能删除和新增.修改的.关于这些角色相关介绍和权限,请参考 其中有一个特殊的角色public,任何登录都会属于该角色,它只拥有的权限是VIE ...

  10. Redis的部署

    笔者Q:972581034 交流群:605799367 欢迎加群交流 官方网站 redis.io 下载 cd /usr/local/src wget http://download.redis.io/ ...