第18章 启动 - Identity Server 4 中文文档(v1.0.0)
IdentityServer是中间件和服务的组合。所有配置都在您的启动类中完成。
18.1 配置服务
您可以通过调用以下方法将IdentityServer服务添加到DI系统:
public void ConfigureServices(IServiceCollection services)
{
var builder = services.AddIdentityServer();
}
您可以选择将选项传入此调用。有关选项的详细信息,请参见此
这将返回一个构建器对象,该构建器对象又有许多方便的方法来连接其他服务。
18.2 密钥材料
AddSigningCredential
添加签名密钥服务,该服务为各种令牌创建/验证服务提供指定的密钥材料。您可以从证书存储中传入证书的X509Certificate2,SigningCredential或引用。AddDeveloperSigningCredential
在启动时创建临时密钥材料。当您没有要使用的证书时,这仅适用于dev。生成的密钥将保留到文件系统,以便在服务器重新启动之间保持稳定(可以通过传递禁用false)。这解决了客户端/api元数据缓存在开发期间不同步时的问题。AddValidationKey
添加用于验证令牌的密钥。它们将由内部令牌验证器使用,并将显示在发现文档中。您可以从证书存储中传入证书的 X509Certificate2,SigningCredential`或引用。这对于关键翻转场景非常有用。
18.3 内存配置存储
各种“内存中”配置API允许从内存中的配置对象列表配置IdentityServer。这些“内存中”集合可以在宿主应用程序中进行硬编码,也可以从配置文件或数据库动态加载。但是,通过设计,这些集合仅在托管应用程序启动时创建。
这些配置API的使用旨在用于原型设计,开发和/或测试时,在运行时不需要为配置数据动态查询数据库。如果配置很少更改,则此配置模板也可能适用于生产方案,或者如果必须更改值,则要求重新启动应用程序并不方便。
AddInMemoryClients
基于配置对象的内存中集合的注册IClientStore和ICorsPolicyService实现Client。AddInMemoryIdentityResources
IResourceStore根据IdentityResource配置对象的内存中集合注册实现。AddInMemoryApiResources
IResourceStore根据ApiResource配置对象的内存中集合注册实现。
18.4 测试商店
该TestUser是用户类,他们的凭据和声明在IdentityServer中。使用TestUser类似于“内存”存储的,因为它用于原型设计,开发或测试。TestUser在生产中不推荐使用。
AddTestUsers
TestUserStore基于TestUser对象集合的注册。TestUserStore由默认的快速入门UI使用。还注册实现IProfileService和IResourceOwnerPasswordValidator。
18.5 添加服务
AddExtensionGrantValidator
添加IExtensionGrantValidator实现以用于扩展授权。AddSecretParser
添加ISecretParser用于解析客户端或API资源凭据的实现。AddSecretValidator
添加ISecretValidator用于针对凭证存储验证客户端或API资源凭证的实现。AddResourceOwnerValidator
添加IResourceOwnerPasswordValidator用于验证资源所有者密码凭据授予类型的用户凭据的实现。AddProfileService
添加IProfileService用于连接到自定义用户配置文件存储的实现。的DefaultProfileService类提供了依赖于验证cookie作为权利要求中的用于在令牌发行的唯一来源的默认实现。AddAuthorizeInteractionResponseGenerator
添加IAuthorizeInteractionResponseGenerator实现以在授权端点处定制逻辑,以便在必须向用户显示错误,登录,同意或任何其他自定义页面的UI时。本AuthorizeInteractionResponseGenerator类提供了一个默认的实现,因此考虑从这个现有的类派生如果需要增强现有的行为。AddCustomAuthorizeRequestValidator
添加ICustomAuthorizeRequestValidator实现以在授权端点处自定义请求参数验证。AddCustomTokenRequestValidator
添加ICustomTokenRequestValidator实现以在令牌端点处自定义请求参数验证。AddRedirectUriValidator
添加IRedirectUriValidator实现以自定义重定向URI验证。AddAppAuthRedirectUriValidator
添加一个“AppAuth”(适用于Native Apps的OAuth 2.0)兼容的重定向URI验证器(进行严格验证,但也允许带有随机端口的http://127.0.0.1)。AddJwtBearerClientAuthentication
使用JWT承载断言添加对客户端身份验证的支持。
18.6 缓存
IdentityServer经常使用客户端和资源配置数据。如果从数据库或其他外部存储加载此数据,则频繁重新加载相同数据可能会很昂贵。
AddInMemoryCaching
要使用下面描述的任何缓存,ICache<T>必须在DI中注册实现。此API注册了ICache<T>基于ASP.NET Core的默认内存实现MemoryCache。AddClientStoreCache
注册一个IClientStore装饰器实现,它将维护Client配置对象的内存缓存。缓存持续时间可在``Caching配置选项上配置IdentityServerOptions。AddResourceStoreCache
注册一个IResourceStore装饰器实现,它将维护内存缓存IdentityResource和ApiResource配置对象。缓存持续时间可在Caching配置选项上配置IdentityServerOptions。AddCorsPolicyCache
注册ICorsPolicyService装饰器实现,该实现将维护CORS策略服务评估结果的内存缓存。缓存持续时间可在Caching配置选项上配置IdentityServerOptions。
可以进一步自定义缓存:
默认缓存依赖于ICache<T>实现。如果要自定义特定配置对象的缓存行为,可以在依赖项注入系统中替换此实现。
ICache<T>本身的默认实现依赖于.NET提供的IMemoryCache接口(和MemoryCache实现)。如果要自定义内存中缓存行为,可以替换IMemoryCache依赖项注入系统中的实现。
18.7 配置管道
您需要通过调用以下方法将IdentityServer添加到管道:
public void Configure(IApplicationBuilder app)
{
app.UseIdentityServer();
}
注意
UseIdentityServer包括UseAuthentication,所以没有必要同时使用。
中间件没有其他配置。
请注意,顺序在管道中很重要。例如,您需要在实现登录页面的UI框架之前添加IdentitySever。
第18章 启动 - Identity Server 4 中文文档(v1.0.0)的更多相关文章
- 第66章 视频 - Identity Server 4 中文文档(v1.0.0)
第66章 视频 66.1 2019 January [NDC] - 使用ASP.NET Core 2.2和3.0保护Web应用程序和API 1月[NDC] - 为基于OpenID Connect / ...
- 第41章 CORS - Identity Server 4 中文文档(v1.0.0)
第41章 CORS IdentityServer中的许多端点将通过基于JavaScript的客户端的Ajax调用进行访问.鉴于IdentityServer最有可能托管在与这些客户端不同的源上,这意味着 ...
- 第30章 部署 - Identity Server 4 中文文档(v1.0.0)
您的身份服务器只是一个标准的ASP.NET Core应用程序,包括IdentityServer中间件.首先阅读有关发布和部署的官方Microsoft 文档(尤其是有关负载平衡器和代理的部分). 30. ...
- 第24章 退出 - Identity Server 4 中文文档(v1.0.0)
注销IdentityServer就像删除身份验证cookie一样简单,但是为了完成联合注销,我们必须考虑将用户从客户端应用程序(甚至可能是上游身份提供者)中签名. 24.1 删除认证 要删除身份验证c ...
- 第21章 登录 - Identity Server 4 中文文档(v1.0.0)
为了使IdentityServer能够代表用户发出令牌,该用户必须登录IdentityServer. 21.1 Cookie身份验证 使用由ASP.NET Core中的cookie身份验证处理程序管理 ...
- 第7章 贡献 - Identity Server 4 中文文档(v1.0.0)
我们对社区贡献非常开放,但您应该遵循一些指导原则,以便我们可以毫不费力地处理这个问题. 7.1 如何贡献? 最简单的方法是打开一个问题并开始讨论.然后我们可以决定是否以及如何实现功能或更改.如果您应提 ...
- 第2章 术语 - Identity Server 4 中文文档(v1.0.0)
规范.文档和对象模型等都使用特定的术语来表述. 2.1 IdentityServer IdentityServer是OpenID Connect提供程序 - 它实现OpenID Connect和OAu ...
- 第64章 学习 - Identity Server 4 中文文档(v1.0.0)
以下是一些在线,远程和课堂培训选项,以了解有关ASP.NET Core Identity和IdentityServer4的更多信息. 64.1 现代应用程序的身份和访问控制(使用ASP.NET Cor ...
- 第56章 Client - Identity Server 4 中文文档(v1.0.0)
该Client模型的OpenID Connect或OAuth 2.0 客户端-例如,本地应用,Web应用程序或基于JS的应用程序. 56.1 Basics Enabled 指定是否启用客户端.默认为t ...
随机推荐
- 从C过渡到C++的几个知识点(结构体、引用、重载运算符)
一.结构体和类(class) 下面一个使用结构体类型的例子 #include <iostream> using namespace std; struct Point{ // 声明Poin ...
- Java_集合
定义: 是一种工具,就像是容器,能存储任意数量的具有共同属性的对象. 与数组比较优点: (1)数组定义后长度不可变,集合长度可变: (2)数组只能通过下标访问,且下标类型只能是数字型,而有的集合(ma ...
- spring-cloud-Zuul学习(二)【基础篇】--典型配置【重新定义spring cloud实践】
-- 2019-04-15 20:22:34 引言 上一节是一个最基本的zuul网关实例,它是整个spring-cloud生态里面“路由-服务”的一个缩影,后续也就是锦上添花.这节主要讲述zuul的一 ...
- Go语言基础之函数
Go语言基础之函数 函数是组织好的.可重复使用的.用于执行指定任务的代码块.本文介绍了Go语言中函数的相关内容. 函数 Go语言中支持函数.匿名函数和闭包,并且函数在Go语言中属于“一等公民”. 函数 ...
- JetBrains系列IDE快捷键大全(转载)
编辑 快捷键组合 说明 Ctrl + Space 代码自动完成提示(选择) Alt + Enter 显示意图动作和快速修复 Ctrl + P 参数信息 (在调用方法参数忘记的时候,提示) Ctrl + ...
- su;su -;sudo;sudo -i;sudo su;sudo su - 之间的区别
今天我们来聊聊su;su -;sudo;sudo -i;sudo su;sudo su -他们之间的区别. su :su 在不加任何参数,默认为切换到root用户,但没有转到root用户家目录下,也就 ...
- 神经网络_线性神经网络 3 (Nerual Network_Linear Nerual Network 3)
1 LMS 学习规则_解方程组 1.1 LMS学习规则举例 X1=[0 0 1]T,t1=0:X2=[1 0 1]T,t2=0:X3=[0 1 1]T,t3=0:X1=[1 1 1]T,t1=1. 设 ...
- Python-字典与json的转换
#json是字符串,只不过长得像字典 import json user_info='''{"niuhy":1234,"shanbl":44566}''' #js ...
- RAID部署
添加硬盘 1.创建一个RAID阵列卡 2.格式化刚刚做好的md0 3.创建挂载目录 4.自动挂载,永久生效 5.使用 创建RAID 1.创建一个RAID阵列卡 2.格式化 3.创建挂载目录 4.自动挂 ...
- ActiveMQ嵌入Tomcat
在一些项目中,单独开启一个ActiveMQ,对于项目实施来说有时略显繁琐.所以我们将ActiveMQ内嵌到Tomcat,Tomcat启动同时就顺带启动了ActiveMQ.由此我们需要掌握三个个重要的知 ...